Files
woofworkflows-poc/WoofWorkflows/Program.fs
Smaug123 00a360a2dc Format
2023-12-22 12:38:35 +00:00

71 lines
2.5 KiB
Forth

namespace WoofWorkflows
open System.IO
module Program =
let foo () =
pipeline (Comp.make "some-image") {
workingDir (Comp.make (DirectoryInfo "code root here"))
labelled "label 1"
withEnv ("foo", Comp.make "bar")
withEnv ("hi", Comp.make "bye")
let! (Stdout stdout) = "sh script here"
do!
pipelineSameAgent {
withEnv ("foo", stdout)
do! "git config --foo"
return ()
}
do!
pipeline (Comp.make "another-image") {
labelled "label 2"
let! (Stdout stdout) = "maybe run a formatter"
return ()
}
do! "a shell script"
let! (Stdout stdout) = "another shell script"
return ()
}
let foo2 () =
let pl =
Pipeline.bindShellScript
"sh script here"
(fun (Stdout stdout) ->
Pipeline.concat
[
let modifier = PipelineModifier.empty None |> PipelineModifier.withEnv "foo" stdout
let pl = Pipeline.empty |> Pipeline.prependShellScript "git config --foo"
yield pl, modifier
let modifier =
PipelineModifier.empty (Some (Comp.make "another-image"))
|> PipelineModifier.addLabel "label 2"
let pl = Pipeline.bindShellScript "maybe run a formatter" (fun _ -> Pipeline.empty)
yield pl, modifier
let modifier = PipelineModifier.empty None
let pl = Pipeline.prependShellScript "a shell script" Pipeline.empty
yield pl, modifier
]
(Pipeline.bindShellScript "another shell script" (fun (Stdout stdout) -> Pipeline.empty))
)
let modifier =
PipelineModifier.empty (Some (Comp.make "some-image"))
|> PipelineModifier.replaceWorkingDir (Comp.make (DirectoryInfo "code root here"))
|> PipelineModifier.addLabel "label 1"
|> PipelineModifier.withEnv "foo" (Comp.make "bar")
|> PipelineModifier.withEnv "hi" (Comp.make "bye")
pl, modifier
[<EntryPoint>]
let main argv =
foo2 () |> Pipeline.toStepDag |> ignore
0