#!/usr/bin/env fuchsia-vendored-python
# Copyright 2021 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import argparse
import os
import subprocess


def main() -> None:
    parser = argparse.ArgumentParser(
        "Execute a python script as an action with a custom environment"
    )

    parser.add_argument(
        "--module_path",
        help="List of python module search paths in standard PATH notation",
    )

    parser.add_argument(
        "--script",
        help="Path to the script to run",
        required=True,
    )

    parser.add_argument(
        "args", help="List of arguments for the script", nargs="*", default=[]
    )

    args = parser.parse_args()

    cmd_env = os.environ
    if args.module_path is not None:
        # Add the module lookup path to the environment for the script
        cmd_env["PYTHONPATH"] = args.module_path

        # Tell the interpreter not write out cached bytecode for modules
        cmd_env["PYTHONDONTWRITEBYTECODE"] = "true"

    cmd = [args.script]
    cmd.extend(args.args)

    subprocess.run(cmd, env=cmd_env, check=True)


if __name__ == "__main__":
    main()
