blob: 0242d4b29603dfaa2d0897bf20b760e3649598e9 [file] [log] [blame]
#!/usr/bin/env python3
import argparse
import json
import composer
# from composer import __version__
def main():
parser = argparse.ArgumentParser(description='process 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='store_true', help='output the composer version')
parser.add_argument('--ast', action='store_true', help='output ast')
args = parser.parse_args()
if args.version:
print(composer.__version__)
return
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 = str(composition['ast'])
else:
composition['ast'] = str(composition['ast'])
composition['composition'] = str(composition['composition'])
print(composition)
except Exception as err:
print(err)
return
if __name__ == '__main__':
main()