Coding 2021-11-06
So, I did a certain amount of the work for the second Fragment API prototype in my head. A lot of it. I did a lot of the work in my head. This is a rough habit I've picked up from trying to do math quickly back in school, and it doesn't scale for complicated stuff, but the interfaces I have in mind are pretty simple, so I'm getting away with it. Currently.
What I'm going for right now is to divide command arguments into "exclusive" (Output) and "everything else". I might be missing a field... yes, I think I am. It was quick enough to add it.
Basically, the Fragment and Option classes track arguments, environment variables, extra IO data, a set of install requirements, additional segments to add to the root directory of the environment installation, and, in the case of Fragment, an optional sequence of additional arguments to invoke another Fragment as a module.
The goal here is to take everything that could need to be associated with a command execution, and have a field for it, so there doesn't need to be special casing for anything in the motrfile itself, and the helpers hopefully properly handle dependencies, because the current system is... not smart. It just does what you tell it, and I haven't thought of a way to have it provide visibility into whether what you tell it "makes sense".
Anyway, hopefully I'll get more done with this tomorrow. I don't want to drag this entry out any longer.
Good night.