(.module: [lux #* [abstract [monad (#+ do)]] [control [concurrency ["." promise (#+ Promise)]]] [data [collection ["." set (#+ Set)] ["." list ("#\." fold)] ["." dictionary]]] [world [program (#+ Program)] ["." file] ["." console (#+ Console)]]] ["." // #_ ["#." clean] ["/#" // #_ [command (#+ Command)] [artifact (#+ Artifact)] [repository (#+ Repository)] ["#" profile] ["#." action (#+ Action)] ["#." dependency #_ ["#/." resolution (#+ Resolution)] ["#/." deployment]]]]) (def: #export (do! console local remotes profile) (-> (Console Promise) (Repository Promise) (List (Repository Promise)) (Command Resolution)) (do ///action.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)))