aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/program/aedifex/command/deps.lux
blob: 315c6375cf261096bbca564c24305f8d06ab8b59 (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
(.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)))