CLI — goga tool pybuggy endpoint pull¶
Downloads specs from git sources into local location directories.
goga tool pybuggy endpoint pull # pull all specs
goga tool pybuggy endpoint pull --spec client # only a single spec
goga tool pybuggy endpoint pull --ref v2 # a global ref for all pulled specs
goga tool pybuggy endpoint pull --spec client --ref v2
goga tool pybuggy endpoint pull --ref client:v1 --ref server:v2 # per-spec refs
goga tool pybuggy endpoint pull --ref v2 --ref server:v3 # global v2, server pinned to v3
Options¶
| Option | Meaning |
|---|---|
--spec <name> |
Narrow the pull to a single spec |
--ref <ref> |
Repeatable. Without : — a global ref for all selected specs; NAME:REF — a per-spec override |
The PYBUGGY_REF environment variable¶
--ref falls back to PYBUGGY_REF (bound via the click envvar=):
export PYBUGGY_REF=v2
goga tool pybuggy endpoint pull # all specs at ref v2 (if there is no --ref / git.ref)
PYBUGGY_REF may live in the shell environment or in .env (the root CLI group loads
.env — implicitly from the CWD, or via the global --env-file flag — before the command
runs). An explicit --ref (global or per-spec) fully overrides it.
Effective ref priority¶
Per spec, the first non-None value wins:
- per-spec override (
NAME:REF) - global
--ref(explicit, orPYBUGGY_REFas its default) git.reffrom the configuration- the remote default branch
A per-spec ref naming a spec absent from the configuration → ClickException. For specs
from different repositories, a global ref must exist in every repository — use per-spec
refs to vary them.
Behavior¶
- A spec with a
gitblock: shallow-clone ofgit.url(depth=1) at the effective ref into a temporary directory, then copygit.location→<project_root>/<location>(overwrite, idempotent). - A spec without
git: skipped (local-only) without an error. - The config is loaded from the fixed path
.goga/tools/pybuggy/config.yml. - Clone failures and missing repo paths →
click.ClickException(non-zero exit).
Preconditions¶
- The config is valid and located at the fixed path.
- Tokens are not embedded in clone URLs — rely on git credential helpers.
- The repository is treated as read-only (no commits, no pushes).