aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/program/aedifex/cache.lux
diff options
context:
space:
mode:
Diffstat (limited to 'stdlib/source/program/aedifex/cache.lux')
-rw-r--r--stdlib/source/program/aedifex/cache.lux166
1 files changed, 0 insertions, 166 deletions
diff --git a/stdlib/source/program/aedifex/cache.lux b/stdlib/source/program/aedifex/cache.lux
deleted file mode 100644
index a7f6439df..000000000
--- a/stdlib/source/program/aedifex/cache.lux
+++ /dev/null
@@ -1,166 +0,0 @@
-(.module:
- [lux #*
- [abstract
- [codec (#+ Codec)]
- ["." monad (#+ do)]]
- [control
- ["." try (#+ Try)]
- [concurrency
- ["." promise (#+ Promise)]]
- [security
- ["!" capability]]]
- [data
- [binary (#+ Binary)]
- ["." product]
- [text
- ["%" format (#+ format)]
- ["." encoding]]
- [collection
- ["." dictionary]
- ["." set (#+ Set)]
- ["." list]]
- [format
- ["." xml]]]
- [world
- [program (#+ Program)]
- ["." file (#+ Path File Directory)]]]
- ["." // #_
- ["#" local]
- ["#." hash (#+ Hash SHA-1 MD5)]
- ["#." package (#+ Package)]
- ["#." artifact (#+ Artifact)
- ["#/." type]
- ["#/." extension (#+ Extension)]]
- ["#." dependency (#+ Dependency)
- [resolution (#+ Resolution)]
- ["#/." status (#+ Status)]]
- ["#." repository #_
- ["#/." origin]]])
-
-(def: (write! 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: (write_hashed system directory [artifact type] [data status])
- (-> (file.System Promise) Path Dependency [Binary Status] (Promise (Try Any)))
- (let [prefix (format directory
- (\ system separator)
- (//artifact.identity artifact)
- (//artifact/extension.extension type))]
- (do {! (try.with promise.monad)}
- [_ (..write! system data prefix)
- #let [write_hash (: (All [h] (-> (Codec Text (Hash h)) Extension (Hash h) (Promise (Try Any))))
- (function (_ codec extension hash)
- (..write! system
- (|> hash (\ codec encode) (\ encoding.utf8 encode))
- (format prefix extension))))]]
- (case status
- #//dependency/status.Unverified
- (wrap [])
-
- (#//dependency/status.Partial partial)
- (case partial
- (#.Left sha-1)
- (write_hash //hash.sha-1_codec //artifact/extension.sha-1 sha-1)
-
- (#.Right md5)
- (write_hash //hash.md5_codec //artifact/extension.md5 md5))
-
- (#//dependency/status.Verified sha-1 md5)
- (do !
- [_ (write_hash //hash.sha-1_codec //artifact/extension.sha-1 sha-1)]
- (write_hash //hash.md5_codec //artifact/extension.md5 md5))))))
-
-(def: #export (write_one program system [artifact type] package)
- (-> (Program Promise) (file.System Promise) Dependency Package (Promise (Try Artifact)))
- (do promise.monad
- [home (\ program home [])]
- (do (try.with promise.monad)
- [directory (: (Promise (Try Path))
- (file.make_directories promise.monad system (//.path system home artifact)))
- _ (write_hashed system directory [artifact type] (get@ #//package.library package))
- _ (let [[pom status] (get@ #//package.pom package)]
- (write_hashed system directory
- [artifact //artifact/type.pom]
- [(|> pom (\ xml.codec encode) (\ encoding.utf8 encode))
- status]))]
- (wrap artifact))))
-
-(def: #export (write_all program system resolution)
- (-> (Program Promise) (file.System Promise) Resolution (Promise (Try (Set Artifact))))
- (do {! (try.with promise.monad)}
- []
- (|> (dictionary.entries resolution)
- (list.filter (|>> product.right //package.local? not))
- (monad.map ! (function (_ [dependency package])
- (..write_one program system dependency package)))
- (\ ! map (set.from_list //artifact.hash)))))
-
-(def: (read! system path)
- (-> (file.System Promise) Path (Promise (Try Binary)))
- (do (try.with promise.monad)
- [file (: (Promise (Try (File Promise)))
- (!.use (\ system file) path))]
- (!.use (\ file content) [])))
-
-(def: (decode codec data)
- (All [a] (-> (Codec Text a) Binary (Try a)))
- (let [(^open "_\.") try.monad]
- (|> data
- (\ encoding.utf8 decode)
- (_\map (\ codec decode))
- _\join)))
-
-(def: #export (read_one program system [artifact type])
- (-> (Program Promise) (file.System Promise) Dependency (Promise (Try Package)))
- (do promise.monad
- [home (\ program home [])
- #let [prefix (format (//.path system home artifact)
- (\ system separator)
- (//artifact.identity artifact))]]
- (do (try.with promise.monad)
- [pom (..read! system (format prefix //artifact/extension.pom))
- #let [extension (//artifact/extension.extension type)]
- library (..read! system (format prefix extension))
- library_sha-1 (..read! system (format prefix extension //artifact/extension.sha-1))
- library_md5 (..read! system (format prefix extension //artifact/extension.md5))]
- (\ promise.monad wrap
- (do try.monad
- [pom (..decode xml.codec pom)
- library_sha-1 (..decode //hash.sha-1_codec library_sha-1)
- library_md5 (..decode //hash.md5_codec library_md5)]
- (wrap {#//package.origin (#//repository/origin.Local prefix)
- #//package.library [library (#//dependency/status.Verified library_sha-1 library_md5)]
- #//package.pom [pom #//dependency/status.Unverified]}))))))
-
-(def: #export (read_all program system dependencies resolution)
- (-> (Program Promise) (file.System Promise) (List Dependency) Resolution (Promise (Try Resolution)))
- (case dependencies
- #.Nil
- (\ (try.with promise.monad) wrap resolution)
-
- (#.Cons head tail)
- (do promise.monad
- [package (case (dictionary.get head resolution)
- (#.Some package)
- (wrap (#try.Success package))
-
- #.None
- (..read_one program system head))]
- (with_expansions [<next> (as_is (read_all program system tail resolution))]
- (case package
- (#try.Success package)
- (do (try.with promise.monad)
- [sub_dependencies (|> package
- //package.dependencies
- (\ promise.monad wrap))
- resolution (|> resolution
- (dictionary.put head package)
- (read_all program system (set.to_list sub_dependencies)))]
- <next>)
-
- (#try.Failure error)
- <next>)))))