nim-eth2-scenarios/fixtures_utils.nim

59 lines
1.8 KiB
Nim

# beacon_chain
# Copyright (c) 2018 Status Research & Development GmbH
# Licensed and distributed under either of
# * MIT license (license terms in the root directory or at http://opensource.org/licenses/MIT).
# * Apache v2 license (license terms in the root directory or at http://www.apache.org/licenses/LICENSE-2.0).
# at your option. This file may not be copied, modified, or distributed except according to those terms.
import
# Standard lib
json, streams,
# Dependencies
yaml.tojson
# #######################
# Yaml to JSON conversion
proc yamlToJson*(file: string): seq[JsonNode] =
try:
let fs = openFileStream(file)
defer: fs.close()
try:
result = fs.loadToJson()
except OverflowError as e:
echo "Overflow exception when parsing. Did you stringify 18446744073709551615 (-1)?"
echo "Current file: ", file
echo "Current position: ", fs.getPosition()
var line: string
discard fs.peekLine(line)
echo "Peek at the line: ", line
raise
except IOError:
echo "Exception when reading file: " & file
raise
when isMainModule:
# Do not forget to stringify FAR_EPOCH_SLOT = 18446744073709551615 (-1) in the YAML file
# And unstringify it in the produced JSON file
import os, typetraits
const
# TODO: consume the whole YAML test and not just the first test
DefaultYML = "json_tests/state/sanity-check_default-config_100-vals.yaml"
DefaultOutputPath = "json_tests/state/sanity-check_default-config_100-vals.json"
var fileName, outputPath: string
if paramCount() == 0:
fileName = DefaultYML
outputPath = DefaultOutputPath
elif paramCount() == 1:
fileName = paramStr(1)
outputPath = DefaultOutputPath
elif paramCount() >= 2:
fileName = paramStr(1)
outputPath = paramStr(2)
let jsonString = $fileName.yamlToJson[0]
outputPath.writeFile jsonString