(.using [library [lux "*" [abstract [monad {"+" do}]] [control ["[0]" try {"+" Try}] ["[0]" exception] [concurrency ["[0]" async {"+" Async}]]] [data [binary {"+" Binary}] [text [encoding ["[0]" utf8]]] [collection ["[0]" set]] [format ["[0]" binary] ["[0]" tar] ["[0]" xml]]] [tool [compiler [meta ["[0]" export]]]] [world [program {"+" Program}] ["[0]" file] ["[0]" console {"+" Console}]]]] ["[0]" // "_" ["[1][0]" clean] ["/[1]" // "_" ["/" profile {"+" Profile}] ["[1][0]" action {"+" Action}] ["[1][0]" command {"+" Command}] ["[1][0]" local] ["[1][0]" pom] ["[1][0]" package] [repository {"+" Repository} ["[1][0]" origin]] ["[1][0]" dependency "_" ["[1]/[0]" deployment] ["[1]/[0]" status]] ["[1][0]" artifact {"+" Artifact} ["[1]/[0]" 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)))