Blob Blame History Raw
import argparse
import traceback
import sys
from pathlib import Path

from _pyproject_hooks import BuildBackend, BackendHookError, parse_config_settings_args


def build_wheel(*, wheeldir, config_settings=None):
    wheeldir.mkdir(parents=True, exist_ok=True)
    BuildBackend.from_directory().get_caller().build_wheel(wheeldir, config_settings)


def parse_args(argv=None):
    parser = argparse.ArgumentParser(prog='%pyproject_wheel')
    parser.add_argument('wheeldir', help=argparse.SUPPRESS, type=Path)
    parser.add_argument(
        '-C',
        dest='config_settings',
        action='append',
        help='Configuration settings to pass to the PEP 517 backend',
    )
    args = parser.parse_args(argv)
    args.config_settings = parse_config_settings_args(args.config_settings)
    return args


if __name__ == '__main__':
    try:
        build_wheel(**vars(parse_args()))
    except BackendHookError as exc:
        print(exc, file=sys.stderr)
        sys.exit(exc.returncode)
    except Exception:
        traceback.print_exc()
        sys.exit(1)
    else:
        sys.exit(0)