def main()

in src/pycompose/__main__.py [0:0]


def main():
    parser = argparse.ArgumentParser(description='compile 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