aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/program/aedifex/command/pom.lux
blob: 00427ee395de7f28a91b4a53241e96f65b7202a4 (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
    ["." try ("#\." functor)]
    [concurrency
     ["." promise (#+ Promise) ("#\." monad)]]]
   [data
    [text
     ["%" format (#+ format)]
     [encoding
      ["." utf8]]]
    [format
     ["." xml]]]
   [world
    ["." file]
    ["." console (#+ Console)]]]
  ["." /// #_
   [command (#+ Command)]
   ["#." action]
   ["#." pom]])

(def: #export success
  (format "Successfully created POM file: " ///pom.file))

(def: #export (do! console fs profile)
  (-> (Console Promise) (file.System Promise) (Command Any))
  (do ///action.monad
    [content (|> (///pom.write profile)
                 (try\map (|>> (\ xml.codec encode)
                               (\ utf8.codec encode)))
                 promise\wrap)
     _ (\ fs write content ///pom.file)]
    (console.write_line ..success console)))