From 6e7d4525fdb1dea1cb767a7208aafc1f00eda9d0 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 2 Jul 2026 15:47:15 +0100 Subject: Renumber enum example to be earlier, with other types --- examples/renumber.py | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100755 examples/renumber.py (limited to 'examples/renumber.py') diff --git a/examples/renumber.py b/examples/renumber.py new file mode 100755 index 0000000..747bf6e --- /dev/null +++ b/examples/renumber.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python3 + +import argparse +import os +import re + + +def _main(): + example_dir = os.path.dirname(__file__) + + args = _parse_args() + + renames = [] + + for name in sorted(os.listdir(example_dir)): + path = os.path.join(example_dir, name) + match = re.match("([0-9]+)(-.*)", name) + + if os.path.isdir(path) and match is not None: + old_number = int(match[1]) + is_in_range = ( + (args.from_number is None or args.from_number <= old_number) and + (args.to_number is None or old_number <= args.to_number) + ) + if is_in_range: + new_number = old_number + args.delta + new_name = f"{new_number:02}{match[2]}" + new_path = os.path.join(example_dir, new_name) + print(f"{name} -> {new_name}") + + if os.path.exists(new_path): + raise ValueError("destination already exists") + + renames.append((path, new_path)) + + for old_path, new_path in renames: + os.rename(old_path, new_path) + + +def _parse_args(): + parser = argparse.ArgumentParser() + + parser.add_argument("--delta", required=True, type=int) + parser.add_argument("--from", required=False, type=int, dest="from_number") + parser.add_argument("--to", required=False, type=int, dest="to_number") + + return parser.parse_args() + + +if __name__ == "__main__": + _main() -- cgit v1.2.3