diff options
author | Eduardo Julian | 2018-10-27 20:02:08 -0400 |
---|---|---|
committer | Eduardo Julian | 2018-10-27 20:02:08 -0400 |
commit | 5a1ea36c5ae4ccc990c77ff9a984468473384c0c (patch) | |
tree | 998b1a026fee53e87fac287547a7ab55c9647dd7 /stdlib/source/lux/compiler/meta/cache.lux | |
parent | 90c488db21662f5176cae0d19060ee4eb71bbbd5 (diff) |
Some refactoring.
Diffstat (limited to '')
-rw-r--r-- | stdlib/source/lux/compiler/meta/cache.lux | 37 |
1 files changed, 24 insertions, 13 deletions
diff --git a/stdlib/source/lux/compiler/meta/cache.lux b/stdlib/source/lux/compiler/meta/cache.lux index 8c93c65e7..bcb7c98f0 100644 --- a/stdlib/source/lux/compiler/meta/cache.lux +++ b/stdlib/source/lux/compiler/meta/cache.lux @@ -19,20 +19,27 @@ ["." set (#+ Set)]]] [world [file (#+ File System)]]] - [//io (#+ Context Module)] - ["." //io/context] - ["." //io/archive] - ["." //archive (#+ Signature Key Descriptor Document Archive)] + [// + [io (#+ Context Module) + ["io/." context] + ["io/." archive]] + ["." archive (#+ Signature Key Descriptor Document Archive)] + ["/." //]] ["." /dependency (#+ Dependency Graph)]) -(exception: #export (cannot-delete-cached-file {file File}) +(exception: #export (cannot-delete-file {file File}) (ex.report ["File" file])) -(exception: #export (stale-document {module Text} {current-hash Nat} {stale-hash Nat}) +(exception: #export (stale-document {module ///.Module} {current-hash Nat} {stale-hash Nat}) (ex.report ["Module" module] ["Current hash" (%n current-hash)] ["Stale hash" (%n stale-hash)])) +(exception: #export (mismatched-signature {module ///.Module} {expected Signature} {actual Signature}) + (ex.report ["Module" module] + ["Expected" (archive.describe expected)] + ["Actual" (archive.describe actual)])) + (do-template [<name>] [(exception: #export (<name> {message Text}) message)] @@ -44,7 +51,7 @@ (def: #export (cached System<m> root) (All [m] (-> (System m) File (m (List File)))) (|> root - (//io/archive.archive System<m>) + (io/archive.archive System<m>) (do> (:: System<m> &monad) [(:: System<m> files)] [(monad.map @ (function (recur file) @@ -56,7 +63,7 @@ [(:: System<m> files)] [(monad.map @ recur)] [list.concat - (list& (maybe.assume (//io/archive.module System<m> root file))) + (list& (maybe.assume (io/archive.module System<m> root file))) wrap])) (wrap (list))))))] [list.concat wrap]))) @@ -68,11 +75,11 @@ [deleted? (:: System<m> delete document)] (if deleted? (wrap []) - (:: System<m> throw cannot-delete-cached-file document)))) + (:: System<m> throw cannot-delete-file document)))) (def: (un-install System<m> root module) (All [m] (-> (System m) File Module (m Any))) - (let [document (//io/archive.document System<m> root module)] + (let [document (io/archive.document System<m> root module)] (|> document (do> (:: System<m> &monad) [(:: System<m> files)] @@ -113,15 +120,19 @@ (All [m d] (-> (System m) (List File) File (Key d) (Format d) Module (m (Maybe [Dependency (Document d)])))) (do (:: System<m> &monad) - [document' (:: System<m> read (//io/archive.document System<m> root module)) - [module' source-code] (//io/context.read System<m> contexts module) + [document' (:: System<m> read (io/archive.document System<m> root module)) + [module' source-code] (io/context.read System<m> contexts module) #let [current-hash (:: text.Hash<Text> hash source-code)]] (case (do error.Monad<Error> [[signature descriptor content] (binary.read (..document binary) document') #let [[document-hash _file references _state] descriptor] + _ (ex.assert mismatched-signature [module (get@ #archive.signature key) signature] + (:: archive.Equivalence<Signature> = + (get@ #archive.signature key) + signature)) _ (ex.assert stale-document [module current-hash document-hash] (n/= current-hash document-hash)) - document (//archive.close key signature descriptor content)] + document (archive.write key signature descriptor content)] (wrap [[module references] document])) (#error.Success [dependency document]) (wrap (#.Some [dependency document])) |