Perhaps the first webserver in Tree Calculus? Sure, it's married to a Haskell IO runtime... but we're managing all of the actual webserver semantics in tricu! This includes a demo Arboricx application server that is capable of storing and serving bundles.
26 lines
850 B
Plaintext
26 lines
850 B
Plaintext
!import "../lib/prelude.tri" !Local
|
|
!import "../lib/io.tri" !Local
|
|
!import "../lib/arboricx/arboricx.tri" !Local
|
|
|
|
-- Read an Arboricx bundle from disk and execute it.
|
|
-- This demo loads test/fixtures/id.arboricx and applies the
|
|
-- default export to the string "hi". The id bundle simply
|
|
-- returns its argument, so the expected output is:
|
|
-- hi
|
|
--
|
|
-- Run with --allow-read test/fixtures/id.arboricx or --unsafe-io.
|
|
|
|
runBundle = (path arg :
|
|
bind (readFile path)
|
|
(result :
|
|
matchResult
|
|
(err rest : putStrLn "ERROR: Could not read bundle file")
|
|
(bundleBytes rest :
|
|
matchResult
|
|
(err rest : putStrLn "ERROR: Could not execute bundle")
|
|
(value rest : putStrLn value)
|
|
(runArboricx bundleBytes arg))
|
|
result))
|
|
|
|
main = io (runBundle "test/fixtures/id.arboricx" "hi")
|