2023-05-17 20:05:33 +00:00
|
|
|
# SPDX-FileCopyrightText: ☭ Emery Hemingway
|
2022-06-09 17:24:02 +00:00
|
|
|
# SPDX-License-Identifier: Unlicense
|
|
|
|
|
2023-05-17 20:05:33 +00:00
|
|
|
import std/[asyncdispatch, sequtils, os]
|
2023-10-05 17:05:06 +00:00
|
|
|
import preserves, syndicate, syndicate/[capabilities, relays]
|
2022-06-09 17:24:02 +00:00
|
|
|
|
2023-05-18 11:41:37 +00:00
|
|
|
proc unixSocketPath: Unix =
|
|
|
|
result.path = getEnv("SYNDICATE_SOCK")
|
|
|
|
if result.path == "":
|
|
|
|
result.path = getEnv("XDG_RUNTIME_DIR", "/run/user/1000") / "dataspace"
|
2022-06-09 17:24:02 +00:00
|
|
|
|
2023-08-16 09:57:14 +00:00
|
|
|
proc envStep: Assertion =
|
2023-05-18 17:08:59 +00:00
|
|
|
var s = getEnv("SYNDICATE_STEP")
|
2023-08-16 09:57:14 +00:00
|
|
|
if s != "": parsePreserves(s, Cap)
|
|
|
|
else: capabilities.mint().toPreserve(Cap)
|
|
|
|
|
2023-05-18 17:08:59 +00:00
|
|
|
|
2023-05-17 20:05:33 +00:00
|
|
|
proc main =
|
2023-08-16 09:57:14 +00:00
|
|
|
let
|
|
|
|
step = envStep()
|
|
|
|
label = getAppFilename().extractFilename
|
|
|
|
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))
|
2022-06-09 17:24:02 +00:00
|
|
|
|
2023-07-26 10:45:41 +00:00
|
|
|
for _ in 1..4: poll()
|
|
|
|
quit()
|
2023-05-17 20:05:33 +00:00
|
|
|
|
|
|
|
main()
|