blob: dd58ff0840bb66573f937890994832593da52eae (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
namespace SomhairlesDream.Cli
open System
open System.IO
open SomhairlesDream.Modeling
module Program =
let private bridgeFailure (message: string) =
message.StartsWith("blender bridge:", StringComparison.OrdinalIgnoreCase)
let private run options =
let bridge = BlenderProcessBridge(options.Python, options.StageRoot) :> IArtifactBridge
let pipelineOptions : PipelineOptions =
{ ArtifactRoot = options.OutputRoot
Ids = options.Ids
Steps = if options.Design = "probe" then Design.probeSteps else Design.steps
Render = options.Render
Bridge = bridge
Clock = fun () -> DateTimeOffset.UtcNow
OnEvent = ignore }
match Pipeline.run pipelineOptions with
| Ok _ ->
let manifestPath = Path.Combine(options.OutputRoot, options.Ids.ProjectId, options.Ids.RunId, "manifest.json")
printfn "%s" (Path.GetFullPath(manifestPath))
0
| Error message ->
eprintfn "%s" message
if bridgeFailure message then 3 else 4
let private verify path =
match ArtifactVerifier.verify path with
| Ok _ ->
printfn "%s" (Path.GetFullPath(path))
0
| Error message ->
eprintfn "%s" message
4
[<EntryPoint>]
let main argv =
match Arguments.parse argv with
| Ok Help ->
printfn "%s" Arguments.usage
0
| Ok(Run options) -> run options
| Ok(Verify path) -> verify path
| Error message ->
eprintfn "%s" message
eprintfn "%s" Arguments.usage
2
|