diff --git a/tools/build b/tools/build index 1ad4124..63a02d6 100755 --- a/tools/build +++ b/tools/build @@ -1,36 +1,58 @@ -#!/usr/bin/env bash +#!/usr/bin/env python3 -## functions - -function syntaxerror -{ - echo "SYNTAX: build []" > /dev/stderr - exit 1 -} +import typing as _typing +import sys as _sys +import os as _os +import argparse as _argparse -## consts +def main(): + ## consts + dir_source = "source" + + ## args + argument_parser = _argparse.ArgumentParser() + argument_parser.add_argument( + "-r", + "--revision", + type = str, + dest = "revision", + default = None, + ) + argument_parser.add_argument( + "-f", + "--format", + type = str, + dest = "format", + default = "sqlite", + ) + args = argument_parser.parse_args() + + ## vars + revisions = sorted( + list( + map( + lambda name: name.split(".sindri.json")[0], + _os.listdir(_os.path.join(dir_source, "structure")) + ) + ) + ) + revision = (args.revision or revisions[-1]) + + ## exec + _sys.stderr.write("-- data\n") + _os.system( + "cat %s/structure/%s.sindri.json | tools/sindri/sindri --format='database:%s'" + % ( + dir_source, + revision, + args.format, + ) + ) + _sys.stderr.write("-- meta\n") + _sys.stdout.write("DROP TABLE IF EXISTS _meta;\n") + _sys.stdout.write("CREATE TABLE _meta(revision VARCHAR(15) NOT NULL);\n") + _sys.stdout.write("INSERT INTO _meta(revision) VALUES ('%s');\n" % revision) + -dir_source="source" -dir_build="build" - - -## args - -if [ $# -ge 1 ] ; then revision=$1 && shift ; else syntaxerror ; fi -if [ $# -ge 1 ] ; then format=$1 && shift ; else format="sqlite" ; fi - - -## exec - -mkdir -p ${dir_build} - -echo "-- data" -cat ${dir_source}/structure/${revision}.sindri.json | tools/sindri/sindri -f database:${format} -echo "" - -echo "-- meta" -echo "DROP TABLE IF EXISTS _meta;" -echo "CREATE TABLE _meta(revision VARCHAR(15) NOT NULL);" -echo "INSERT INTO _meta(revision) VALUES ('${revision}');" -echo "" +main()