(.module: [library [lux "*" [abstract [monad {"+" do}]] [control [pipe {"+" do>}] ["[0]" try {"+" Try}] [concurrency ["[0]" async {"+" Async} ("[1]#[0]" monad)]] ["<>" parser ["<[0]>" xml]]] [data [binary {"+" Binary}] [text ["%" format {"+" format}] [encoding ["[0]" utf8]]] [collection ["[0]" set]] [format ["[0]" binary] ["[0]" tar] ["[0]" xml]]] [time ["[0]" instant {"+" Instant}]] [world ["[0]" file] ["[0]" console {"+" Console}]]]] [program [compositor ["[0]" export]]] ["[0]" // "_" ["[1][0]" clean] ["/[1]" // "_" [command {"+" Command}] ["/" profile] ["[1][0]" action {"+" Action}] ["[1][0]" pom] ["[1][0]" hash] ["[1][0]" package] ["[1][0]" dependency ["[1]/[0]" deployment] ["[1]/[0]" status {"+" Status}]] ["[1][0]" repository {"+" Repository} [identity {"+" Identity}] ["[1]/[0]" remote] ["[1]/[0]" origin]] ["[1][0]" metadata ["[1]/[0]" artifact] ["[1]/[0]" snapshot]] ["[1][0]" artifact {"+" Artifact} ["[1]/[0]" extension {"+" Extension}] ["[1]/[0]" type]]]]) (def: .public success "Successfully deployed the project.") (def: .public (do! console repository fs artifact profile) (-> (Console Async) (Repository Async) (file.System Async) Artifact (Command Any)) (do [! ///action.monad] [library (|> profile (value@ /.#sources) set.list (export.library fs) (# ! each (binary.result tar.writer))) pom (# async.monad in (///pom.write profile)) _ (///dependency/deployment.one repository [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)]]))] (console.write_line ..success console)))