I got a bit further in prototyping things for my task runner, to the point where the current design sort of exists and makes sense. I think to get any further, I need to look over how other task runners are set up and work on a similar interface. At this point, I think I've got a small set of options that need to hook into some already-written core logic, but I'm probably missing something. (Actually, looking over Nox's command-line options, let's see... My runner has a concept of "targets" which should be specifiable, by command line or environment variable, with some degree of fuzzy matching; I can see the utility of backend overrides, but it's not a natural fit to how I'm writing it; I won't be allowing virtualenv reuse, or extra pythons, or customizing fail/abort behavior, or disallowing external programs. A lot of the functionality in Nox won't be core to my runner, so some of this functionality, if I change my mind, might end up being a tad awkward to add, but, eh. Anyway, configuration file. By command line argument or environment variable, path to file or to directory. There's a few more, but the core customization boils down to "where to load the file from, and which targets to try to reach". I'm thinking I'll work on the command-line first, and think about having a config object like Nox later.)
While I was messing around, I added a progress bar that, if I got everything coded up the way I think I do, will jump around a bunch and then make a bunch of questionable estimates.
I also updated the virtual tabletop stuff so the commands that manipulated cache files are now properly reconfigured.
Anyway, I've got some planning work to do here, but I don't want to try to convert this to code just yet. Fortunately, I have other stuff to work on afterwards. Anyway, I let this go way late again, so I should stop now.