Syndicate API update
This commit is contained in:
parent
d5bdd3baf9
commit
aea55969bb
|
@ -16,8 +16,7 @@ A utility for minting [Sturdyrefs](https://synit.org/book/operation/builtin/gate
|
|||
|
||||
## msg
|
||||
|
||||
A utility that sends a message to `$SYNDICATE_SOCK` in the form `<ARGV0 ARG1 … ARGVn>`.
|
||||
The `$SYNDICATE_STEP` variables sets the SturdyRef capability with a default to the SturdyRef generated by `<ref { oid: "syndicate" key: #x"" }>`.
|
||||
A utility that sends messages to `$SYNDICATE_ROUTE`.
|
||||
|
||||
|
||||
## net_mapper
|
||||
|
@ -52,7 +51,7 @@ It can be used to feed the environment variables of a nested child of the Syndic
|
|||
|
||||
## syndump
|
||||
|
||||
Utility for printing assertions and messages. Parses the command-line arguments as a pattern, connects to `$SYNDICATE_SOCK`, authenticates with the SturdyRef at `$SYNDICATE_STEP`, and writes observations to standard-output. Published assertions are prefixed by the `+` character, retractions by `-`, and messages by `!`.
|
||||
Utility for printing assertions and messages. Parses the command-line arguments as a pattern, connects a dataspace via `$SYNDICATE_ROUTE`, and writes observations to standard-output. Published assertions are prefixed by the `+` character, retractions by `-`, and messages by `!`.
|
||||
|
||||
Example
|
||||
```sh
|
||||
|
|
1
Tupfile
1
Tupfile
|
@ -1,3 +1,2 @@
|
|||
include_rules
|
||||
: |> !nim_lk |> | ./<lock>
|
||||
: lock.json |> !nim_cfg |> | ./<lock>
|
||||
|
|
|
@ -1 +1 @@
|
|||
{"depends":[{"method":"fetchzip","packages":["nimcrypto"],"path":"/nix/store/zyr8zwh7vaiycn1s4r8cxwc71f2k5l0h-source","ref":"traditional-api","rev":"602c5d20c69c76137201b5d41f788f72afb95aa8","sha256":"1dmdmgb6b9m5f8dyxk781nnd61dsk3hdxqks7idk9ncnpj9fng65","srcDir":"","url":"https://github.com/cheatfate/nimcrypto/archive/602c5d20c69c76137201b5d41f788f72afb95aa8.tar.gz"},{"method":"fetchzip","packages":["illwill"],"path":"/nix/store/3lmm3z36qn4gz7bfa209zv0pqrpm3di9-source","ref":"v0.3.2","rev":"1d12cb36ab7b76c31d2d25fa421013ecb382e625","sha256":"0f9yncl5gbdja18mrqf5ixrdgrh95k0khda923dm1jd1x1b7ar8z","srcDir":"","url":"https://github.com/johnnovak/illwill/archive/1d12cb36ab7b76c31d2d25fa421013ecb382e625.tar.gz"},{"method":"fetchzip","packages":["syndicate"],"path":"/nix/store/008s11kkqscfqxs6g29q77c38pnrlppi-source","ref":"20231005","rev":"552e51899c82c0c2f4f466382be7d8e22a1da689","sha256":"1j3k0zlh5z02adhfvb7rdqz8fjzc6gri4v3v1fgcv2h2b7vrf0dg","srcDir":"src","url":"https://git.syndicate-lang.org/ehmry/syndicate-nim/archive/552e51899c82c0c2f4f466382be7d8e22a1da689.tar.gz"},{"method":"fetchzip","packages":["hashlib"],"path":"/nix/store/v03nzlpdgbfxd2zhcnkfbkq01d5kqxcl-source","rev":"84e0247555e4488594975900401baaf5bbbfb53","sha256":"1pfczsv8kl36qpv543f93d2y2vgz2acckssfap7l51s2x62m6qwx","srcDir":"","url":"https://github.com/khchen/hashlib/archive/84e0247555e4488594975900401baaf5bbbfb53.tar.gz"},{"method":"fetchzip","packages":["preserves"],"path":"/nix/store/vx6ihnickx7d5lwy69i8k7fsjicv33r3-source","ref":"20230914","rev":"c915accf7d2a36ca1f323e2f02e2df7375e815f1","sha256":"11rlcbs9mvk335ibkbj8fk9aslhmnlaiqhcsjpp5n04k447sr7nx","srcDir":"src","url":"https://git.syndicate-lang.org/ehmry/preserves-nim/archive/c915accf7d2a36ca1f323e2f02e2df7375e815f1.tar.gz"},{"method":"fetchzip","packages":["npeg"],"path":"/nix/store/ffkxmjmigfs7zhhiiqm0iw2c34smyciy-source","ref":"1.2.1","rev":"26d62fdc40feb84c6533956dc11d5ee9ea9b6c09","sha256":"0xpzifjkfp49w76qmaylan8q181bs45anmp46l4bwr3lkrr7bpwh","srcDir":"src","url":"https://github.com/zevv/npeg/archive/26d62fdc40feb84c6533956dc11d5ee9ea9b6c09.tar.gz"}]}
|
||||
{"depends":[{"method":"fetchzip","packages":["hashlib"],"path":"/nix/store/v03nzlpdgbfxd2zhcnkfbkq01d5kqxcl-source","rev":"84e0247555e4488594975900401baaf5bbbfb53","sha256":"1pfczsv8kl36qpv543f93d2y2vgz2acckssfap7l51s2x62m6qwx","srcDir":"","url":"https://github.com/khchen/hashlib/archive/84e0247555e4488594975900401baaf5bbbfb53.tar.gz"},{"method":"fetchzip","packages":["illwill"],"path":"/nix/store/3lmm3z36qn4gz7bfa209zv0pqrpm3di9-source","ref":"v0.3.2","rev":"1d12cb36ab7b76c31d2d25fa421013ecb382e625","sha256":"0f9yncl5gbdja18mrqf5ixrdgrh95k0khda923dm1jd1x1b7ar8z","srcDir":"","url":"https://github.com/johnnovak/illwill/archive/1d12cb36ab7b76c31d2d25fa421013ecb382e625.tar.gz"},{"method":"fetchzip","packages":["nimcrypto"],"path":"/nix/store/zyr8zwh7vaiycn1s4r8cxwc71f2k5l0h-source","ref":"traditional-api","rev":"602c5d20c69c76137201b5d41f788f72afb95aa8","sha256":"1dmdmgb6b9m5f8dyxk781nnd61dsk3hdxqks7idk9ncnpj9fng65","srcDir":"","url":"https://github.com/cheatfate/nimcrypto/archive/602c5d20c69c76137201b5d41f788f72afb95aa8.tar.gz"},{"method":"fetchzip","packages":["npeg"],"path":"/nix/store/ffkxmjmigfs7zhhiiqm0iw2c34smyciy-source","ref":"1.2.1","rev":"26d62fdc40feb84c6533956dc11d5ee9ea9b6c09","sha256":"0xpzifjkfp49w76qmaylan8q181bs45anmp46l4bwr3lkrr7bpwh","srcDir":"src","url":"https://github.com/zevv/npeg/archive/26d62fdc40feb84c6533956dc11d5ee9ea9b6c09.tar.gz"},{"method":"fetchzip","packages":["preserves"],"path":"/nix/store/nrcpzf9hx70kry3gwhrdzcs3qicjncjh-source","ref":"20231021","rev":"edece399be70818208bf2263c30cb2bcf435bbff","sha256":"0xmw35wmw3a4lja9q4qvlvpxv3xk0hnkjg4fwfw6f3inh6zfiqki","srcDir":"src","url":"https://git.syndicate-lang.org/ehmry/preserves-nim/archive/edece399be70818208bf2263c30cb2bcf435bbff.tar.gz"},{"method":"fetchzip","packages":["syndicate"],"path":"/nix/store/1y3nnpp2mhxqmdb3xh4c4k5k5l9hhqk3-source","ref":"20231019","rev":"57b99b20e7db1b97b1cb9c6df574bd13983c26fc","sha256":"1kgb3a78igs37xkmv8cbaxa17qdjf2h43vdmpda517c9086ggsn5","srcDir":"src","url":"https://git.syndicate-lang.org/ehmry/syndicate-nim/archive/57b99b20e7db1b97b1cb9c6df574bd13983c26fc.tar.gz"}]}
|
||||
|
|
|
@ -71,7 +71,7 @@ iterator symbols(event: uint32): Symbol =
|
|||
runActor("inotify_actor") do (root: Cap; turn: var Turn):
|
||||
let buf = newSeq[byte](8192)
|
||||
let eventPattern = ?Observe(pattern: !InotifyMessage) ?? { 0: grabLit(), 1: grabLit() }
|
||||
connectStdio(root, turn)
|
||||
connectStdio(turn, root)
|
||||
during(turn, root, ?BootArgs) do (ds: Cap):
|
||||
let inf = inotify_init1(IN_NONBLOCK)
|
||||
doAssert inf != -1, $inf & " - " & $strerror(errno)
|
||||
|
|
|
@ -8,7 +8,7 @@ import preserves, preserves/jsonhooks, syndicate, syndicate/relays
|
|||
import ./schema/config, ./json_messages
|
||||
|
||||
runActor("main") do (root: Cap; turn: var Turn):
|
||||
connectStdio(root, turn)
|
||||
connectStdio(turn, root)
|
||||
during(turn, root, ?JsonSocketTranslatorArguments) do (ds: Cap, socketPath: string):
|
||||
let socket = newAsyncSocket(
|
||||
domain = AF_UNIX,
|
||||
|
|
|
@ -7,7 +7,7 @@ import syndicate, syndicate/relays
|
|||
|
||||
from preserves/jsonhooks import toPreserveHook
|
||||
|
||||
import ./schema/config, ./json_messages
|
||||
import ./json_messages
|
||||
|
||||
proc runChild: string =
|
||||
let params = commandLineParams()
|
||||
|
@ -25,7 +25,7 @@ proc runChild: string =
|
|||
quit 1
|
||||
|
||||
runActor("main") do (ds: Cap; turn: var Turn):
|
||||
connectStdio(ds, turn)
|
||||
connectStdio(turn, ds)
|
||||
let js = runChild().parseJson()
|
||||
message(turn, ds, RecvJson(data: js))
|
||||
discard publish(turn, ds, RecvJson(data: js))
|
||||
|
|
25
src/msg.nim
25
src/msg.nim
|
@ -2,29 +2,18 @@
|
|||
# SPDX-License-Identifier: Unlicense
|
||||
|
||||
import std/[asyncdispatch, sequtils, os]
|
||||
import preserves, syndicate, syndicate/[capabilities, relays]
|
||||
|
||||
proc unixSocketPath: Unix =
|
||||
result.path = getEnv("SYNDICATE_SOCK")
|
||||
if result.path == "":
|
||||
result.path = getEnv("XDG_RUNTIME_DIR", "/run/user/1000") / "dataspace"
|
||||
|
||||
proc envStep: Assertion =
|
||||
var s = getEnv("SYNDICATE_STEP")
|
||||
if s != "": parsePreserves(s, Cap)
|
||||
else: capabilities.mint().toPreserve(Cap)
|
||||
|
||||
import preserves, syndicate, syndicate/relays
|
||||
|
||||
proc main =
|
||||
let
|
||||
step = envStep()
|
||||
label = getAppFilename().extractFilename
|
||||
route = envRoute()
|
||||
data = map(commandLineParams(), parsePreserves)
|
||||
discard bootDataspace(label) do (root: Cap; turn: var Turn):
|
||||
connect(turn, unixSocketPath(), step) do (turn: var Turn; ds: Cap):
|
||||
message(turn, ds, initRecord(label, data))
|
||||
|
||||
discard bootDataspace("msg") do (turn: var Turn; root: Cap):
|
||||
resolve(turn, root, route) do (turn: var Turn; ds: Cap):
|
||||
for e in data:
|
||||
message(turn, ds, e)
|
||||
|
||||
for _ in 1..4: poll()
|
||||
quit()
|
||||
|
||||
main()
|
||||
|
|
|
@ -155,7 +155,7 @@ type Args {.preservesDictionary.} = object
|
|||
dataspace: Cap
|
||||
|
||||
runActor("net_mapper") do (root: Cap; turn: var Turn):
|
||||
connectStdio(root, turn)
|
||||
connectStdio(turn, root)
|
||||
let rttObserver = ?Observe(pattern: !RoundTripTime) ?? {0: grabLit()}
|
||||
during(turn, root, ?Args) do (ds: Cap):
|
||||
during(turn, ds, rttObserver) do (address: IpAddress):
|
||||
|
|
|
@ -5,19 +5,9 @@
|
|||
|
||||
import std/[asyncdispatch, os, terminal]
|
||||
import preserves
|
||||
import syndicate, syndicate/[capabilities, durings, relays]
|
||||
import syndicate, syndicate/[durings, relays]
|
||||
import illwill
|
||||
|
||||
proc unixSocketPath: Unix =
|
||||
result.path = getEnv("SYNDICATE_SOCK")
|
||||
if result.path == "":
|
||||
result.path = getEnv("XDG_RUNTIME_DIR", "/run/user/1000") / "dataspace"
|
||||
|
||||
proc envStep: Assertion =
|
||||
var s = getEnv("SYNDICATE_STEP")
|
||||
if s != "": parsePreserves(s, Cap)
|
||||
else: capabilities.mint().toPreserve(Cap)
|
||||
|
||||
proc exitProc() {.noconv.} =
|
||||
illwillDeinit()
|
||||
showCursor()
|
||||
|
@ -110,16 +100,15 @@ setControlCHook(exit)
|
|||
|
||||
proc main =
|
||||
let
|
||||
unix = unixSocketPath()
|
||||
step = envStep()
|
||||
route = envRoute()
|
||||
pat = inputPattern()
|
||||
|
||||
if stdout.is_a_TTY:
|
||||
illwillInit()
|
||||
hideCursor()
|
||||
|
||||
discard bootDataspace("syndex_card") do (ds: Cap; turn: var Turn):
|
||||
connect(turn, unix, step) do (turn: var Turn; ds: Cap):
|
||||
discard bootDataspace("syndex_card") do (turn: var Turn; root: Cap):
|
||||
resolve(turn, root, route) do (turn: var Turn; ds: Cap):
|
||||
var termBuf = newTerminalBuffer(terminalWidth(), terminalHeight())
|
||||
termBuf.write(1, 1, $pat, styleBright)
|
||||
termBuf.drawHorizLine(1, termBuf.width(), 2)
|
||||
|
@ -137,7 +126,7 @@ proc main =
|
|||
else:
|
||||
let entity = DumpEntity()
|
||||
runActor("syndex_card") do (root: Cap; turn: var Turn):
|
||||
connect(turn, unix, step) do (turn: var Turn; ds: Cap):
|
||||
resolve(turn, root, route) do (turn: var Turn; ds: Cap):
|
||||
discard observe(turn, ds, pat, entity)
|
||||
|
||||
main()
|
||||
|
|
|
@ -3,17 +3,8 @@
|
|||
|
||||
import std/[os, tables]
|
||||
import preserves
|
||||
import syndicate, syndicate/[capabilities, durings, relays]
|
||||
|
||||
proc unixSocketPath: Unix =
|
||||
result.path = getEnv("SYNDICATE_SOCK")
|
||||
if result.path == "":
|
||||
result.path = getEnv("XDG_RUNTIME_DIR", "/run/user/1000") / "dataspace"
|
||||
|
||||
proc envStep: Assertion =
|
||||
var s = getEnv("SYNDICATE_STEP")
|
||||
if s != "": parsePreserves(s, Cap)
|
||||
else: capabilities.mint().toPreserve(Cap)
|
||||
import syndicate,
|
||||
syndicate/[durings, relays]
|
||||
|
||||
proc parsePattern(pr: Assertion): Pattern =
|
||||
let
|
||||
|
@ -74,13 +65,13 @@ proc exitProc() {.noconv.} =
|
|||
|
||||
proc main =
|
||||
let
|
||||
unix = unixSocketPath()
|
||||
step = envStep()
|
||||
route = envRoute()
|
||||
pat = inputPattern()
|
||||
entity = DumpEntity()
|
||||
runActor("syndex_card") do (root: Cap; turn: var Turn):
|
||||
connect(turn, unix, step) do (turn: var Turn; ds: Cap):
|
||||
discard observe(turn, ds, pat, entity)
|
||||
discard observe(turn, root, pat, entity)
|
||||
resolve(turn, root, route) do (turn: var Turn; ds: Cap):
|
||||
discard observe(turn, ds, pat, entity)
|
||||
|
||||
setControlCHook(exitProc)
|
||||
main()
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Package
|
||||
|
||||
version = "20231010"
|
||||
version = "20231021"
|
||||
author = "Emery Hemingway"
|
||||
description = "Utilites for Syndicated Actors and Synit"
|
||||
license = "unlicense"
|
||||
|
@ -10,4 +10,4 @@ bin = @["json_socket_translator", "json_translator", "mintsturdyref",
|
|||
|
||||
# Dependencies
|
||||
|
||||
requires "nim >= 1.6.6", "illwill", "syndicate >= 20230518"
|
||||
requires "nim >= 1.6.6", "illwill", "syndicate >= 20231021"
|
||||
|
|
Loading…
Reference in New Issue