Directories
ยถ
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
hoist
command
Command hoist is a terminal UI that promotes container images between environments in an Argo CD GitOps repository and follows the change through PR, merge and rollout.
|
Command hoist is a terminal UI that promotes container images between environments in an Argo CD GitOps repository and follows the change through PR, merge and rollout. |
|
internal
|
|
|
app
Package app is the root Bubble Tea model for the hoist TUI.
|
Package app is the root Bubble Tea model for the hoist TUI. |
|
app/deploy
Package deploy is the confirm screen for writing one named image into one env โ the "image bump" half of hoist's problem statement, reached with d on the matrix and a tag chosen in internal/app/tags.
|
Package deploy is the confirm screen for writing one named image into one env โ the "image bump" half of hoist's problem statement, reached with d on the matrix and a tag chosen in internal/app/tags. |
|
app/flight
Package flight is the flight screen: shown once a promotion starts driving through engine.AllSteps (branch, commit, push, PR, CI green, approved, merged, then (M5) Argo refresh, Argo sync, rollout), it lists every step with a glyph for its current state, the active step's own human detail text, a stopwatch since the promotion started, and a togglable scrollback of PromotionState.History.
|
Package flight is the flight screen: shown once a promotion starts driving through engine.AllSteps (branch, commit, push, PR, CI green, approved, merged, then (M5) Argo refresh, Argo sync, rollout), it lists every step with a glyph for its current state, the active step's own human detail text, a stopwatch since the promotion started, and a togglable scrollback of PromotionState.History. |
|
app/history
Package history holds the function types through which screens ask about commit history and migration deltas โ types only, no Bubble Tea, no adaptor construction.
|
Package history holds the function types through which screens ask about commit history and migration deltas โ types only, no Bubble Tea, no adaptor construction. |
|
app/matrix
Package matrix is the env ร family screen: one row per family, one column per env, the family's image tag in each cell with its state spelled out โ pinned, unpinned, split, external, drifted โ as a word an operator can read without a legend.
|
Package matrix is the env ร family screen: one row per family, one column per env, the family's image tag in each cell with its state spelled out โ pinned, unpinned, split, external, drifted โ as a word an operator can read without a legend. |
|
app/plan
Package plan is the plan/confirm screen: it runs discovery + digest resolution + gitops.BuildPlan for one source/target env pair, shows a tickable list of image repos on the left and, on the right, what the promotion ships for the repo under the cursor โ the commits between what the target declares and what the source resolved to, and the migrations among them (M10, #85 screen 04/12) โ with the unified diff one key away.
|
Package plan is the plan/confirm screen: it runs discovery + digest resolution + gitops.BuildPlan for one source/target env pair, shows a tickable list of image repos on the left and, on the right, what the promotion ships for the repo under the cursor โ the commits between what the target declares and what the source resolved to, and the migrations among them (M10, #85 screen 04/12) โ with the unified diff one key away. |
|
app/restart
Package restart is the matrix's R key: the screen that shows what a restart would roll, takes the confirmation, and follows the rollout.
|
Package restart is the matrix's R key: the screen that shows what a restart would roll, takes the confirmation, and follows the rollout. |
|
app/tags
Package tags is the tag-picker screen: given one image repo, it lists the registry's own tags and, once each row's metadata loads, its created time and digest โ sorted per AGENTS.md's M6 brief invariant 3 (prefer the app repo's own git tags for ordering when the image repo is mapped; fall back to the registry's own Created metadata otherwise).
|
Package tags is the tag-picker screen: given one image repo, it lists the registry's own tags and, once each row's metadata loads, its created time and digest โ sorted per AGENTS.md's M6 brief invariant 3 (prefer the app repo's own git tags for ordering when the image repo is mapped; fall back to the registry's own Created metadata otherwise). |
|
config
Package config loads hoist's config file: $XDG_CONFIG_HOME/hoist/config.yaml, or ~/.config/hoist/config.yaml when XDG_CONFIG_HOME is unset โ the same rule on every platform, so the docs stay one sentence โ overridable with --config <path>.
|
Package config loads hoist's config file: $XDG_CONFIG_HOME/hoist/config.yaml, or ~/.config/hoist/config.yaml when XDG_CONFIG_HOME is unset โ the same rule on every platform, so the docs stay one sentence โ overridable with --config <path>. |
|
engine
Package engine drives one promotion's four steps โ branch, commit, push, PR โ to completion, re-observing the remote before every action (AGENTS.md ยง4.1: "the world is the state").
|
Package engine drives one promotion's four steps โ branch, commit, push, PR โ to completion, re-observing the remote before every action (AGENTS.md ยง4.1: "the world is the state"). |
|
restart
Package restart is the shared core of `hoist restart` and the matrix's R key: what a restart targets, what is worth warning about before it runs, how the write is made safely, and how the rollout that follows is observed.
|
Package restart is the shared core of `hoist restart` and the matrix's R key: what a restart targets, what is worth warning about before it runs, how the write is made safely, and how the rollout that follows is observed. |
|
ui
Package ui holds what every hoist screen shares: one Styles palette built from a light/dark flag, the frame and pane chrome every screen is drawn in (frame.go), the dialog compositor (dialog.go), relative-time wording (time.go) and the status-bar line helper.
|
Package ui holds what every hoist screen shares: one Styles palette built from a light/dark flag, the frame and pane chrome every screen is drawn in (frame.go), the dialog compositor (dialog.go), relative-time wording (time.go) and the status-bar line helper. |
|
ui/uitest
Package uitest is the one harness every screen's tests render through (AGENTS.md ยง4.8, M10): a golden comparison at a stated terminal size that also asserts the shape a terminal would actually show โ exactly height lines, none wider than width โ and a way to drive a screen with real keypresses, so a test can never pass by setting the field a key would have set.
|
Package uitest is the one harness every screen's tests render through (AGENTS.md ยง4.8, M10): a golden comparison at a stated terminal size that also asserts the shape a terminal would actually show โ exactly height lines, none wider than width โ and a way to drive a screen with real keypresses, so a test can never pass by setting the field a key would have set. |
|
pkg
|
|
|
argo
Package argo drives Argo CD entirely through the Kubernetes API: the dynamic client against the Application custom resource (argoproj.io/v1alpha1), never Argo's own REST/gRPC server and never an Argo API token (AGENTS.md ยง4.7, docs/repo-map.md's Kubernetes API row).
|
Package argo drives Argo CD entirely through the Kubernetes API: the dynamic client against the Application custom resource (argoproj.io/v1alpha1), never Argo's own REST/gRPC server and never an Argo API token (AGENTS.md ยง4.7, docs/repo-map.md's Kubernetes API row). |
|
forge
Package forge is the code-host boundary (GitHub today; AGENTS.md ยง11 leaves GitLab as an interface with no adaptor until a GitLab repo needs one).
|
Package forge is the code-host boundary (GitHub today; AGENTS.md ยง11 leaves GitLab as an interface with no adaptor until a GitLab repo needs one). |
|
forge/github
Package github implements pkg/forge.Forge against the real GitHub REST API, using github.com/cli/go-gh/v2 (AGENTS.md ยง4.7's one sanctioned new dependency for M3 โ not google/go-github, not a hand-rolled REST client, not the full gh CLI as a library).
|
Package github implements pkg/forge.Forge against the real GitHub REST API, using github.com/cli/go-gh/v2 (AGENTS.md ยง4.7's one sanctioned new dependency for M3 โ not google/go-github, not a hand-rolled REST client, not the full gh CLI as a library). |
|
git
Package git drives the git binary โ never go-git (AGENTS.md ยง4.6) โ so that a commit made on the user's behalf inherits the user's own signing configuration (gpg.format=ssh, user.signingkey, 1Password's gpg.ssh.program, includeIf) exactly as if the user had typed the command themselves.
|
Package git drives the git binary โ never go-git (AGENTS.md ยง4.6) โ so that a commit made on the user's behalf inherits the user's own signing configuration (gpg.format=ssh, user.signingkey, 1Password's gpg.ssh.program, includeIf) exactly as if the user had typed the command themselves. |
|
gitops
Package gitops reads an Argo CD GitOps repository and plans, applies and verifies byte-minimal image promotions between its environments.
|
Package gitops reads an Argo CD GitOps repository and plans, applies and verifies byte-minimal image promotions between its environments. |
|
image
Package image parses, prints and identifies container image references.
|
Package image parses, prints and identifies container image references. |
|
k8s
Package k8s reads what a namespace is running and, opt-in, one image pull secret.
|
Package k8s reads what a namespace is running and, opt-in, one image pull secret. |
|
migrate
Package migrate answers the question the confirm screens lead with: between the build an env is running and the build about to be written into it, which commits ship, and does any of them migrate the database (R-005 in docs/repo-map.md โ on the target repo every Application auto-syncs and the app entrypoint runs db:prepare, so a merge can migrate production as a side effect).
|
Package migrate answers the question the confirm screens lead with: between the build an env is running and the build about to be written into it, which commits ship, and does any of them migrate the database (R-005 in docs/repo-map.md โ on the target repo every Application auto-syncs and the app entrypoint runs db:prepare, so a merge can migrate production as a side effect). |
|
redact
Package redact turns transport errors into messages that carry no address and no secret.
|
Package redact turns transport errors into messages that carry no address and no secret. |
|
registry
Package registry resolves tags to digests and lists tags, behind an ordered, explicit credential chain.
|
Package registry resolves tags to digests and lists tags, behind an ordered, explicit credential chain. |
|
resolve
Package resolve turns the source env's image occurrences into the pinned references a promotion writes, from what the env is running first, then its manifests, then the registry โ never a guess (AGENTS.md ยง4.2, principle 3).
|
Package resolve turns the source env's image occurrences into the pinned references a promotion writes, from what the env is running first, then its manifests, then the registry โ never a guess (AGENTS.md ยง4.2, principle 3). |
|
rollout
Package rollout reads Deployment rollout completeness, and reports current Job/CronJob state, through the typed client-go clientset (k8s.io/api/apps/v1, k8s.io/api/batch/v1) โ no dynamic client needed, since these are stable, already-vendored Go types โ following the same client-go adaptor shape pkg/k8s established (cluster.go/kubeconfig.go/fake.go): a thin wrapper over kubernetes.Interface, redaction at every error boundary, a fake clientset for tests.
|
Package rollout reads Deployment rollout completeness, and reports current Job/CronJob state, through the typed client-go clientset (k8s.io/api/apps/v1, k8s.io/api/batch/v1) โ no dynamic client needed, since these are stable, already-vendored Go types โ following the same client-go adaptor shape pkg/k8s established (cluster.go/kubeconfig.go/fake.go): a thin wrapper over kubernetes.Interface, redaction at every error boundary, a fake clientset for tests. |
Click to show internal directories.
Click to hide internal directories.