From aea55969bb46c821786d96cdb468215d820cbec2 Mon Sep 17 00:00:00 2001 From: Emery Hemingway Date: Sat, 21 Oct 2023 19:03:11 +0100 Subject: [PATCH] Syndicate API update --- README.md | 5 ++--- Tupfile | 1 - lock.json | 2 +- src/inotify_actor.nim | 2 +- src/json_socket_translator.nim | 2 +- src/json_translator.nim | 4 ++-- src/msg.nim | 25 +++++++------------------ src/net_mapper.nim | 2 +- src/syndex_card.nim | 21 +++++---------------- src/syndump.nim | 21 ++++++--------------- syndicate_utils.nimble | 4 ++-- 11 files changed, 28 insertions(+), 61 deletions(-) diff --git a/README.md b/README.md index 4bce40b..0031b54 100644 --- a/README.md +++ b/README.md @@ -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 ``. -The `$SYNDICATE_STEP` variables sets the SturdyRef capability with a default to the SturdyRef generated by ``. +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 diff --git a/Tupfile b/Tupfile index 9368191..28c450e 100644 --- a/Tupfile +++ b/Tupfile @@ -1,3 +1,2 @@ include_rules -: |> !nim_lk |> | ./ : lock.json |> !nim_cfg |> | ./ diff --git a/lock.json b/lock.json index 52b2210..57e9901 100644 --- a/lock.json +++ b/lock.json @@ -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"}]} diff --git a/src/inotify_actor.nim b/src/inotify_actor.nim index 301d631..c95941e 100644 --- a/src/inotify_actor.nim +++ b/src/inotify_actor.nim @@ -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) diff --git a/src/json_socket_translator.nim b/src/json_socket_translator.nim index a1e8e79..45048e6 100644 --- a/src/json_socket_translator.nim +++ b/src/json_socket_translator.nim @@ -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, diff --git a/src/json_translator.nim b/src/json_translator.nim index 333ba0d..473997c 100644 --- a/src/json_translator.nim +++ b/src/json_translator.nim @@ -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)) diff --git a/src/msg.nim b/src/msg.nim index 70bacb7..94462e3 100644 --- a/src/msg.nim +++ b/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() diff --git a/src/net_mapper.nim b/src/net_mapper.nim index ea57eba..793c43b 100644 --- a/src/net_mapper.nim +++ b/src/net_mapper.nim @@ -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): diff --git a/src/syndex_card.nim b/src/syndex_card.nim index b03b8e4..d8a2691 100644 --- a/src/syndex_card.nim +++ b/src/syndex_card.nim @@ -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() diff --git a/src/syndump.nim b/src/syndump.nim index 17d0071..6f045c4 100644 --- a/src/syndump.nim +++ b/src/syndump.nim @@ -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() diff --git a/syndicate_utils.nimble b/syndicate_utils.nimble index 15c36a6..9ae12ae 100644 --- a/syndicate_utils.nimble +++ b/syndicate_utils.nimble @@ -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"