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