# SPDX-FileCopyrightText: ☭ Emery Hemingway # SPDX-License-Identifier: Unlicense import std/[json, os, osproc] import preserves # , preserves/jsonhooks, import syndicate from preserves/jsonhooks import toPreserveHook import ./schema/config proc runChild: string = let params = commandLineParams() if params.len < 1: stderr.writeLine "not enough parameters" quit 1 let cmd = params[0] args = params[1..params.high] try: result = execProcess(command=cmd, args=args, options={poUsePath}) except: stderr.writeLine "execProcess failed" quit 1 if result == "": stderr.writeLine "no ouput" quit 1 proc translate(output: string): Assertion = var js: JsonNode try: js = parseJson output except: stderr.writeLine "parseJson failed" quit 1 js.toPreserveHook(Ref) runActor("main") do (root: Ref; turn: var Turn): connectStdio(root, turn) during(turn, root, ?JsonTranslatorArguments) do (ds: Ref): message(turn, ds, initRecord[Ref]("recv-json", runChild().translate()))