diff options
author | Lars Wirzenius <liw@liw.fi> | 2019-06-23 10:32:56 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2019-06-23 10:32:56 +0300 |
commit | 6c9e467a49a52147c4b098bf1aab0795e5eff659 (patch) | |
tree | 41437d6587fcba356a2c8c1568a8a14aaeb282b8 /ftt-codegen | |
parent | ed7843fe00dafdc44b60e613a1a9e33c598e843e (diff) | |
download | fable-poc-6c9e467a49a52147c4b098bf1aab0795e5eff659.tar.gz |
Change: ftt-codegen command line syntax
Filename other than markdown files are now inferred.
Diffstat (limited to 'ftt-codegen')
-rwxr-xr-x | ftt-codegen | 28 |
1 files 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)) |