blob: f219f4f76cc99e30afdf27b55c1122591fc0a79a [file]
#!/usr/bin/env fuchsia-vendored-python
# Copyright 2026 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.
"""
Life. Don't talk to me about life.
"""
import argparse
import subprocess
import sys
def main() -> int:
parser = argparse.ArgumentParser(argument_default=argparse.SUPPRESS)
parser.add_argument(
"--wrapper-run",
metavar="CMD",
action="append",
default=[],
help="Real program to invoke; repeat to add initial arguments",
)
parser.add_argument(
"--wrapper-join",
metavar="ARG",
action="append",
default=[],
help="Exact single tokens to join with the following token",
)
parser.add_argument(
"--wrapper-join-eq",
metavar="ARG",
action="append",
default=[],
help="Exact single tokens to join with '=' and the following token",
)
parser.add_argument(
"--wrapper-elide",
metavar="ARG",
action="append",
default=[],
help="Exact single tokens to elide",
)
args, cmd_args = parser.parse_known_args()
join_eq_set = set(args.wrapper_join_eq)
join_set = set(args.wrapper_join) | join_eq_set
elide_set = set(args.wrapper_elide)
def gen_args():
iter_args = iter(cmd_args)
for arg in iter_args:
if arg in join_set:
sep = "=" if arg in join_eq_set else ""
try:
arg += sep + next(iter_args)
except StopIteration:
pass
if arg not in elide_set:
yield arg
cmd = args.wrapper_run + [arg for arg in gen_args()]
try:
subprocess.run(cmd, check=True)
return 0
except FileNotFoundError:
print(f"{cmd[0]:r} not found!\n", sys.stderr)
result = 1
except subprocess.CalledProcessError as e:
result = e.returncode
print(f"Exit {result} from {cmd}\n", sys.stderr)
return result
if __name__ == "__main__":
sys.exit(main())