blob: ed836fa5444b5b1fbd7ba4e893ae8a717649a631 [file] [log] [blame]
#!/usr/bin/env python3
import argparse
import json
import composer
def main():
parser = argparse.ArgumentParser(description='comppile compositions', prog='pycompose', usage='%(prog)s composition.py command [flags]')
parser.add_argument('file', metavar='composition', type=str, help='the composition')
parser.add_argument('-v', '--version', action='version', version='%(prog)s '+ composer.__version__)
parser.add_argument('--ast', action='store_true', help='output ast')
args = parser.parse_args()
filename = args.file
with open(filename, encoding='UTF-8') as f:
source = f.read()
main = '''exec(code + "\\n__out__['value'] = main()", {'__out__':__out__})'''
try:
out = {'value': None}
exec(main, {'code': source, '__out__': out})
composition = out['value']
composition = composition.compile()
if args.ast:
composition = composition['ast']
print(json.dumps(composition, default=composer.serialize, ensure_ascii=True))
except Exception as err:
print(err)
return
if __name__ == '__main__':
main()