57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
package gitService
|
|
|
|
import (
|
|
"encoding/json"
|
|
"firefly-launcher/pkg/constant"
|
|
"firefly-launcher/pkg/models"
|
|
"io"
|
|
"net/http"
|
|
"github.com/minio/selfupdate"
|
|
|
|
)
|
|
|
|
type GitService struct{}
|
|
|
|
|
|
func (g *GitService) GetLatestLauncherVersion() (bool, string, string) {
|
|
resp, err := http.Get(constant.LauncherGitUrl)
|
|
if err != nil {
|
|
return false, "", err.Error()
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
body, _ := io.ReadAll(resp.Body)
|
|
|
|
var releases []models.ReleaseType
|
|
err = json.Unmarshal(body, &releases)
|
|
if err != nil {
|
|
return false, "", err.Error()
|
|
}
|
|
|
|
if len(releases) == 0 {
|
|
return false, "", "no releases found"
|
|
}
|
|
|
|
return true, releases[0].TagName, ""
|
|
}
|
|
|
|
|
|
|
|
func (g *GitService) UpdateLauncherProgress(version string) (bool, string) {
|
|
asset, ok := g.getReleaseAsset(version, constant.LauncherGitUrl, constant.LauncherFile)
|
|
if !ok {
|
|
return false, "no release found"
|
|
}
|
|
|
|
resp, err := http.Get(asset.BrowserDownloadURL)
|
|
if err != nil {
|
|
return false, err.Error()
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
err = selfupdate.Apply(resp.Body, selfupdate.Options{})
|
|
if err != nil {
|
|
return false, err.Error()
|
|
}
|
|
return true, ""
|
|
} |