Documentation
¶
Index ¶
- func DisableLog()
- func EnableLog()
- func UncompressCommand(src io.Reader, url, cmd string) (io.Reader, error)
- func UpdateTo(assetURL, cmdPath string) error
- type Config
- type ECDSAValidator
- type Release
- type SHA2Validator
- type Updater
- func (up *Updater) DetectLatest(slug string) (release *Release, found bool, err error)
- func (up *Updater) DetectVersion(slug string, version string) (release *Release, found bool, err error)
- func (up *Updater) UpdateCommand(cmdPath string, current semver.Version, slug string) (*Release, error)
- func (up *Updater) UpdateSelf(current semver.Version, slug string) (*Release, error)
- func (up *Updater) UpdateTo(rel *Release, cmdPath string) error
- type Validator
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func UncompressCommand ¶
UncompressCommand uncompresses the given source. Archive and compression format is automatically detected from 'url' parameter, which represents the URL of asset. This returns a reader for the uncompressed command given by 'cmd'. '.zip', '.tar.gz', '.tar.xz', '.tgz', '.gz' and '.xz' are supported.
func UpdateTo ¶
UpdateTo downloads an executable from assetURL and replace the current binary with the downloaded one. This function is low-level API to update the binary. Because it does not use GitHub API and downloads asset directly from the URL via HTTP, this function is not available to update a release for private repositories. cmdPath is a file path to command executable.
Types ¶
type Config ¶
type Config struct {
// APIToken represents GitHub API token. If it's not empty, it will be used for authentication of GitHub API
APIToken string
// EnterpriseBaseURL is a base URL of GitHub API. If you want to use this library with GitHub Enterprise,
// please set "https://{your-organization-address}/api/v3/" to this field.
EnterpriseBaseURL string
// EnterpriseUploadURL is a URL to upload stuffs to GitHub Enterprise instance. This is often the same as an API base URL.
// So if this field is not set and EnterpriseBaseURL is set, EnterpriseBaseURL is also set to this field.
EnterpriseUploadURL string
// Validator represents types which enable additional validation of downloaded release.
Validator Validator
// Filters are regexp used to filter on specific assets for releases with multiple assets.
// An asset is selected if it matches any of those, in addition to the regular tag, os, arch, extensions.
// Please make sure that your filter(s) uniquely match an asset.
Filters []string
}
Config represents the configuration of self-update.
type ECDSAValidator ¶
ECDSAValidator specifies a ECDSA validator for additional file validation before updating.
func (*ECDSAValidator) Suffix ¶
func (v *ECDSAValidator) Suffix() string
Suffix returns the suffix for ECDSA validation.
func (*ECDSAValidator) Validate ¶
func (v *ECDSAValidator) Validate(input, signature []byte) error
Validate validates the ECDSA signature the release against the signature contained in an additional asset file. additional asset file.
type Release ¶
type Release struct {
// Version is the version of the release
Version semver.Version
// AssetURL is a URL to the uploaded file for the release
AssetURL string
// AssetSize represents the size of asset in bytes
AssetByteSize int
// AssetID is the ID of the asset on GitHub
AssetID int64
// ValidationAssetID is the ID of additional validaton asset on GitHub
ValidationAssetID int64
// URL is a URL to release page for browsing
URL string
// ReleaseNotes is a release notes of the release
ReleaseNotes string
// Name represents a name of the release
Name string
// PublishedAt is the time when the release was published
PublishedAt *time.Time
// RepoOwner is the owner of the repository of the release
RepoOwner string
// RepoName is the name of the repository of the release
RepoName string
}
Release represents a release asset for current OS and arch.
func DetectLatest ¶
DetectLatest detects the latest release of the slug (owner/repo). This function is a shortcut version of updater.DetectLatest() method.
func DetectVersion ¶
DetectVersion detects the given release of the slug (owner/repo) from its version.
func UpdateCommand ¶
UpdateCommand updates a given command binary to the latest version. This function is a shortcut version of updater.UpdateCommand.
type SHA2Validator ¶
type SHA2Validator struct {
}
SHA2Validator specifies a SHA256 validator for additional file validation before updating.
func (*SHA2Validator) Suffix ¶
func (v *SHA2Validator) Suffix() string
Suffix returns the suffix for SHA2 validation.
func (*SHA2Validator) Validate ¶
func (v *SHA2Validator) Validate(release, asset []byte) error
Validate validates the SHA256 sum of the release against the contents of an additional asset file.
type Updater ¶
type Updater struct {
// contains filtered or unexported fields
}
Updater is responsible for managing the context of self-update. It contains GitHub client and its context.
func DefaultUpdater ¶
func DefaultUpdater() *Updater
DefaultUpdater creates a new updater instance with default configuration. It initializes GitHub API client with default API base URL. If you set your API token to $GITHUB_TOKEN, the client will use it.
func NewUpdater ¶
NewUpdater creates a new updater instance. It initializes GitHub API client. If you set your API token to $GITHUB_TOKEN, the client will use it.
func (*Updater) DetectLatest ¶
DetectLatest tries to get the latest version of the repository on GitHub. 'slug' means 'owner/name' formatted string. It fetches releases information from GitHub API and find out the latest release with matching the tag names and asset names. Drafts and pre-releases are ignored. Assets would be suffixed by the OS name and the arch name such as 'foo_linux_amd64' where 'foo' is a command name. '-' can also be used as a separator. File can be compressed with zip, gzip, zxip, tar&zip or tar&zxip. So the asset can have a file extension for the corresponding compression format such as '.zip'. On Windows, '.exe' also can be contained such as 'foo_windows_amd64.exe.zip'.
func (*Updater) DetectVersion ¶
func (up *Updater) DetectVersion(slug string, version string) (release *Release, found bool, err error)
DetectVersion tries to get the given version of the repository on Github. `slug` means `owner/name` formatted string. And version indicates the required version.
func (*Updater) UpdateCommand ¶
func (up *Updater) UpdateCommand(cmdPath string, current semver.Version, slug string) (*Release, error)
UpdateCommand updates a given command binary to the latest version. 'slug' represents 'owner/name' repository on GitHub and 'current' means the current version.
func (*Updater) UpdateSelf ¶
UpdateSelf updates the running executable itself to the latest version. 'slug' represents 'owner/name' repository on GitHub and 'current' means the current version.
func (*Updater) UpdateTo ¶
UpdateTo downloads an executable from GitHub Releases API and replace current binary with the downloaded one. It downloads a release asset via GitHub Releases API so this function is available for update releases on private repository. If a redirect occurs, it fallbacks into directly downloading from the redirect URL.
type Validator ¶
type Validator interface {
// Validate validates release bytes against an additional asset bytes.
// See SHA2Validator or ECDSAValidator for more information.
Validate(release, asset []byte) error
// Suffix describes the additional file ending which is used for finding the
// additional asset.
Suffix() string
}
Validator represents an interface which enables additional validation of releases.