aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/program/aedifex/command/deps.lux
blob: bc4d88f6cb32e3ea4332905809b3f5b070c78ba7 (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
(.module:
  [lux #*
   [abstract
    [monad (#+ do)]]
   [control
    [concurrency
     ["." promise (#+ Promise)]]]
   [data
    [collection
     ["." set (#+ Set)]]]
   [world
    ["." file]]]
  ["." /// #_
   [command (#+ Command)]
   [artifact (#+ Artifact)]
   [repository (#+ Repository)]
   ["#" profile]
   ["#." action (#+ Action)]
   ["#." cache]
   ["#." dependency #_
    ["#/." resolution]]])

(def: #export (do! fs repositories profile)
  (-> (file.System Promise) (List (Repository Promise)) (Command (Set Artifact)))
  (do ///action.monad
    [#let [dependencies (set.to-list (get@ #///.dependencies profile))]
     cache (///cache.read-all fs dependencies ///dependency/resolution.empty)
     resolution (///dependency/resolution.all repositories dependencies cache)
     cached (///cache.write-all fs resolution)
     #let [_ (log! "Successfully resolved dependencies!")]]
    (wrap cached)))