Skip to content
This repository was archived by the owner on Feb 25, 2026. It is now read-only.
This repository was archived by the owner on Feb 25, 2026. It is now read-only.

misc TODO #29

@nrdxp

Description

@nrdxp

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 NullRoot type to calculate atom ids with no repo and no remote counterpart (i.e. just on the local file-system)

  • Change String to Cow<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::Repository currently implements Init::ekala_init to setup the ekala.toml at the repo level, while the same function called on a gix::Remote intializes the root ref to be advertised. We should inplement this for a new NullRootSet that 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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions