#!/usr/bin/env python3

import argparse
import subprocess
import tempfile
from pathlib import Path


def main():
    parser = argparse.ArgumentParser(description='Build a Wirely executable')
    parser.add_argument('--include-python', action='store_true',
                        help='Bundle Python in build/wirely-scie')
    args = parser.parse_args()

    repository_root = Path(__file__).resolve().parent.parent
    python = repository_root / 'venv' / 'bin' / 'python'
    build = repository_root / 'build'
    build.mkdir(exist_ok=True)
    command = [str(python), '-m', 'pex', '.[all]', '-c', 'wirely']

    if args.include_python:
        output = build / 'wirely-scie'
        with tempfile.TemporaryDirectory(prefix='wirely-scie-',
                                         dir=build) as directory:
            temporary_output = Path(directory) / output.name
            subprocess.run(command + ['--scie', 'eager', '--scie-only',
                                      '-o', str(temporary_output)],
                           cwd=repository_root, check=True)
            temporary_output.replace(output)
    else:
        subprocess.run(command + ['-o', str(build / 'wirely.pex')],
                       cwd=repository_root, check=True)


if __name__ == '__main__':
    main()
