Documentation
¶
Index ¶
- Constants
- Variables
- func CleanupOldBinary()
- func CompareVersions(a, b *SemVer) int
- func GetAssetName() string
- func GetAssetNameForPlatform(osName, arch string) string
- func GetBinaryName(osName string) string
- type CheckOptions
- type Checker
- type GitHubAsset
- type GitHubRelease
- type ReleaseAsset
- type ReleaseInfo
- type RuntimeEnvironment
- type SemVer
- type UpgradeProgress
- type UpgradeStatus
- type Upgrader
- type VersionCheckResult
- type VersionInfo
Constants ¶
View Source
const ( GitHubRepoOwner = "sunerpy" GitHubRepoName = "pt-tools" GitHubReleasesURL = "https://api.github.com/repos/" + GitHubRepoOwner + "/" + GitHubRepoName + "/releases" GitHubChangelogURL = "https://github.com/" + GitHubRepoOwner + "/" + GitHubRepoName + "/blob/main/CHANGELOG.md" MaxDisplayReleases = 3 CheckInterval = 24 * time.Hour RequestTimeout = 15 * time.Second )
Variables ¶
View Source
var ( ErrDockerEnvironment = errors.New("自动升级不支持 Docker 环境,请更新容器镜像") ErrUnsupportedPlatform = errors.New("当前平台不支持自动升级") ErrNoAssetFound = errors.New("未找到适用于当前平台的安装包") ErrUpgradeInProgress = errors.New("升级正在进行中") ErrDownloadFailed = errors.New("下载安装包失败") ErrExtractionFailed = errors.New("解压安装包失败") ErrReplacementFailed = errors.New("替换可执行文件失败") ErrPermissionDenied = errors.New("权限不足,无法替换可执行文件") ErrVersionAlreadyLatest = errors.New("当前已是最新版本") )
View Source
var ( Version = "unknown" BuildTime = "unknown" CommitID = "unknown" BuildOS = "" BuildArch = "" )
Functions ¶
func CleanupOldBinary ¶ added in v0.5.0
func CleanupOldBinary()
CleanupOldBinary removes leftover .pt-tools-old and .pt-tools-backup files from previous upgrades. Call this at application startup.
func CompareVersions ¶ added in v0.4.0
func GetAssetName ¶ added in v0.5.0
func GetAssetName() string
func GetAssetNameForPlatform ¶ added in v0.5.0
GetAssetNameForPlatform returns the asset name matching release workflow: Linux: pt-tools-linux-{arch}.tar.gz, Windows: pt-tools-windows-{arch}.exe.zip
func GetBinaryName ¶ added in v0.5.0
Types ¶
type CheckOptions ¶ added in v0.4.0
type Checker ¶ added in v0.4.0
type Checker struct {
// contains filtered or unexported fields
}
func GetChecker ¶ added in v0.4.0
func GetChecker() *Checker
func NewChecker ¶ added in v0.4.0
func NewChecker() *Checker
func (*Checker) CheckForUpdates ¶ added in v0.4.0
func (c *Checker) CheckForUpdates(ctx context.Context, opts CheckOptions) (*VersionCheckResult, error)
func (*Checker) GetCachedResult ¶ added in v0.4.0
func (c *Checker) GetCachedResult() *VersionCheckResult
func (*Checker) ShouldCheck ¶ added in v0.4.0
type GitHubAsset ¶ added in v0.5.0
type GitHubRelease ¶ added in v0.4.0
type ReleaseAsset ¶ added in v0.5.0
type ReleaseInfo ¶ added in v0.4.0
type RuntimeEnvironment ¶ added in v0.5.0
type RuntimeEnvironment struct {
IsDocker bool `json:"is_docker"`
OS string `json:"os"`
Arch string `json:"arch"`
Executable string `json:"executable"`
CanSelfUpgrade bool `json:"can_self_upgrade"`
}
func DetectEnvironment ¶ added in v0.5.0
func DetectEnvironment() RuntimeEnvironment
type SemVer ¶ added in v0.4.0
func ParseVersion ¶ added in v0.4.0
type UpgradeProgress ¶ added in v0.5.0
type UpgradeProgress struct {
Status UpgradeStatus `json:"status"`
TargetVersion string `json:"target_version,omitempty"`
Progress float64 `json:"progress"`
BytesDownloaded int64 `json:"bytes_downloaded"`
TotalBytes int64 `json:"total_bytes"`
Error string `json:"error,omitempty"`
StartedAt int64 `json:"started_at,omitempty"`
CompletedAt int64 `json:"completed_at,omitempty"`
}
type UpgradeStatus ¶ added in v0.5.0
type UpgradeStatus string
const ( UpgradeStatusIdle UpgradeStatus = "idle" UpgradeStatusDownloading UpgradeStatus = "downloading" UpgradeStatusExtracting UpgradeStatus = "extracting" UpgradeStatusReplacing UpgradeStatus = "replacing" UpgradeStatusCompleted UpgradeStatus = "completed" UpgradeStatusFailed UpgradeStatus = "failed" )
type Upgrader ¶ added in v0.5.0
type Upgrader struct {
// contains filtered or unexported fields
}
func GetUpgrader ¶ added in v0.5.0
func GetUpgrader() *Upgrader
func NewUpgrader ¶ added in v0.5.0
func NewUpgrader() *Upgrader
func (*Upgrader) CanUpgrade ¶ added in v0.5.0
func (*Upgrader) GetProgress ¶ added in v0.5.0
func (u *Upgrader) GetProgress() UpgradeProgress
type VersionCheckResult ¶ added in v0.4.0
type VersionCheckResult struct {
CurrentVersion string `json:"current_version"`
HasUpdate bool `json:"has_update"`
NewReleases []ReleaseInfo `json:"new_releases,omitempty"`
ChangelogURL string `json:"changelog_url,omitempty"`
HasMoreReleases bool `json:"has_more_releases,omitempty"`
CheckedAt int64 `json:"checked_at"`
Error string `json:"error,omitempty"`
}
type VersionInfo ¶ added in v0.4.0
type VersionInfo struct {
Version string `json:"version"`
BuildTime string `json:"build_time"`
CommitID string `json:"commit_id"`
}
func GetVersionInfo ¶ added in v0.4.0
func GetVersionInfo() VersionInfo
Click to show internal directories.
Click to hide internal directories.