diff --git a/internal/install/install.go b/internal/install/install.go index 9744805..59129d5 100644 --- a/internal/install/install.go +++ b/internal/install/install.go @@ -21,6 +21,11 @@ type Installed struct { AssetURL string `json:"url"` } +type releaseAsset struct { + Name string `json:"name"` + BrowserDownloadURL string `json:"browser_download_url"` +} + func configPath() (string, error) { home, err := os.UserHomeDir() if err != nil { @@ -108,11 +113,8 @@ func Install(pkg string) error { } var release struct { - TagName string `json:"tag_name"` - Assets []struct { - Name string `json:"name"` - BrowserDownloadURL string `json:"browser_download_url"` - } `json:"assets"` + TagName string `json:"tag_name"` + Assets []releaseAsset `json:"assets"` } if err := json.NewDecoder(resp.Body).Decode(&release); err != nil { @@ -128,9 +130,20 @@ func Install(pkg string) error { installedVersion = version } + var debAssets []releaseAsset + for _, a := range release.Assets { + if strings.HasSuffix(strings.ToLower(a.Name), ".deb") { + debAssets = append(debAssets, a) + } + } + + if len(debAssets) == 0 { + return errors.New("Release enthält keine .deb Assets") + } + // Asset-Auswahl fmt.Println("Verfügbare Assets:") - for i, a := range release.Assets { + for i, a := range debAssets { fmt.Printf("[%d] %s\n", i, a.Name) } @@ -138,11 +151,11 @@ func Install(pkg string) error { var choice int fmt.Scan(&choice) - if choice < 0 || choice >= len(release.Assets) { + if choice < 0 || choice >= len(debAssets) { return errors.New("Ungültige Auswahl") } - asset := release.Assets[choice] + asset := debAssets[choice] // Datei herunterladen fmt.Println("Lade herunter:", asset.Name)