mirror of
https://github.com/kataras/iris.git
synced 2025-01-24 03:01:03 +01:00
15feaf0237
Former-commit-id: dced7d472edabbab4f80c76051f13261928a8dea
65 lines
1.6 KiB
Go
65 lines
1.6 KiB
Go
package version
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/hashicorp/go-version"
|
|
)
|
|
|
|
// Version is a version wrapper which
|
|
// contains some additional customized properties.
|
|
type Version struct {
|
|
version.Version
|
|
WrittenAt time.Time
|
|
ChangelogURL string
|
|
}
|
|
|
|
// Result is the compare result type.
|
|
// Available types are Invalid, Smaller, Equal or Larger.
|
|
type Result int32
|
|
|
|
const (
|
|
// Smaller when the compared version is smaller than the latest one.
|
|
Smaller Result = -1
|
|
// Equal when the compared version is equal with the latest one.
|
|
Equal Result = 0
|
|
// Larger when the compared version is larger than the latest one.
|
|
Larger Result = 1
|
|
// Invalid means that an error occurred when comparing the versions.
|
|
Invalid Result = -2
|
|
)
|
|
|
|
// Compare compares the "versionStr" with the latest Iris version,
|
|
// opossite to the version package
|
|
// it returns the result of the "versionStr" not the "v" itself.
|
|
func (v *Version) Compare(versionStr string) Result {
|
|
if len(v.Version.String()) == 0 {
|
|
// if version not refreshed, by an internet connection lose,
|
|
// then return Invalid.
|
|
return Invalid
|
|
}
|
|
|
|
other, err := version.NewVersion(versionStr)
|
|
if err != nil {
|
|
return Invalid
|
|
}
|
|
return Result(other.Compare(&v.Version))
|
|
}
|
|
|
|
// Acquire returns the latest version info wrapper.
|
|
// It calls the fetch.
|
|
func Acquire() (v Version) {
|
|
newVersion, changelogURL := fetch()
|
|
if newVersion == nil { // if github was down then don't panic, just set it as the smallest version.
|
|
newVersion, _ = version.NewVersion("0.0.1")
|
|
}
|
|
|
|
v = Version{
|
|
Version: *newVersion,
|
|
WrittenAt: time.Now(),
|
|
ChangelogURL: changelogURL,
|
|
}
|
|
|
|
return
|
|
}
|