(.module: [lux #* [abstract [monad (#+ do)]] [control [concurrency ["." promise (#+ Promise)]]] [data [collection ["." set (#+ Set)]]] [world [program (#+ Program)] ["." file] ["." console (#+ Console)]]] ["." // #_ ["#." clean] ["/#" // #_ [command (#+ Command)] [artifact (#+ Artifact)] [repository (#+ Repository)] ["#" profile] ["#." action (#+ Action)] ["#." cache] ["#." dependency #_ ["#/." resolution (#+ Resolution)]]]]) (def: #export (do! program console fs repositories profile) (-> (Program Promise) (Console Promise) (file.System Promise) (List (Repository Promise)) (Command Resolution)) (do ///action.monad [#let [dependencies (set.to_list (get@ #///.dependencies profile))] cache (///cache.read_all program fs dependencies ///dependency/resolution.empty) resolution (///dependency/resolution.all repositories dependencies cache) cached (///cache.write_all program fs resolution) _ (console.write_line //clean.success console)] (wrap resolution)))