Coding 2023-04-28
Okay, I'm trying to reconsider how I'm handling the passing of requirements relevant to a command that needs a module argument passed. I'm getting a sense that there's something a little iffy in how all of these components fit together, but I think I've figured out what I need to get unstuck for now.
Basically, I need to make it possible to instantiate and combine placeholder installers, but not to resolve with them. Specifically, a placeholder should contain an instance of the corresponding installer type. Then, the _command.Metadata needs to retrieve the nested installer under the placeholder label, and merge it with the value under the new key, if any.
After that, my plan is to rework the helper code. The point of the helper code is to define builder classes that get out of the way as soon as possible, by constructing instances of common classes. There are two things that need to be done. One is to convert a property to a method, and change a field on the class to an argument to that method. The other is to add a distinct method that takes different argument types.
Let's try doing all of this, and see where I get tripped up.
...
Hm. Looks like I need some way of knowing which labels are getting filled in.
...
Okay, so this function implementation is not clean, per se, because I'm running into some issues where some part of my thought process wanted to pretend I had dependent types, and that's simply not the case...
...
Okay, that's part of it done. Let's make sure I didn't introduce any new typing issues. ... I have introduced a new typing issue. But I dealt with it. I just needed to make the updated function even grodier.
Anyway, now I just have to... Hm. Hm. I'm going to need to think about this some more. There's a helper method that assumes it's getting an executable, but if I just change how that helper is put together a little...
This should produce so many typing issues...
I'm paring down the typing issues, but I don't feel like putting in the work to deal with this last set right now. Tomorrow, or over the weekend maybe. And once I get this stuff to pass, I need to make a thorough check of whether the helper functions are actually helping.
Actually, I can see one thing I'd like to have: a map method on PathWith. That should alleviate a bunch of heartburn with these changes.
Okay, that was quick to write. I'll make use of it later, and finish up the changes to the helpers.
For now, I really should wind down.
Good night.