aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/program
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/program')
-rw-r--r--stdlib/source/program/aedifex/artifact/snapshot.lux2
-rw-r--r--stdlib/source/program/aedifex/artifact/time/date.lux2
-rw-r--r--stdlib/source/program/aedifex/cli.lux2
-rw-r--r--stdlib/source/program/aedifex/command/clean.lux29
-rw-r--r--stdlib/source/program/aedifex/dependency/status.lux2
-rw-r--r--stdlib/source/program/aedifex/hash.lux4
-rw-r--r--stdlib/source/program/aedifex/profile.lux4
-rw-r--r--stdlib/source/program/aedifex/project.lux2
-rw-r--r--stdlib/source/program/aedifex/repository.lux8
-rw-r--r--stdlib/source/program/aedifex/repository/local.lux2
-rw-r--r--stdlib/source/program/aedifex/repository/remote.lux31
-rw-r--r--stdlib/source/program/scriptum.lux18
12 files changed, 57 insertions, 49 deletions
diff --git a/stdlib/source/program/aedifex/artifact/snapshot.lux b/stdlib/source/program/aedifex/artifact/snapshot.lux
index 0488d76dd..836365fed 100644
--- a/stdlib/source/program/aedifex/artifact/snapshot.lux
+++ b/stdlib/source/program/aedifex/artifact/snapshot.lux
@@ -18,7 +18,7 @@
#Local
(#Remote Stamp))
-(structure: any_equivalence
+(implementation: any_equivalence
(Equivalence Any)
(def: (= _ _)
diff --git a/stdlib/source/program/aedifex/artifact/time/date.lux b/stdlib/source/program/aedifex/artifact/time/date.lux
index 989abb5fc..655b8f6c2 100644
--- a/stdlib/source/program/aedifex/artifact/time/date.lux
+++ b/stdlib/source/program/aedifex/artifact/time/date.lux
@@ -56,7 +56,7 @@
(-> Date date.Date)
(|>> :representation))
- (structure: #export equivalence
+ (implementation: #export equivalence
(Equivalence Date)
(def: (= reference subject)
diff --git a/stdlib/source/program/aedifex/cli.lux b/stdlib/source/program/aedifex/cli.lux
index f2f502bac..0c943efc9 100644
--- a/stdlib/source/program/aedifex/cli.lux
+++ b/stdlib/source/program/aedifex/cli.lux
@@ -18,7 +18,7 @@
#Build
#Test)
-(structure: any_equivalence
+(implementation: any_equivalence
(Equivalence Any)
(def: (= reference subject)
diff --git a/stdlib/source/program/aedifex/command/clean.lux b/stdlib/source/program/aedifex/command/clean.lux
index ecb71b59d..b966fe85e 100644
--- a/stdlib/source/program/aedifex/command/clean.lux
+++ b/stdlib/source/program/aedifex/command/clean.lux
@@ -4,6 +4,7 @@
["." monad (#+ do)]]
[control
["." try (#+ Try)]
+ ["." exception]
[security
["!" capability]]
[concurrency
@@ -35,15 +36,23 @@
(def: #export (do! console fs profile)
(-> (Console Promise) (file.System Promise) (Command Any))
- (do {! ///action.monad}
+ (do promise.monad
[#let [target (get@ #///.target profile)]
root (: (Promise (Try (Directory Promise)))
- (!.use (\ fs directory) target))
- _ (loop [root root]
- (do !
- [_ (..clean_files! root)
- subs (: (Promise (Try (List (Directory Promise))))
- (!.use (\ root directories) []))
- _ (monad.map ! recur subs)]
- (!.use (\ root discard) [])))]
- (console.write_line (..success target) console)))
+ (!.use (\ fs directory) target))]
+ (case root
+ (#try.Success root)
+ (do {! ///action.monad}
+ [_ (loop [root root]
+ (do !
+ [_ (..clean_files! root)
+ subs (: (Promise (Try (List (Directory Promise))))
+ (!.use (\ root directories) []))
+ _ (monad.map ! recur subs)]
+ (!.use (\ root discard) [])))]
+ (console.write_line (..success target) console))
+
+ (#try.Failure error)
+ (if (exception.match? file.cannot_find_directory error)
+ (console.write_line (..success target) console)
+ (\ promise.monad wrap (#try.Failure error))))))
diff --git a/stdlib/source/program/aedifex/dependency/status.lux b/stdlib/source/program/aedifex/dependency/status.lux
index 82d99e9aa..8c4db9ddd 100644
--- a/stdlib/source/program/aedifex/dependency/status.lux
+++ b/stdlib/source/program/aedifex/dependency/status.lux
@@ -15,7 +15,7 @@
(Hash MD5)))
(#Verified (Hash SHA-1) (Hash MD5)))
-(structure: any_equivalence
+(implementation: any_equivalence
(Equivalence Any)
(def: (= _ _)
diff --git a/stdlib/source/program/aedifex/hash.lux b/stdlib/source/program/aedifex/hash.lux
index b94e2a0cf..2e0e35db0 100644
--- a/stdlib/source/program/aedifex/hash.lux
+++ b/stdlib/source/program/aedifex/hash.lux
@@ -145,7 +145,7 @@
(exception.throw ..not_a_hash [(..encoding_size size) encoded]))))
(template [<codec> <hash> <nat> <constructor>]
- [(structure: #export <codec>
+ [(implementation: #export <codec>
(Codec Text (Hash <hash>))
(def: encode (|>> :representation ..encode))
@@ -155,7 +155,7 @@
[md5_codec MD5 ..md5::size ..as_md5]
)
- (structure: #export equivalence
+ (implementation: #export equivalence
(All [h] (Equivalence (Hash h)))
(def: (= reference subject)
diff --git a/stdlib/source/program/aedifex/profile.lux b/stdlib/source/program/aedifex/profile.lux
index 98eb1c43e..eb686cc15 100644
--- a/stdlib/source/program/aedifex/profile.lux
+++ b/stdlib/source/program/aedifex/profile.lux
@@ -31,7 +31,7 @@
#Repo
#Manual)
-(structure: distribution_equivalence
+(implementation: distribution_equivalence
(Equivalence Distribution)
(def: (= reference subject)
@@ -179,7 +179,7 @@
## #deploy_repositories
(dictionary.equivalence text.equivalence)))
-(structure: #export monoid
+(implementation: #export monoid
(Monoid Profile)
(def: identity
diff --git a/stdlib/source/program/aedifex/project.lux b/stdlib/source/program/aedifex/project.lux
index 5dce87e0a..a35a3651c 100644
--- a/stdlib/source/program/aedifex/project.lux
+++ b/stdlib/source/program/aedifex/project.lux
@@ -31,7 +31,7 @@
(Equivalence Project)
(dictionary.equivalence //.equivalence))
-(structure: #export monoid
+(implementation: #export monoid
(Monoid Project)
(def: identity
diff --git a/stdlib/source/program/aedifex/repository.lux b/stdlib/source/program/aedifex/repository.lux
index 230888cef..c5f822633 100644
--- a/stdlib/source/program/aedifex/repository.lux
+++ b/stdlib/source/program/aedifex/repository.lux
@@ -14,7 +14,7 @@
[net
[uri (#+ URI)]]]])
-(signature: #export (Repository !)
+(interface: #export (Repository !)
(: (-> URI (! (Try Binary)))
download)
(: (-> URI Binary (! (Try Any)))
@@ -22,7 +22,7 @@
(def: #export (async repository)
(-> (Repository IO) (Repository Promise))
- (structure
+ (implementation
(def: (download uri)
(promise.future (\ repository download uri)))
@@ -30,7 +30,7 @@
(promise.future (\ repository upload uri content)))
))
-(signature: #export (Simulation s)
+(interface: #export (Simulation s)
(: (-> URI s (Try [s Binary]))
on_download)
(: (-> URI Binary s (Try s))
@@ -39,7 +39,7 @@
(def: #export (mock simulation init)
(All [s] (-> (Simulation s) s (Repository Promise)))
(let [state (stm.var init)]
- (structure
+ (implementation
(def: (download uri)
(stm.commit
(do {! stm.monad}
diff --git a/stdlib/source/program/aedifex/repository/local.lux b/stdlib/source/program/aedifex/repository/local.lux
index d026559c9..2841bbd32 100644
--- a/stdlib/source/program/aedifex/repository/local.lux
+++ b/stdlib/source/program/aedifex/repository/local.lux
@@ -48,7 +48,7 @@
(: (Promise (Try (File Promise)))
(!.use (\ system file) absolute_path)))))
-(structure: #export (repository program system)
+(implementation: #export (repository program system)
(-> (Program Promise) (file.System Promise) (//.Repository Promise))
(def: (download uri)
diff --git a/stdlib/source/program/aedifex/repository/remote.lux b/stdlib/source/program/aedifex/repository/remote.lux
index eb285bb67..dcf1e1d51 100644
--- a/stdlib/source/program/aedifex/repository/remote.lux
+++ b/stdlib/source/program/aedifex/repository/remote.lux
@@ -80,12 +80,12 @@
(format (///artifact.uri version_template artifact) extension))
(def: buffer_size
- (n.* 512 1,024))
+ (n.* 1,024 1,024))
(def: user_agent
(format "LuxAedifex/" (version.format language/lux.version)))
-(structure: #export (repository identity address)
+(implementation: #export (repository identity address)
(All [s] (-> (Maybe Identity) Address (//.Repository IO)))
(def: (download uri)
@@ -99,21 +99,20 @@
input (|> connection
java/net/URLConnection::getInputStream
(\ ! map (|>> java/io/BufferedInputStream::new)))
- #let [buffer (binary.create ..buffer_size)]
- output (loop [output (\ binary.monoid identity)]
+ #let [buffer (binary.create ..buffer_size)]]
+ (loop [output (\ binary.monoid identity)]
+ (do !
+ [bytes_read (java/io/BufferedInputStream::read buffer +0 (.int ..buffer_size) input)]
+ (case bytes_read
+ -1 (do !
+ [_ (java/lang/AutoCloseable::close input)]
+ (wrap output))
+ +0 (recur output)
+ _ (if (n.= ..buffer_size bytes_read)
+ (recur (\ binary.monoid compose output buffer))
(do !
- [bytes_read (java/io/BufferedInputStream::read buffer +0 (.int ..buffer_size) input)]
- (case bytes_read
- -1 (do !
- [_ (java/lang/AutoCloseable::close input)]
- (wrap output))
- +0 (recur output)
- _ (if (n.= ..buffer_size bytes_read)
- (recur (\ binary.monoid compose output buffer))
- (do !
- [chunk (\ io.monad wrap (binary.slice 0 (.nat bytes_read) buffer))]
- (recur (\ binary.monoid compose output chunk)))))))]
- (wrap output)))
+ [chunk (\ io.monad wrap (binary.slice 0 (.nat bytes_read) buffer))]
+ (recur (\ binary.monoid compose output chunk)))))))))
(def: (upload uri content)
(case identity
diff --git a/stdlib/source/program/scriptum.lux b/stdlib/source/program/scriptum.lux
index 2a205287a..a32a14f8f 100644
--- a/stdlib/source/program/scriptum.lux
+++ b/stdlib/source/program/scriptum.lux
@@ -267,7 +267,7 @@
(type: Organization
{#types (List Value)
#macros (List [Text Code])
- #structures (List Value)
+ #implementations (List Value)
#values (List Value)})
(def: (lux-module? module-name)
@@ -289,8 +289,8 @@
(|>> (#.Cons [name def-annotations])))
organization)
- (macro.structure? def-annotations)
- (update@ #structures
+ (macro.implementation? def-annotations)
+ (update@ #implementations
(: (Mutation (List Value))
(|>> (#.Cons [name def-annotations def-type])))
organization)
@@ -311,12 +311,12 @@
(-> (List [Text Definition]) Organization)
(let [init {#types (list)
#macros (list)
- #structures (list)
+ #implementations (list)
#values (list)}]
(|> (list\fold add-definition init defs)
(update@ #types (list.sort name-sort))
(update@ #macros (list.sort name-sort))
- (update@ #structures (list.sort name-sort))
+ (update@ #implementations (list.sort name-sort))
(update@ #values (list.sort name-sort)))))
(def: (unravel-type-func level type)
@@ -359,7 +359,7 @@
_
(format "(" (text.join-with " " (list& _name type-arguments)) ")"))
nesting (list.size type-arguments)]]
- (wrap (md.code (format (if signature? "(signature: " "(type: ")
+ (wrap (md.code (format (if signature? "(interface: " "(type: ")
(if recursive-type? "#rec " "")
usage text.new-line
(|> type
@@ -440,7 +440,7 @@
(list\fold (function.flip md.then)
(md.heading/2 <header>))))]
- [document-structure document-structures "Structures"]
+ [document-implementation document-implementations "Implementations"]
[document-value document-values "Values"]
)
@@ -454,7 +454,7 @@
(def: (document-module [[module-name module] organization])
(-> [[Text Module] Organization] (Meta [Text (Markdown Block)]))
(do macro.monad
- [#let [(^slots [#types #macros #structures #values]) organization
+ [#let [(^slots [#types #macros #implementations #values]) organization
annotations (|> module
(get@ #.module-annotations)
(maybe.default (' {}))
@@ -472,7 +472,7 @@
#let [documentation ($_ md.then
types-documentation
(if (list.empty? macros) empty-block (document-macros module-name macros))
- (if (list.empty? structures) empty-block (document-structures module-name structures))
+ (if (list.empty? implementations) empty-block (document-implementations module-name implementations))
(if (list.empty? values) empty-block (document-values module-name values)))]]
(wrap [module-name
($_ md.then