# SPDX-FileCopyrightText: ☭ Emery Hemingway # SPDX-License-Identifier: Unlicense import std/[asyncdispatch, os, uri] import preserves, syndicate, syndicate/relays, syndicate/capabilities import ./protocol, ./common 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 publishUri(turn: var Turn; ds: Cap) = for arg in commandLineParams(): if fileExists(arg): message(turn, ds, Open(uri: protocol.Uri( scheme: "file", path: arg.absolutePath.toPreserve))) else: message(turn, ds, initRecord("open", arg.parseUri.toPreserve)) stop(turn) proc main = let step = envStep() discard bootDataspace("open") do (root: Cap; turn: var Turn): connect(turn, unixSocketPath(), step, publishUri) for i in 0..4: poll(20) # A hack to exit main()