diff options
| author | Michael Williamson <mike@zwobble.org> | 2024-12-10 23:19:13 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2024-12-10 23:19:13 +0000 |
| commit | a3d55321537a29401fe487e040e3b6ebbd04fc3e (patch) | |
| tree | 0d1a79be109bd306befca288633b9b82ebb90723 /examples | |
| parent | 8db67e62cf763a109b8bf3488149b31630795158 (diff) | |
Add renumbering script for examples
Diffstat (limited to 'examples')
| -rwxr-xr-x | examples/renumber.py | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/examples/renumber.py b/examples/renumber.py new file mode 100755 index 00000000..28a262c7 --- /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}{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() |
