aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/program/aedifex/command/deps.lux
diff options
context:
space:
mode:
authorEduardo Julian2021-02-07 04:56:58 -0400
committerEduardo Julian2021-02-07 04:56:58 -0400
commitd99c47989a1047cd24019fd5ce434e701b5d3519 (patch)
tree19bfb0f5e4713e5dcd0c71bbd7b88d09d75dfe5d /stdlib/source/program/aedifex/command/deps.lux
parent571d816dfd0b056a1649f5057867abbfa4421f5d (diff)
Mo' updates, less problems.
Diffstat (limited to 'stdlib/source/program/aedifex/command/deps.lux')
-rw-r--r--stdlib/source/program/aedifex/command/deps.lux42
1 files changed, 31 insertions, 11 deletions
diff --git a/stdlib/source/program/aedifex/command/deps.lux b/stdlib/source/program/aedifex/command/deps.lux
index 71dffeec1..14b5d803f 100644
--- a/stdlib/source/program/aedifex/command/deps.lux
+++ b/stdlib/source/program/aedifex/command/deps.lux
@@ -3,13 +3,16 @@
[abstract
[monad (#+ do)]]
[control
+ ["." exception]
[concurrency
["." promise (#+ Promise)]]]
[data
[collection
["." set (#+ Set)]
["." list ("#\." fold)]
- ["." dictionary]]]
+ ["." dictionary]]
+ [text
+ ["%" format (#+ format)]]]
[world
[program (#+ Program)]
["." file]
@@ -18,22 +21,39 @@
["#." clean]
["/#" // #_
[command (#+ Command)]
- [artifact (#+ Artifact)]
[repository (#+ Repository)]
["#" profile]
["#." action (#+ Action)]
- ["#." dependency #_
+ ["#." artifact (#+ Artifact)]
+ ["#." dependency (#+ Dependency)
["#/." resolution (#+ Resolution)]
["#/." deployment]]]])
+(def: %dependency
+ (%.Format Dependency)
+ (|>> (get@ #///dependency.artifact)
+ ///artifact.format
+ %.text))
+
(def: #export (do! console local remotes profile)
(-> (Console Promise) (Repository Promise) (List (Repository Promise)) (Command Resolution))
- (do ///action.monad
+ (do promise.monad
[#let [dependencies (set.to_list (get@ #///.dependencies profile))]
- cache (///dependency/resolution.all (list local) dependencies ///dependency/resolution.empty)
- resolution (///dependency/resolution.all remotes dependencies cache)
- cached (|> (dictionary.keys cache)
- (list\fold dictionary.remove resolution)
- (///dependency/deployment.all local))
- _ (console.write_line //clean.success console)]
- (wrap resolution)))
+ [local_successes local_failures cache] (///dependency/resolution.all (list local) dependencies ///dependency/resolution.empty)
+ [remote_successes remote_failures resolution] (///dependency/resolution.all remotes dependencies cache)]
+ (do ///action.monad
+ [cached (|> (dictionary.keys cache)
+ (list\fold dictionary.remove resolution)
+ (///dependency/deployment.all local))
+ _ (console.write_line //clean.success console)
+ _ (console.write_line (exception.report
+ ["Local successes" (exception.enumerate %dependency local_successes)]
+ ["Local failures" (exception.enumerate %dependency local_failures)]
+ ["Remote successes" (let [remote_successes (|> remote_successes
+ (set.from_list ///dependency.hash)
+ (set.difference (set.from_list ///dependency.hash local_successes))
+ set.to_list)]
+ (exception.enumerate %dependency remote_successes))]
+ ["Remote failures" (exception.enumerate %dependency remote_failures)])
+ console)]
+ (wrap resolution))))