I managed to prototype basically the idea I came up with last night, with a few concessions to mild laziness. I've confirmed that the code typechecks, and imports fine, but the majority of the logic lives inside closures, because for whatever reason I'm more comfortable sticking a mutable structure into a closure rather than a dataclass-like class. So, there's a bunch of tests to write, but they shouldn't be particularly hard tests.
Here's what I think is missing:
- Target listing (including formatting)
- Reading target list from the command line
- Calling into the runner code I just wrote
- Updating progress bar code from the prototype
- Extracting output
- Formatting output
- Determining desired return code
All of that comes down to just hooking up the existing components, some of which I've already researched. In any case, once I've proved out the core runner code, the hard bit is probably going to be getting the Cement integration right; I may cut a few corners at first.
Anyway, I want to sleep, but I also want to write down some unrelated ideas first, so here we go, wrapping up.