nave scan
Enumerate a user's repositories and index tracked configuration files.
Usage
List a user's repos and cache the set of tracked files
Usage: nave scan [OPTIONS]
Options:
--user <USER> Override the GitHub username for this run
--no-interaction Don't prompt; fail fast if anything is missing
--prune Remove cached repo directories that no longer match the current user's repos or scan filters (forks, archived, missing tracked files, etc). Only effective on a full (non-incremental) run
-h, --help Print help
What it does
- Resolves the GitHub username (CLI flag > config >
gh status> prompt). - Calls
GET /users/{username}/repos, filtering forks and archived repos. - For each repo, walks the tree to identify files matching
tracked_paths. - Writes a metadata index to the cache at
~/.cache/nave/meta.toml.
Scope
- Only public repos. The
GET /users/{username}/reposendpoint returns public repos only, even with authentication. Private repos are out of scope. - No file bodies. Scan indexes file existence; nave pull fetches the bodies.
Incrementality
By default, scan only re-examines repos whose pushed_at is newer than the most
recent scan. To force a full rescan:
rm ~/.cache/nave/meta.toml
nave scan --prune
--prune evicts cached repos that no longer satisfy the filters (e.g. after
narrowing tracked_paths).
Persistence
If you pass --user and the config has no username set, the username is saved to
~/.config/nave.toml for next time. This is non-fatal on write failure.
Auth modes
| Mode | Rate limit | Source |
|---|---|---|
| Token | 5000 req/hr | NAVE_GITHUB_TOKEN |
gh CLI |
5000 req/hr | gh auth, probed if use_gh_cli |
| Anonymous | 60 req/hr | Fallback; slow on first scan |