tricu

An interpreted language for exploring Tree Calculus
Log | Files | Refs | README | LICENSE

consumer_cached_summary_build.tri (2628B)


      1 -- One-time verified SCP build. Publish *compiled workers* under a separate
      2 -- executable manifest, not merely the authored IR manifest of clPrepare.
      3 !import "prelude" !Local
      4 !import "io" !Local
      5 !import "consumers.module" M
      6 !import "consumers.link" CL
      7 !import "source.module" Module
      8 !import "source.resolve" Resolve
      9 !import "consumers.text-summary" Summary
     10 
     11 root = "__ROOT__"
     12 row alias hash name = pair alias (pair hash name)
     13 stage = do onOk_
     14   succSource <- readFile "lib/consumer/succ.scp"
     15   succHash <- M.cmPutSource root succSource
     16   counterSource <- readFile "lib/consumer/text/countLines.scp"
     17   counterHash <- M.cmPutSource root counterSource
     18   entrySource <- readFile "demos/consumers/text-summary/summary-entry.scp"
     19   entryHash <- M.cmPutSource root entrySource
     20   receiverSource <- readFile "demos/consumers/text-summary/summary-receiver.scp"
     21   receiverHash <- M.cmPutSource root receiverSource
     22   M.cmPutImports root [(row "successor" succHash "succBinary")
     23     (row "counter" counterHash "countLines")
     24     (row "entry" entryHash "summaryEntry")
     25     (row "receiver" receiverHash "summaryReceiver")]
     26 selections successor = [(pair "counter" (Summary.counterState successor))
     27   (pair "entry" t) (pair "receiver" t)]
     28 lookup workers alias = (lazyMaybe (_ : t) (worker : worker)
     29   (Resolve.sourceFindExternal workers alias))
     30 application workers = (path : io (bind
     31   (Summary.summaryLexical (lookup workers "counter")
     32     (lookup workers "entry") (lookup workers "receiver") path)
     33   (outcome : putStrLn (Summary.render outcome))))
     34 publish descriptor successor = (onResult_
     35   (CL.clPrepare root descriptor (selections successor))
     36   (_ : putStrLn "BUILD_FAILED")
     37   (prepared : let workers = fst (snd prepared) in
     38     onResult_ (Module.sourceModulePublishNames root workers
     39       (CL.clNames (selections successor)))
     40       (_ : putStrLn "BUILD_FAILED")
     41       (workerManifest : onResult_
     42         (Module.sourceModulePublishNames root
     43           [(pair "run" (application workers))] ["run"])
     44         (_ : putStrLn "BUILD_FAILED")
     45         (appManifest : thenIO
     46           (putStrLn (append "authored-manifest=" (fst prepared)))
     47           (thenIO (putStrLn (append "worker-manifest=" workerManifest))
     48             (putStrLn (append "app-manifest=" appManifest)))))))
     49 run = (onResult_ stage
     50   (_ : putStrLn "BUILD_FAILED")
     51   (descriptor : onResult_ (CL.clPrepare root descriptor [(pair "successor" t)])
     52     (_ : putStrLn "BUILD_FAILED")
     53     (prepared : lazyMaybe
     54       (_ : putStrLn "BUILD_FAILED")
     55       (successor : publish descriptor successor)
     56       (Resolve.sourceFindExternal (fst (snd prepared)) "successor"))))
     57 main = io run
     58 main