Skip to content

Commit

Permalink
Try to find workspace if not provided
Browse files Browse the repository at this point in the history
  • Loading branch information
pchalamet committed Apr 26, 2024
1 parent fb07128 commit 106d93f
Showing 1 changed file with 22 additions and 3 deletions.
25 changes: 22 additions & 3 deletions src/Terrabuild/Program.fs
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,14 @@ type TerrabuildExiter() =

let launchDir = Environment.CurrentDirectory

let rec findWorkspace dir =
if FS.combinePath dir "WORKSPACE" |> IO.exists then
Some dir
else
match FS.parentDirectory dir with
| null -> None
| parentDir -> findWorkspace parentDir

let processCommandLine (parser: ArgumentParser<TerrabuildArgs>) (result: ParseResults<TerrabuildArgs>) =
let debug = result.Contains(TerrabuildArgs.Debug)
let whatIf = result.Contains(TerrabuildArgs.WhatIf)
Expand Down Expand Up @@ -112,7 +120,13 @@ let processCommandLine (parser: ArgumentParser<TerrabuildArgs>) (result: ParseRe
0

let targetShortcut target (buildArgs: ParseResults<RunArgs>) =
let wsDir = buildArgs.GetResult(RunArgs.Workspace, defaultValue = ".")
let wsDir =
match buildArgs.TryGetResult(RunArgs.Workspace) with
| Some ws -> ws
| _ ->
match Environment.CurrentDirectory |> findWorkspace with
| Some ws -> ws
| _ -> TerrabuildException.Raise "Can't find workspace root directory. Check you are in a workspace."
let environment = buildArgs.TryGetResult(RunArgs.Environment) |> Option.defaultValue "default" |> String.toLower
let labels = buildArgs.TryGetResult(RunArgs.Label) |> Option.map (fun labels -> labels |> Seq.map String.toLower |> Set)
let variables = buildArgs.GetResults(RunArgs.Variable) |> Seq.map (fun (k, v) -> k |> String.toLower, (Expr.String v)) |> Map
Expand All @@ -125,10 +139,15 @@ let processCommandLine (parser: ArgumentParser<TerrabuildArgs>) (result: ParseRe
Configuration.Options.StartedAt = DateTime.UtcNow }
runTarget wsDir (Set.singleton target) environment labels variables options


let target (targetArgs: ParseResults<TargetArgs>) =
let targets = targetArgs.GetResult(TargetArgs.Target) |> Seq.map String.toLower
let wsDir = targetArgs.GetResult(TargetArgs.Workspace, defaultValue = ".")
let wsDir =
match targetArgs.TryGetResult(TargetArgs.Workspace) with
| Some ws -> ws
| _ ->
match Environment.CurrentDirectory |> findWorkspace with
| Some ws -> ws
| _ -> TerrabuildException.Raise "Can't find workspace root directory. Check you are in a workspace."
let environment = targetArgs.TryGetResult(TargetArgs.Environment) |> Option.defaultValue "default" |> String.toLower
let labels = targetArgs.TryGetResult(TargetArgs.Label) |> Option.map (fun labels -> labels |> Seq.map String.toLower |> Set)
let variables = targetArgs.GetResults(TargetArgs.Variable) |> Seq.map (fun (k, v) -> k |> String.toLower, (Expr.String v)) |> Map
Expand Down

0 comments on commit 106d93f

Please sign in to comment.