Use new dataspace patterns
This commit is contained in:
parent
494418540a
commit
48408d2763
16
lock.json
16
lock.json
|
@ -71,11 +71,11 @@
|
||||||
"packages": [
|
"packages": [
|
||||||
"preserves"
|
"preserves"
|
||||||
],
|
],
|
||||||
"path": "/nix/store/2hy124xgabz134dxj3wji7mp47fdwy3w-source",
|
"path": "/nix/store/hzb7af7lbd4kgd5y4hbgxv1lswig36yj-source",
|
||||||
"rev": "9ae435a83c6d5028405538af5d24a023af625b6e",
|
"rev": "fd498c6457cb9ad2f3179daa40da69eec00326dd",
|
||||||
"sha256": "1k7ywcp1a53x2fpc6wc2b0qzb264dkifash0s1wcp66rw3lx15k2",
|
"sha256": "182xvw04vjw83mlcrkwkip29b44h0v8dapg2014k9011h90mdsj4",
|
||||||
"srcDir": "src",
|
"srcDir": "src",
|
||||||
"url": "https://git.syndicate-lang.org/ehmry/preserves-nim/archive/9ae435a83c6d5028405538af5d24a023af625b6e.tar.gz"
|
"url": "https://git.syndicate-lang.org/ehmry/preserves-nim/archive/fd498c6457cb9ad2f3179daa40da69eec00326dd.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"method": "fetchzip",
|
"method": "fetchzip",
|
||||||
|
@ -93,11 +93,11 @@
|
||||||
"packages": [
|
"packages": [
|
||||||
"syndicate"
|
"syndicate"
|
||||||
],
|
],
|
||||||
"path": "/nix/store/9ll8f00v0phhlglc47b0r4n6sc4545jx-source",
|
"path": "/nix/store/gr7dbxq4ixfyf7rdcnxp9n08faglxp9n-source",
|
||||||
"rev": "6487ef65d0f98a9c8c9a163cd3bc02540ebb3367",
|
"rev": "c6038050ec359927df1a8209c7b1d1f3c1c9614b",
|
||||||
"sha256": "0myyzf7irv7gwn7k1m3kv0bwkbkw30hknvh4sv16i5wdhnqrlyb2",
|
"sha256": "1awsh40j60kh4crxnz5bankmgk0qxa636hczsnbrax87jf4ampsy",
|
||||||
"srcDir": "src",
|
"srcDir": "src",
|
||||||
"url": "https://git.syndicate-lang.org/ehmry/syndicate-nim/archive/6487ef65d0f98a9c8c9a163cd3bc02540ebb3367.tar.gz"
|
"url": "https://git.syndicate-lang.org/ehmry/syndicate-nim/archive/c6038050ec359927df1a8209c7b1d1f3c1c9614b.tar.gz"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"method": "fetchzip",
|
"method": "fetchzip",
|
||||||
|
|
|
@ -7,7 +7,7 @@ when not defined(linux):
|
||||||
{.error: "this component only tested for Linux".}
|
{.error: "this component only tested for Linux".}
|
||||||
|
|
||||||
import std/oserrors
|
import std/oserrors
|
||||||
import preserves
|
import preserves, preserves/sugar
|
||||||
import syndicate
|
import syndicate
|
||||||
import ./schema/mountpoints
|
import ./schema/mountpoints
|
||||||
|
|
||||||
|
@ -23,8 +23,11 @@ proc umount(target: cstring): cint {.importc, header: "<sys/mount.h>".}
|
||||||
proc spawnMountActor*(turn: var Turn; ds: Cap): Actor {.discardable.} =
|
proc spawnMountActor*(turn: var Turn; ds: Cap): Actor {.discardable.} =
|
||||||
spawnActor(turn, "mount_actor") do (turn: var Turn):
|
spawnActor(turn, "mount_actor") do (turn: var Turn):
|
||||||
let
|
let
|
||||||
targetPat = ?Observe(pattern: !Mountpoint) ?? { 1: grabLit() }
|
targetPat = observePattern(!Mountpoint, { @[%1]: grabLit() })
|
||||||
sourcePat = ?Observe(pattern: !Mountpoint) ?? { 0: grabLit(), 2: grabLit() }
|
sourcePat = observePattern(!Mountpoint, {
|
||||||
|
@[%0]: grabLit(),
|
||||||
|
@[%2]: grabLit(),
|
||||||
|
})
|
||||||
during(turn, ds, ?:BootArgs) do (ds: Cap):
|
during(turn, ds, ?:BootArgs) do (ds: Cap):
|
||||||
during(turn, ds, targetPat) do (target: string):
|
during(turn, ds, targetPat) do (target: string):
|
||||||
during(turn, ds, sourcePat) do (source: string, fsType: string):
|
during(turn, ds, sourcePat) do (source: string, fsType: string):
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
import std/[base64, os]
|
import std/[base64, os]
|
||||||
import pkg/hashlib/misc/blake2
|
import pkg/hashlib/misc/blake2
|
||||||
import preserves, syndicate
|
import preserves, preserves/sugar, syndicate
|
||||||
import ../schema/config
|
import ../schema/config
|
||||||
import ../schema/base64 as schema
|
import ../schema/base64 as schema
|
||||||
|
|
||||||
|
@ -15,21 +15,21 @@ proc spawnBase64Decoder*(turn: var Turn; root: Cap): Actor {.discardable.} =
|
||||||
let tmpDir = getTempDir()
|
let tmpDir = getTempDir()
|
||||||
during(turn, root, ?:Base64DecoderArguments) do (ds: Cap):
|
during(turn, root, ?:Base64DecoderArguments) do (ds: Cap):
|
||||||
|
|
||||||
let decTextPat = ?Observe(pattern: !Base64Text) ?? { 0: grabLit() }
|
let decTextPat = observePattern(!Base64Text, { @[%0]: grabLit() })
|
||||||
during(turn, ds, decTextPat) do (txt: string):
|
during(turn, ds, decTextPat) do (txt: string):
|
||||||
discard publish(turn, ds, Base64Text(
|
discard publish(turn, ds, Base64Text(
|
||||||
txt: txt,
|
txt: txt,
|
||||||
bin: cast[seq[byte]](decode(txt)),
|
bin: cast[seq[byte]](decode(txt)),
|
||||||
))
|
))
|
||||||
|
|
||||||
let encTextPat = ?Observe(pattern: !Base64Text) ?? { 1: grabLit() }
|
let encTextPat = observePattern(!Base64Text, { @[%1]: grabLit() })
|
||||||
during(turn, ds, encTextPat) do (bin: seq[byte]):
|
during(turn, ds, encTextPat) do (bin: seq[byte]):
|
||||||
discard publish(turn, ds, Base64Text(
|
discard publish(turn, ds, Base64Text(
|
||||||
txt: encode(bin),
|
txt: encode(bin),
|
||||||
bin: bin,
|
bin: bin,
|
||||||
))
|
))
|
||||||
|
|
||||||
let decFilePat = ?Observe(pattern: !Base64File) ?? { 0: grabLit() }
|
let decFilePat = observePattern( !Base64File, { @[%0]: grabLit() })
|
||||||
during(turn, ds, decFilePat) do (txt: string):
|
during(turn, ds, decFilePat) do (txt: string):
|
||||||
var bin = decode(txt)
|
var bin = decode(txt)
|
||||||
var ctx = init[BLAKE2B_512]()
|
var ctx = init[BLAKE2B_512]()
|
||||||
|
|
|
@ -30,9 +30,9 @@ method publish(cache: CacheEntity; turn: var Turn; ass: AssertionRef; h: Handle)
|
||||||
stop(turn) # end this facet
|
stop(turn) # end this facet
|
||||||
|
|
||||||
proc isObserve(pat: Pattern): bool =
|
proc isObserve(pat: Pattern): bool =
|
||||||
pat.orKind == PatternKind.DCompound and
|
pat.orKind == PatternKind.group and
|
||||||
pat.dcompound.orKind == DCompoundKind.rec and
|
pat.group.type.orKind == GroupTypeKind.rec and
|
||||||
pat.dcompound.rec.label.isSymbol"Observe"
|
pat.group.type.rec.label.isSymbol"Observe"
|
||||||
|
|
||||||
proc spawnCacheActor*(turn: var Turn; root: Cap): Actor =
|
proc spawnCacheActor*(turn: var Turn; root: Cap): Actor =
|
||||||
spawnActor(turn, "cache_actor") do (turn: var Turn):
|
spawnActor(turn, "cache_actor") do (turn: var Turn):
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# SPDX-License-Identifier: Unlicense
|
# SPDX-License-Identifier: Unlicense
|
||||||
|
|
||||||
import std/[dirs, os, paths]
|
import std/[dirs, os, paths]
|
||||||
import preserves
|
import preserves, preserves/sugar
|
||||||
import syndicate
|
import syndicate
|
||||||
|
|
||||||
import ../schema/[assertions, config]
|
import ../schema/[assertions, config]
|
||||||
|
@ -10,7 +10,7 @@ import ../schema/[assertions, config]
|
||||||
proc spawnFileSystemUsageActor*(turn: var Turn; root: Cap): Actor {.discardable.} =
|
proc spawnFileSystemUsageActor*(turn: var Turn; root: Cap): Actor {.discardable.} =
|
||||||
spawn("file-system-usage", turn) do (turn: var Turn):
|
spawn("file-system-usage", turn) do (turn: var Turn):
|
||||||
during(turn, root, ?:FileSystemUsageArguments) do (ds: Cap):
|
during(turn, root, ?:FileSystemUsageArguments) do (ds: Cap):
|
||||||
var pat = ?Observe(pattern: !FileSystemUsage) ?? { 0: grab() }
|
let pat = observePattern(!FileSystemUsage, { @[%0]: grab() })
|
||||||
during(turn, ds, pat) do (lit: Literal[string]):
|
during(turn, ds, pat) do (lit: Literal[string]):
|
||||||
var ass = FileSystemUsage(path: lit.value)
|
var ass = FileSystemUsage(path: lit.value)
|
||||||
if fileExists(ass.path): ass.size = getFileSize(ass.path)
|
if fileExists(ass.path): ass.size = getFileSize(ass.path)
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
# SPDX-License-Identifier: Unlicense
|
# SPDX-License-Identifier: Unlicense
|
||||||
|
|
||||||
import std/[options, tables, times]
|
import std/[options, tables, times]
|
||||||
import preserves, syndicate, syndicate/drivers/timers
|
import preserves, preserves/sugar
|
||||||
|
import syndicate, syndicate/drivers/timers
|
||||||
|
|
||||||
import ../schema/[assertions, config]
|
import ../schema/[assertions, config]
|
||||||
|
|
||||||
|
@ -87,7 +88,7 @@ proc spawnPulseActor*(turn: var Turn; root: Cap): Actor =
|
||||||
## Spawn an actor that retracts and re-asserts observers on
|
## Spawn an actor that retracts and re-asserts observers on
|
||||||
## a timed pulse. Requires a timer service on the `root` capability.
|
## a timed pulse. Requires a timer service on the `root` capability.
|
||||||
spawnActor(turn, "pulse") do (turn: var Turn):
|
spawnActor(turn, "pulse") do (turn: var Turn):
|
||||||
let grabPeriod = ?Observe(pattern: !Pulse) ?? { 0: grab() }
|
let grabPeriod = observePattern(!Pulse, { @[%0]: grab() })
|
||||||
during(turn, root, ?:PulseArguments) do (ds: Cap):
|
during(turn, root, ?:PulseArguments) do (ds: Cap):
|
||||||
during(turn, ds, grabPeriod) do (lit: Literal[float]):
|
during(turn, ds, grabPeriod) do (lit: Literal[float]):
|
||||||
if lit.value < 0.000_1:
|
if lit.value < 0.000_1:
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# SPDX-License-Identifier: Unlicense
|
# SPDX-License-Identifier: Unlicense
|
||||||
|
|
||||||
import std/[options, parsexml, xmlparser, xmltree]
|
import std/[options, parsexml, xmlparser, xmltree]
|
||||||
import preserves, preserves/xmlhooks
|
import preserves, preserves/sugar, preserves/xmlhooks
|
||||||
import syndicate
|
import syndicate
|
||||||
|
|
||||||
import ../schema/[assertions, config]
|
import ../schema/[assertions, config]
|
||||||
|
@ -20,10 +20,11 @@ proc translatePreserves(pr: Value): XmlTranslation {.gcsafe.} =
|
||||||
proc spawnXmlTranslator*(turn: var Turn; root: Cap): Actor {.discardable.} =
|
proc spawnXmlTranslator*(turn: var Turn; root: Cap): Actor {.discardable.} =
|
||||||
spawnActor(turn, "xml-translator") do (turn: var Turn):
|
spawnActor(turn, "xml-translator") do (turn: var Turn):
|
||||||
during(turn, root, ?:XmlTranslatorArguments) do (ds: Cap):
|
during(turn, root, ?:XmlTranslatorArguments) do (ds: Cap):
|
||||||
let obsPat = ?Observe(pattern: !XmlTranslation)
|
let xmlPat = observePattern(!XmlTranslation, {@[%0]:grab()})
|
||||||
during(turn, ds, obsPat ?? {0: grab()}) do (xs: Literal[string]):
|
during(turn, ds, xmlPat) do (xs: Literal[string]):
|
||||||
publish(turn, ds, translateXml(xs.value))
|
publish(turn, ds, translateXml(xs.value))
|
||||||
during(turn, ds, obsPat ?? {1: grab()}) do (pr: Literal[Value]):
|
let prPat = observePattern(!XmlTranslation, {@[%1]:grab()})
|
||||||
|
during(turn, ds, prPat) do (pr: Literal[Value]):
|
||||||
publish(turn, ds, translatePreserves(pr.value))
|
publish(turn, ds, translatePreserves(pr.value))
|
||||||
|
|
||||||
when isMainModule:
|
when isMainModule:
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
# SPDX-License-Identifier: Unlicense
|
# SPDX-License-Identifier: Unlicense
|
||||||
|
|
||||||
import std/[os, strutils]
|
import std/[os, strutils]
|
||||||
import preserves, syndicate
|
import preserves, preserves/sugar, syndicate
|
||||||
import ./schema/[assertions, config]
|
import ./schema/[assertions, config]
|
||||||
|
|
||||||
{.passC: staticExec("pkg-config --cflags libxslt").}
|
{.passC: staticExec("pkg-config --cflags libxslt").}
|
||||||
|
@ -177,7 +177,7 @@ proc spawnXsltActor*(turn: var Turn; root: Cap): Actor {.discardable.} =
|
||||||
spawnActor(turn, "xslt") do (turn: var Turn):
|
spawnActor(turn, "xslt") do (turn: var Turn):
|
||||||
initLibXml()
|
initLibXml()
|
||||||
during(turn, root, ?:XsltArguments) do (ds: Cap):
|
during(turn, root, ?:XsltArguments) do (ds: Cap):
|
||||||
let sheetsPat = ?Observe(pattern: !XsltTransform) ?? {0: grab(), 1: grab()}
|
let sheetsPat = observePattern(!XsltTransform, {@[%0]: grab(), @[%1]: grab()})
|
||||||
during(turn, ds, sheetsPat) do (stylesheet: Literal[string], input: Literal[string]):
|
during(turn, ds, sheetsPat) do (stylesheet: Literal[string], input: Literal[string]):
|
||||||
let cur = loadStylesheet(stylesheet.value)
|
let cur = loadStylesheet(stylesheet.value)
|
||||||
if cur.isNil:
|
if cur.isNil:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Package
|
# Package
|
||||||
|
|
||||||
version = "20240408"
|
version = "20240422"
|
||||||
author = "Emery Hemingway"
|
author = "Emery Hemingway"
|
||||||
description = "Utilites for Syndicated Actors and Synit"
|
description = "Utilites for Syndicated Actors and Synit"
|
||||||
license = "unlicense"
|
license = "unlicense"
|
||||||
|
@ -10,4 +10,4 @@ bin = @["mintsturdyref", "mount_actor", "msg", "postgre_actor", "prese
|
||||||
|
|
||||||
# Dependencies
|
# Dependencies
|
||||||
|
|
||||||
requires "http://git.syndicate-lang.org/ehmry/syndicate-nim.git >= 20240408", "https://github.com/ehmry/nim-sys.git#4ef3b624db86e331ba334e705c1aa235d55b05e1", "https://git.sr.ht/~ehmry/nim_taps >= 20240405"
|
requires "http://git.syndicate-lang.org/ehmry/syndicate-nim.git >= 20240422", "https://github.com/ehmry/nim-sys.git#4ef3b624db86e331ba334e705c1aa235d55b05e1", "https://git.sr.ht/~ehmry/nim_taps >= 20240405"
|
||||||
|
|
Loading…
Reference in New Issue