From cdeb1ea507c9fd3afdeea048cec9fb79bcd7b072 Mon Sep 17 00:00:00 2001 From: Alessandro Di Federico Date: Thu, 17 Mar 2022 16:32:47 +0100 Subject: [PATCH] revng driver: introduce --dry-run --- python/revng/cli/commands_registry.py | 5 +++++ python/revng/cli/revng.py | 5 ++++- python/revng/cli/support.py | 4 ++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/python/revng/cli/commands_registry.py b/python/revng/cli/commands_registry.py index 99af52bd0..6eb8a7159 100644 --- a/python/revng/cli/commands_registry.py +++ b/python/revng/cli/commands_registry.py @@ -42,6 +42,9 @@ class CommandsRegistry: def __init__(self): parser = argparse.ArgumentParser(description="revng driver.") parser.add_argument("--version", action="store_true", help="Display version information.") + parser.add_argument( + "--dry-run", action="store_true", help="Do not execute any external command." + ) parser.add_argument("--verbose", action="store_true", help="Log all executed commands.") parser.add_argument( "--perf", action="store_true", help="Run programs under perf (for use with hotspot)." @@ -88,6 +91,8 @@ class CommandsRegistry: options.remaining_args = rest if not options.verbose: options.verbose = args.verbose + if not options.dry_run: + options.dry_run = args.dry_run if len(options.command_prefix) == 0: assert (args.gdb + args.lldb + args.valgrind + args.callgrind) <= 1 diff --git a/python/revng/cli/revng.py b/python/revng/cli/revng.py index 6cc8b4a9e..39da20431 100755 --- a/python/revng/cli/revng.py +++ b/python/revng/cli/revng.py @@ -16,6 +16,9 @@ def run_revng_command(arguments, options: Options): if options.verbose: sys.stderr.write("{}\n\n".format(" \\\n ".join([sys.argv[0]] + arguments))) + if options.dry_run: + return 0 + # Collect search prefixes prefixes = [] for arg, next_arg in zip(arguments, arguments[1:] + [""]): @@ -37,4 +40,4 @@ def run_revng_command(arguments, options: Options): def main(): - return run_revng_command(sys.argv[1:], Options(None, [], [], [], False)) + return run_revng_command(sys.argv[1:], Options(None, [], [], [], False, False)) diff --git a/python/revng/cli/support.py b/python/revng/cli/support.py index aba0becc8..450da8cb4 100644 --- a/python/revng/cli/support.py +++ b/python/revng/cli/support.py @@ -25,6 +25,7 @@ class Options: search_prefixes: List[str] command_prefix: List[str] verbose: bool + dry_run: bool def shlex_join(split_command): @@ -55,6 +56,9 @@ def run(command, options: Options): program_path = relative(command[0]) sys.stderr.write("{}\n\n".format(" \\\n ".join([program_path] + command[1:]))) + if options.dry_run: + return 0 + signal.signal(signal.SIGINT, signal.SIG_IGN) environment = dict(os.environ) p = subprocess.Popen(