build/scripts/Program.fs (37 lines of code) (raw):
module Program
open System
open Argu
open Bullseye
open ProcNet
open CommandLine
[<EntryPoint>]
let main argv =
let parser = ArgumentParser.Create<Arguments>(programName = "./build.sh")
let parsed =
try
let parsed = parser.ParseCommandLine(inputs = argv, raiseOnUsage = true)
let arguments = parsed.GetSubCommand()
Some(parsed, arguments)
with e ->
printfn "%s" e.Message
None
match parsed with
| None -> 2
| Some (parsed, arguments) ->
let target = arguments.Name
Targets.Setup parsed arguments
let swallowTypes = [ typeof<ProcExecException>; typeof<ExceptionExiter> ]
// temp fix for unit reporting: https://github.com/elastic/apm-pipeline-library/issues/2063
let exitCode =
try
try
Targets.RunTargetsWithoutExiting([ target ], (fun e -> swallowTypes |> List.contains (e.GetType())), ":")
0
with
| :? InvalidUsageException as ex ->
Console.WriteLine ex.Message
2
| :? TargetFailedException as ex -> 1
finally
Targets.teardown()
exitCode