Compare commits
3 Commits
3764e8b546
...
a2b7e3f528
| Author | SHA1 | Date | |
|---|---|---|---|
| a2b7e3f528 | |||
| 6c429c237b | |||
| bfff9b81d8 |
@@ -93,6 +93,20 @@ func main() {
|
|||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
|
||||||
|
case "update":
|
||||||
|
if len(os.Args) < 3 {
|
||||||
|
fmt.Println("Usage: ginie update <name>")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
target := os.Args[2]
|
||||||
|
|
||||||
|
err := install.Update(target)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("Fehler:", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return
|
||||||
|
|
||||||
default:
|
default:
|
||||||
fmt.Println("Unbekannter Befehl:", cmd)
|
fmt.Println("Unbekannter Befehl:", cmd)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -194,3 +194,63 @@ func Install(pkg string) error {
|
|||||||
|
|
||||||
return errors.New("Asset-Typ wird noch nicht unterstützt")
|
return errors.New("Asset-Typ wird noch nicht unterstützt")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Update(pkg string) error {
|
||||||
|
name := pkg
|
||||||
|
|
||||||
|
all, err := repos.LoadRepos()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
var repo repos.Repo
|
||||||
|
found := false
|
||||||
|
for _, r := range all {
|
||||||
|
if r.Name == name {
|
||||||
|
repo = r
|
||||||
|
found = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !found {
|
||||||
|
return errors.New("Repo nicht gefunden. Nutze: ginie add <URL>")
|
||||||
|
}
|
||||||
|
|
||||||
|
if repo.InstalledVersion == "" {
|
||||||
|
return errors.New("Package noch nicht installiert. Nutze: ginie install " + name)
|
||||||
|
}
|
||||||
|
|
||||||
|
api := fmt.Sprintf("https://api.github.com/repos/%s/%s/releases/latest", repo.Owner, repo.Name)
|
||||||
|
|
||||||
|
resp, err := http.Get(api)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
if resp.StatusCode != 200 {
|
||||||
|
return fmt.Errorf("GitHub API Fehler: %s", resp.Status)
|
||||||
|
}
|
||||||
|
|
||||||
|
var release struct {
|
||||||
|
TagName string `json:"tag_name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := json.NewDecoder(resp.Body).Decode(&release); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if release.TagName == "" {
|
||||||
|
return errors.New("Keine Version im Release gefunden")
|
||||||
|
}
|
||||||
|
|
||||||
|
if release.TagName == repo.InstalledVersion {
|
||||||
|
fmt.Printf("%s ist bereits auf Version %s\n", repo.Name, repo.InstalledVersion)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("Aktualisiere %s von %s auf %s\n", repo.Name, repo.InstalledVersion, release.TagName)
|
||||||
|
|
||||||
|
return Install(fmt.Sprintf("%s:%s", repo.Name, release.TagName))
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user