# SPDX-FileCopyrightText: ☭ Emery Hemingway # SPDX-License-Identifier: Unlicense import std/[json, osproc] import preserves import syndicate, syndicate/relays import ../schema/config import ../json_messages proc runChild(params: seq[string]): string = if params.len < 1: stderr.writeLine "not enough parameters" let cmd = params[0] args = params[1..params.high] try: result = execProcess(command=cmd, args=args, options={poUsePath}) except CatchableError as err: quit("execProcess failed: " & err.msg) if result == "": stderr.writeLine "no ouput" proc spawnJsonStdioTranslator*(turn: var Turn; root: Cap): Actor {.discardable.} = spawn("json-stdio-translator", turn) do (turn: var Turn): during(turn, root, ?:JsonTranslatorArguments) do (argv: seq[string], ds: Cap): var js = parseJson(runChild(argv)) message(turn, ds, RecvJson(data: js)) discard publish(turn, ds, RecvJson(data: js)) when isMainModule: runActor("main") do (turn: var Turn; root: Cap): connectStdio(turn, root) spawnJsonStdioTranslator(turn, root)