-
Notifications
You must be signed in to change notification settings - Fork 0
misc TODO #29
Description
In moving through the code to implement dependency handling there are a lot of things I've noticed could be improved or refactored. This is a place to keep track of miscillaneous TODOs until they make it into their own workstreams.
-
allow set names defined in atom.toml to be used in URIs as project specific aliases (general idea is that most of the time you should be able to use the most convenient shorthand of
<set_name_or_alias>::<atom>without any url information necessary).- we have all the atoms from all mirrors fetched up front before any modifications are made, so we could use this codepath and cache the results to eventually implement a nice autocomplete and search of available atoms in the defined sets, making the cli UX very nice.
-
refactor QueryStore to use an associated type for the transport and make it generic
-
create a special
NullRoottype to calculate atom ids with no repo and no remote counterpart (i.e. just on the local file-system) -
Change
StringtoCow<str>for identifier types in the id module, since they are passed around a lot -
Generalize sets: currently we technically have 3 implementations of an atom set already: one in a git remote (via the advertised remote refs), one in a git repository on local disk, and one on the local disk in no repository. With some minor refactoring it should be possible to implement all the functionality for all 3 sets at the trait level to ensure consistent behavior and minimize set specific application level logic.
One example of this that has already been implemented is how
gix::Repositorycurrently implementsInit::ekala_initto setup the ekala.toml at the repo level, while the same function called on agix::Remoteintializes the root ref to be advertised. We should inplement this for a newNullRootSetthat is basically just a set with no proper home (i.e. just freefloating on disk, not attached to any source repository).- implement many of the traits for working with an atom store for a file-system variant (i.e.
NullRootSet)
- implement many of the traits for working with an atom store for a file-system variant (i.e.