supabase-operator/magefiles/github.go

40 lines
871 B
Go
Raw Permalink Normal View History

package main
import (
"context"
"encoding/json"
"fmt"
"net/http"
"code.icb4dc0.de/prskr/supabase-operator/internal/errx"
)
func latestReleaseVersion(ctx context.Context, owner, repo string) (tagName string, err error) {
releaseURL := fmt.Sprintf("https://api.github.com/repos/%s/%s/releases/latest", owner, repo)
req, err := http.NewRequestWithContext(ctx, http.MethodGet, releaseURL, nil)
if err != nil {
return "", err
}
resp, err := http.DefaultClient.Do(req)
if err != nil {
return "", err
}
defer errx.Close(resp.Body, &err)
if resp.StatusCode < 200 || resp.StatusCode >= 300 {
return "", fmt.Errorf("failed to retrieve latest release: %s", resp.Status)
}
var release struct {
TagName string `json:"tag_name"`
}
if err := json.NewDecoder(resp.Body).Decode(&release); err != nil {
return "", err
}
return release.TagName, nil
}