preserves-nim/src/preserves/private/preserves_encode.nim

37 lines
1.0 KiB
Nim
Raw Normal View History

2021-09-08 09:11:54 +00:00
# SPDX-FileCopyrightText: 2021 ☭ Emery Hemingway
# SPDX-License-Identifier: Unlicense
import std/[json, options, streams]
from std/os import extractFilename, paramStr
import ../../preserves, ../../preserves/jsonhooks, ../../preserves/parse
when isMainModule:
let command = extractFilename(paramStr 0)
try:
case command:
of "preserves_encode":
let pr = stdin.readAll.parsePreserves
stdout.newFileStream.write(pr)
of "preserves_decode":
let pr = stdin.readAll.decodePreserves
stdout.writeLine($pr)
of "preserves_from_json":
let
js = stdin.newFileStream.parseJson
pr = js.toPreserve
stdout.newFileStream.write(pr)
of "preserves_to_json":
let
pr = stdin.readAll.decodePreserves
js = preserveTo(pr, JsonNode)
if js.isSome:
stdout.writeLine(get js)
else:
quit("Preserves not convertable to JSON")
else:
quit("no behavior defined for " & command)
except:
let msg = getCurrentExceptionMsg()
quit(msg)