blob: a05dee43003322493b8b7d041e3ce1a524dd78c8 (
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
(.module:
[lux (#- Name)
[abstract
[monad (#+ do)]]
[control
[pipe (#+ do>)]
["." io (#+ IO)]
["." try (#+ Try)]
["." exception (#+ exception:)]
[parser
["." cli (#+ program:)]
["<c>" code]]
[security
["!" capability]]
[concurrency
["." promise (#+ Promise) ("#@." monad)]]]
[data
[binary (#+ Binary)]
["." text
["%" format (#+ format)]
["." encoding]]
[format
["." xml]]
[collection
["." set]
["." dictionary (#+ Dictionary)]]]
[tool
[compiler
[language
[lux
["." syntax]]]]]
[world
["." file (#+ Path)]]]
["." / #_
["#" profile]
["#." action (#+ Action)]
["#." project (#+ Project)]
["#." input]
["#." parser]
["#." pom]
["#." cli]
["#." cache]
["#." repository (#+ Address)]
["#." dependency #_
["#" resolution]]
["#." command (#+ Command)
["#/." clean]
["#/." pom]
["#/." install]
["#/." deps]
["#/." build]
["#/." test]
["#/." auto]
["#/." deploy]]])
(def: (with-dependencies command profile)
(All [a] (-> (Command a) (Command a)))
(do /action.monad
[_ (/command/deps.do! profile)]
(command profile)))
(exception: (cannot-find-repository {repository Text}
{options (Dictionary Text Address)})
(exception.report
["Repository" (%.text repository)]
["Options" (exception.enumerate (function (_ [name repo])
(format (%.text name) " := " (%.text repo)))
(dictionary.entries options))]))
(program: [{[profile operation] /cli.command}]
(do {! io.monad}
[?profile (/input.read io.monad file.default profile)]
(case ?profile
(#try.Success profile)
(case operation
#/cli.Clean
(exec (/command/clean.do! (file.async file.default) profile)
(wrap []))
#/cli.POM
(exec (/command/pom.do! (file.async file.default) profile)
(wrap []))
#/cli.Install
(exec (/command/install.do! (file.async file.default) profile)
(wrap []))
(#/cli.Deploy repository identity)
(exec (case [(get@ #/.identity profile)
(dictionary.get repository (get@ #/.deploy-repositories profile))]
[(#.Some artifact) (#.Some repository)]
(/command/deploy.do! (/repository.async (/repository.remote repository))
(file.async file.default)
identity
artifact
profile)
[#.None _]
(promise@wrap (exception.throw /.no-identity []))
[_ #.None]
(promise@wrap (exception.throw ..cannot-find-repository [repository (get@ #/.deploy-repositories profile)])))
(wrap []))
#/cli.Dependencies
(exec (/command/deps.do! profile)
(wrap []))
(#/cli.Compilation compilation)
(case compilation
#/cli.Build (exec (..with-dependencies /command/build.do! profile)
(wrap []))
#/cli.Test (exec (..with-dependencies /command/test.do! profile)
(wrap [])))
(#/cli.Auto auto)
(exec (case auto
#/cli.Build (..with-dependencies (/command/auto.do! /command/build.do!) profile)
#/cli.Test (..with-dependencies (/command/auto.do! /command/test.do!) profile))
(wrap [])))
(#try.Failure error)
(wrap (log! error)))))
|