From 69272f598d831e89da83bdc8c9290d5607dfb14d Mon Sep 17 00:00:00 2001 From: Eduardo Julian Date: Sat, 31 Oct 2020 20:26:37 -0400 Subject: Re-named the directory for my bookmarks to better reflect what they are. --- stdlib/source/program/aedifex/command/install.lux | 62 +++++++++++++++++++++++ stdlib/source/program/aedifex/local.lux | 18 ------- stdlib/source/program/aedifex/shell.lux | 19 ++++--- 3 files changed, 71 insertions(+), 28 deletions(-) create mode 100644 stdlib/source/program/aedifex/command/install.lux (limited to 'stdlib/source/program/aedifex') diff --git a/stdlib/source/program/aedifex/command/install.lux b/stdlib/source/program/aedifex/command/install.lux new file mode 100644 index 000000000..818283cc5 --- /dev/null +++ b/stdlib/source/program/aedifex/command/install.lux @@ -0,0 +1,62 @@ +(.module: + [lux #* + [abstract + [monad (#+ do)]] + [control + ["." try (#+ Try)] + ["." exception] + [concurrency + ["." promise (#+ Promise)]] + [security + ["!" capability]]] + [data + [binary (#+ Binary)] + [text + ["%" format (#+ format)] + ["." encoding]] + [collection + ["." set]] + [format + ["." binary] + ["." tar] + ["." xml]]] + [world + ["." file (#+ Path File)]]] + [program + [compositor + ["." export]]] + ["." /// #_ + ["/" profile (#+ Profile)] + ["#." action (#+ Action)] + ["#." command (#+ Command)] + ["#." local] + ["#." pom] + ["#." artifact (#+ Artifact) + ["#/." extension]]]) + +(def: (save! system content file) + (-> (file.System Promise) Binary Path (Promise (Try Any))) + (do (try.with promise.monad) + [file (: (Promise (Try (File Promise))) + (file.get-file promise.monad system file))] + (!.use (:: file over-write) [content]))) + +(def: #export (do! system profile) + (-> (file.System Promise) (Command Any)) + (case (get@ #/.identity profile) + (#.Some identity) + (do ///action.monad + [package (export.library system (set.to-list (get@ #/.sources profile))) + repository (: (Promise (Try Path)) + (file.make-directories promise.monad system (///local.path system identity))) + #let [artifact-name (format repository (:: system separator) (///artifact.identity identity))] + _ (..save! system (binary.run tar.writer package) + (format artifact-name ///artifact/extension.lux-library)) + pom (:: promise.monad wrap (///pom.write profile)) + _ (..save! system (|> pom (:: xml.codec encode) encoding.to-utf8) + (format artifact-name ///artifact/extension.pom)) + #let [_ (log! "Successfully installed locally!")]] + (wrap [])) + + _ + (:: promise.monad wrap (exception.throw /.no-identity [])))) diff --git a/stdlib/source/program/aedifex/local.lux b/stdlib/source/program/aedifex/local.lux index 7a4cf070e..3c06f0222 100644 --- a/stdlib/source/program/aedifex/local.lux +++ b/stdlib/source/program/aedifex/local.lux @@ -58,24 +58,6 @@ (file.get-file promise.monad system file))] (!.use (:: file over-write) [content]))) -(def: #export (install system profile) - (-> (file.System Promise) Profile (Promise (Try Any))) - (case (get@ #/.identity profile) - (#.Some identity) - (do (try.with promise.monad) - [repository (: (Promise (Try Path)) - (file.make-directories promise.monad system (..path system identity))) - #let [artifact-name (format repository (:: system separator) (//artifact.identity identity))] - package (export.library system (set.to-list (get@ #/.sources profile))) - _ (..save! system (binary.run tar.writer package) - (format artifact-name //artifact/extension.lux-library)) - pom (:: promise.monad wrap (//pom.write profile))] - (..save! system (|> pom (:: xml.codec encode) encoding.to-utf8) - (format artifact-name //artifact/extension.pom))) - - _ - (:: promise.monad wrap (exception.throw /.no-identity [])))) - (def: #export (cache system [artifact type] package) (-> (file.System Promise) Dependency Package (Promise (Try Any))) (do (try.with promise.monad) diff --git a/stdlib/source/program/aedifex/shell.lux b/stdlib/source/program/aedifex/shell.lux index 5ef30cf91..0215c08da 100644 --- a/stdlib/source/program/aedifex/shell.lux +++ b/stdlib/source/program/aedifex/shell.lux @@ -44,17 +44,16 @@ (#static getRuntime [] #io java/lang/Runtime) (exec [java/lang/String #? [java/lang/String] java/io/File] #io #try java/lang/Process)) -(exception: #export (failure-to-execute-command {working-directory Text} {command Text} {error Text}) - (exception.report - ["Working Directory" (%.text working-directory)] - ["Command" (%.text command)] - ["Error" (%.text error)])) +(template [] + [(exception: #export ( {working-directory Text} {command Text} {error Text}) + (exception.report + ["Working directory" (%.text working-directory)] + ["Command" (%.text command)] + ["Error" (%.text error)]))] -(exception: #export (failure-during-command-execution {working-directory Text} {command Text} {error Text}) - (exception.report - ["Working Directory" (%.text working-directory)] - ["Command" (%.text command)] - ["Error" (%.text error)])) + [failure-to-execute-command] + [failure-during-command-execution] + ) (exception: #export (abnormal-exit {working-directory Text} {command Text} {code Int}) (exception.report -- cgit v1.2.3