| #!/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() |