(.module: [library [lux #* [abstract [monad (#+ do)]] [control ["." try (#+ Try)] ["." exception] [concurrency ["." async (#+ Async)]]] [data [binary (#+ Binary)] [text [encoding ["." utf8]]] [collection ["." set]] [format ["." binary] ["." tar] ["." xml]]] [world [program (#+ Program)] ["." file] ["." console (#+ Console)]]]] [program [compositor ["." export]]] ["." // #_ ["#." clean] ["/#" // #_ ["/" profile (#+ Profile)] ["#." action (#+ Action)] ["#." command (#+ Command)] ["#." local] ["#." pom] ["#." package] [repository (#+ Repository) ["#." origin]] ["#." dependency #_ ["#/." deployment] ["#/." status]] ["#." artifact (#+ Artifact) ["#/." type]]]]) (def: .public success "Successfully installed the project locally.") (def: .public failure "Failure: No 'identity' defined for the project.") (def: .public (do! console fs repository profile) (-> (Console Async) (file.System Async) (Repository Async) (Command Any)) (case (value@ #/.identity profile) (#.Some identity) (do ///action.monad [package (|> profile (value@ #/.sources) set.list (export.library fs)) pom (|> profile ///pom.write (\ async.monad in)) _ (///dependency/deployment.one repository [identity ///artifact/type.lux_library] (let [pom_data (|> pom (\ xml.codec encoded) (\ utf8.codec encoded))] [#///package.origin (#///origin.Local "") #///package.library (let [library (binary.result tar.writer package)] [library (///dependency/status.verified library)]) #///package.pom [pom pom_data (///dependency/status.verified pom_data)]]))] (console.write_line ..success console)) _ (console.write_line ..failure console)))