Documentation
¶
Overview ¶
Package cliupdate lets the CLI find a newer release and replace its own executable with it, reusing selfupgrade's download, checksum and signature code.
Index ¶
Constants ¶
View Source
const ( ActionUpToDate = "up-to-date" ActionWouldApply = "would-update" ActionUpdated = "updated" )
Actions reported in Result.Action.
Variables ¶
View Source
var ErrNotWritable = errors.New("cannot write next to the running executable")
ErrNotWritable means the executable's directory cannot take a staged file.
Functions ¶
func ExecutablePath ¶
ExecutablePath returns the running binary with symlinks resolved, so the swap replaces the real file and never a link.
Types ¶
type Hinter ¶
type Hinter struct {
Source Source
Current string
// Dir is the CLI's config directory, where the check result is cached.
Dir string
// IntervalDays of 0 or less disables the hint.
IntervalDays int
Now func() time.Time
}
Hinter prints a one-line notice at most once per Interval days.
type Options ¶
type Options struct {
Source Source
// Current is the running version, Target an explicit tag ("" means latest).
Current string
Target string
DryRun bool
// ExePath is the resolved path of the running executable.
ExePath string
// TUFCacheDir keeps Sigstore trust metadata between runs.
TUFCacheDir string
// Confirm runs after the plan is known and before any download; an error aborts.
Confirm func(current, target string) error
// Verify checks the signature over checksums.txt. Nil verifies in process,
// in require mode, so a release without a valid signature is never applied.
Verify func(ctx context.Context, checksumsPath, bundlePath string) (string, error)
}
Options configures one update run.
type Result ¶
type Result struct {
Action string `json:"action"`
Current string `json:"current"`
Target string `json:"target"`
Asset string `json:"asset"`
Path string `json:"path"`
Verification string `json:"verification,omitempty"`
}
Result describes what a run did or would do.
type Source ¶
type Source struct {
// Repo is "owner/name".
Repo string
// APIBase serves the releases listing, for example https://api.github.com.
APIBase string
// DownloadBase is the asset prefix, the tag is appended by the fetcher.
DownloadBase string
// Asset is the release asset for this OS and arch.
Asset string
Client *http.Client
// AllowHTTP permits plain http bases, for tests against a local server.
AllowHTTP bool
}
Source says where releases are published and which asset belongs to this build.
Click to show internal directories.
Click to hide internal directories.