aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/program/aedifex/command/deploy/snapshot.lux
blob: fa69e831100c90a395c9ca2d0ed4f61b91628a61 (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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
(.using
 [library
  [lux "*"
   [abstract
    [monad {"+" do}]
    [predicate {"+" Predicate}]]
   [control
    [concurrency
     ["[0]" async {"+" Async}]]]
   [data
    ["[0]" text
     [encoding
      ["[0]" utf8]]]
    [collection
     ["[0]" set]]
    [format
     ["[0]" binary]
     ["[0]" tar]
     ["[0]" xml]]]
   [tool
    [compiler
     [meta
      ["[0]" export]]]]
   [world
    [console {"+" Console}]
    ["[0]" file]]]]
 ["[0]" //// "_"
  [command {"+" Command}]
  ["/" profile]
  ["[1][0]" action]
  ["[1][0]" pom]
  ["[1][0]" package]
  ["[1][0]" dependency "_"
   ["[1]/[0]" deployment]
   ["[1]/[0]" status]]
  ["[1][0]" repository {"+" Repository}
   ["[1]/[0]" origin]]
  ["[1][0]" artifact {"+" Artifact}
   ["[1]/[0]" type]]])

(def: .public snapshot?
  (Predicate Artifact)
  (|>> (the ////artifact.#version)
       (text.contains? "-SNAPSHOT")))

(def: .public (do! console remote fs artifact profile)
  (-> (Console Async) (Repository Async) (file.System Async) Artifact (Command Any))
  (do [! ////action.monad]
    [library (|> profile
                 (the /.#sources)
                 set.list
                 (export.library fs)
                 (# ! each (binary.result tar.writer)))
     pom (# async.monad in (////pom.write profile))
     _ (////dependency/deployment.one
        remote
        [artifact ////artifact/type.lux_library]
        (let [pom_data (|> pom
                           (# xml.codec encoded)
                           (# utf8.codec encoded))]
          [////package.#origin {////repository/origin.#Remote ""}
           ////package.#library [library
                                 (////dependency/status.verified library)]
           ////package.#pom [pom
                             pom_data
                             (////dependency/status.verified pom_data)]]))]
    (in [])))