From 6c9e467a49a52147c4b098bf1aab0795e5eff659 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sun, 23 Jun 2019 10:32:56 +0300 Subject: Change: ftt-codegen command line syntax Filename other than markdown files are now inferred. --- ftt-codegen | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/ftt-codegen b/ftt-codegen index ed0b55b..dcf9ace 100755 --- a/ftt-codegen +++ b/ftt-codegen @@ -2,6 +2,7 @@ import copy import json +import os import re import sys @@ -11,6 +12,7 @@ import yaml hardcoded = ''' import fable, json, logging +from %s import * run = fable.Run() ''' @@ -123,29 +125,33 @@ def codegen(f, step, bindings): f.write(' logging.debug("calling {} with args %s", args)\n'.format(function)) f.write(' {}(run.get_context(), **args)\n\n'.format(function)) + +def infer_basename(markdowns): + root, ext = os.path.splitext(markdowns[0]) + if ext not in ['.md', '.mdwn']: + sys.exit('Input filenames must end in .md or .mdwn') + return root + + def debug(msg): if False: sys.stderr.write('DEBUG: {}\n'.format(msg)) sys.stderr.flush() -debug('reading bindings') -bindings = yaml.safe_load(open(sys.argv[1])) +markdowns = sys.argv[1:] +basename = infer_basename(markdowns) +text = ''.join(open(filename).read() for filename in markdowns) -debug('reading prelude') -prelude = open(sys.argv[2]).read() -sys.stdout.write(hardcoded) -sys.stdout.write(prelude) -sys.stdout.write('\n') +with open(basename + '.yaml') as f: + bindings = yaml.safe_load(f) -debug('reading inputs') -text = ''.join(open(filename).read() for filename in sys.argv[3:]) +funcs = os.path.basename(basename) # drop directories +sys.stdout.write(hardcoded % funcs) -debug('parse') parser = CommonMark.DocParser() ast = parser.parse(text) -debug('output') fable = Fable() walk(ast, lambda o: collect(fable, o)) -- cgit v1.2.1