#!/usr/bin/env python3 """Keep verify's Rust steps for any change beyond documentation.""" import argparse import subprocess def needs_rust(paths): return any(not (path.startswith("docs/") or path.endswith(".md")) for path in paths) def changed_paths(base, head): # Renames must include deletions too: moving source into docs still affects Rust. output = subprocess.check_output([ "git", "diff", "--name-only", "--no-renames", "-z", f"{base}...{head}", "--", ]) return [path for path in output.decode("utf-8").split("\0") if path] if __name__ == "__main__": parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("base") parser.add_argument("head") args = parser.parse_args() print(f"required={str(needs_rust(changed_paths(args.base, args.head))).lower()}")