star repo

in progress

in progress landing now, in phase 2 of the roadmap.

star repo add <remote> [--name <namespace>]

Clone the remote into star’s cache, record the remote and its current HEAD commit as the pin, and derive the namespace from the URL (or take --name).

star repo add https://git.jingus.dev/jingus/starters
star repo add git@github.com:acme/templates.git --name acme/templates

On success: namespace <short-commit> added.

The namespace is validated (#-free, no .., not absolute), and collisions are handled with advice, not shrugs:

  • Derived namespace already configured with the same remote → suggested: star repo update <ns>.
  • Same namespace, different remote → suggested: pass --name.

star repo update [<namespace>] [-f <file>] [--force]

Move pins deliberately.

star repo update jingus/starters   # one repository, to remote HEAD
star repo update                   # every repository in the config
star repo update -f ./star.config.toml   # operate on a specific config file

An update resolves remote HEAD (git ls-remote), fetches the cached clone so the new pin is locally resolvable, rewrites the commit field, and saves:

star repo update
jingus/starters  abc1234 → def5678
star/starters    ae3b135 (unchanged)

-f/--file retargets that invocation to an arbitrary config file — for people whose config is generated (nix, dotfiles managers) and edited in a checkout.

star repo list [--templates]

One line per repository — namespace short-commit remote:

star repo list
jingus/starters  ae3b135  https://git.jingus.dev/jingus/starters
star/starters    7f2c9ab  https://git.jingus.dev/star/starters

With --templates, star ensures each clone is at its pin (fetching if stale) and prints every discovered template as namespace#name — description. An empty config prints the first-run hint instead.

star repo remove <namespace>

Drop the config entry and delete the cached clone. The cache is pure — nothing else references it, so removal is complete and safe.