aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/program/aedifex/command/pom.lux
blob: cf07ad0e063482a9ef1559380e8e963708f5e3a0 (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
(.module:
  [lux #*
   [abstract
    [monad (#+ do)]]
   [control
    ["." try (#+ Try)]
    [security
     ["!" capability]]
    [concurrency
     ["." promise (#+ Promise) ("#\." monad)]]]
   [data
    ["." text
     ["%" format (#+ format)]
     ["." encoding]]
    [format
     ["." xml]]]
   [world
    ["." file (#+ Path File)]
    ["." console (#+ Console)]]]
  ["." // #_
   ["#." clean]
   ["/#" // #_
    [command (#+ Command)]
    ["#." action (#+ Action)]
    ["#." pom]]])

(def: #export (do! console fs profile)
  (-> (Console Promise) (file.System Promise) (Command Path))
  (do ///action.monad
    [pom (promise\wrap (///pom.write profile))
     file (: (Promise (Try (File Promise)))
             (file.get-file promise.monad fs ///pom.file))
     outcome (|> pom
                 (\ xml.codec encode)
                 encoding.to-utf8
                 (!.use (\ file over-write)))
     _ (console.write-line //clean.success console)]
    (wrap ///pom.file)))