51 lines
940 B
Go
51 lines
940 B
Go
package update
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"github.com/Masterminds/semver/v3"
|
|
"io"
|
|
"net/http"
|
|
)
|
|
|
|
func GetGiteaRelease(instance string, owner string, repo string) *semver.Version {
|
|
res, err := http.Get(fmt.Sprintf("https://%v/api/v1/repos/%v/%v/releases", instance, owner, repo))
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
defer res.Body.Close()
|
|
body, err := io.ReadAll(res.Body)
|
|
|
|
var data []struct {
|
|
TagName string `json:"tag_name"`
|
|
}
|
|
err = json.Unmarshal(body, &data)
|
|
if err != nil || len(data) < 1 {
|
|
return nil
|
|
}
|
|
|
|
v, err := semver.NewVersion(data[0].TagName)
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
|
|
return v
|
|
}
|
|
|
|
func CheckVersion(latest *semver.Version, current string) string {
|
|
if latest == nil {
|
|
return ""
|
|
}
|
|
|
|
current1, err := semver.NewVersion(current)
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
|
|
if latest.GreaterThan(current1) {
|
|
return fmt.Sprintf("A new version, %s, is available for download", latest)
|
|
} else {
|
|
return ""
|
|
}
|
|
}
|