Coding 2022-11-20

Tags:
By Max Woerner Chase

Unfortunately, I didn't get started until late today. Fortunately, I have a bit of time. So, I'm going to try to lay out what I need to make a ParametricCommand where I don't need to think about how the pip-related stuff works.

The basic ParametricCommand comes from calling ParametricCommandMeta.with_adaptor(). The argument is a ValueAdaptor[PathWith[EnvironmentArgs]]. The calling object is a ParametricCommandMeta[TEntry, TProgram, TInstallerArgs]. So, to make a version of this with test hooks, I need to pick an Entry type, subclass Program, and create custom implementations of InstallerArgs and EnvironmentArgs. (It seems slightly unfortunate that the types of InstallerArgs and EnvironmentArgs implementations don't interrelate in any sensible way, but I don't think I can deal with that without higher-kinded types or a deep redesign, which may be called for.)

There's a bit more to be done around this stuff, but it should be really easy to make basic implementations, since I don't think the implementations need to "actually do anything".

In any case, I've run out of time for now, so I'm going to wrap up for now, and try to work on this in the coming days and weeks.

Good night.