mirror of
https://github.com/webinstall/webi-installers.git
synced 2026-04-06 18:36:50 +00:00
feat(releases): add source archive fetchers for GitHub, Gitea, GitLab
For packages installed from auto-generated source tarballs rather than uploaded binary assets (shell scripts, vim plugins, etc.). Each delegates to its respective forge fetcher — the distinction is organizational, signaling which fields the consumer should use.
This commit is contained in:
25
internal/releases/giteasrc/giteasrc.go
Normal file
25
internal/releases/giteasrc/giteasrc.go
Normal file
@@ -0,0 +1,25 @@
|
||||
// Package giteasrc fetches source archives from Gitea/Forgejo releases.
|
||||
//
|
||||
// Some packages are installed from the auto-generated source tarballs
|
||||
// rather than uploaded binary assets. This package fetches releases and
|
||||
// exposes the tarball/zipball URLs.
|
||||
//
|
||||
// Use [gitea] for packages that use uploaded binary assets.
|
||||
package giteasrc
|
||||
|
||||
import (
|
||||
"context"
|
||||
"iter"
|
||||
"net/http"
|
||||
|
||||
"github.com/webinstall/webi-installers/internal/releases/gitea"
|
||||
)
|
||||
|
||||
// Fetch retrieves releases from a Gitea instance for the given owner/repo.
|
||||
// Paginates automatically, yielding one batch per API page.
|
||||
//
|
||||
// Callers should use [gitea.Release.TarballURL] and
|
||||
// [gitea.Release.ZipballURL] rather than the Assets list.
|
||||
func Fetch(ctx context.Context, client *http.Client, baseURL, owner, repo string, auth *gitea.Auth) iter.Seq2[[]gitea.Release, error] {
|
||||
return gitea.Fetch(ctx, client, baseURL, owner, repo, auth)
|
||||
}
|
||||
27
internal/releases/githubsrc/githubsrc.go
Normal file
27
internal/releases/githubsrc/githubsrc.go
Normal file
@@ -0,0 +1,27 @@
|
||||
// Package githubsrc fetches source archives from GitHub releases.
|
||||
//
|
||||
// Some packages (shell scripts, vim plugins) are installed from the
|
||||
// auto-generated source tarballs rather than uploaded binary assets.
|
||||
// This package fetches releases and exposes the tarball/zipball URLs.
|
||||
//
|
||||
// Use [github] for packages that use uploaded binary assets.
|
||||
package githubsrc
|
||||
|
||||
import (
|
||||
"context"
|
||||
"iter"
|
||||
"net/http"
|
||||
|
||||
"github.com/webinstall/webi-installers/internal/releases/githubish"
|
||||
)
|
||||
|
||||
const baseURL = "https://api.github.com"
|
||||
|
||||
// Fetch retrieves releases from GitHub for the given owner/repo.
|
||||
// Paginates automatically, yielding one batch per API page.
|
||||
//
|
||||
// Callers should use [githubish.Release.TarballURL] and
|
||||
// [githubish.Release.ZipballURL] rather than the Assets list.
|
||||
func Fetch(ctx context.Context, client *http.Client, owner, repo string, auth *githubish.Auth) iter.Seq2[[]githubish.Release, error] {
|
||||
return githubish.Fetch(ctx, client, baseURL, owner, repo, auth)
|
||||
}
|
||||
25
internal/releases/gitlabsrc/gitlabsrc.go
Normal file
25
internal/releases/gitlabsrc/gitlabsrc.go
Normal file
@@ -0,0 +1,25 @@
|
||||
// Package gitlabsrc fetches source archives from GitLab releases.
|
||||
//
|
||||
// Some packages are installed from the auto-generated source archives
|
||||
// rather than attached binary links. This package fetches releases and
|
||||
// exposes the source archive URLs.
|
||||
//
|
||||
// Use [gitlab] for packages that use attached release links (binaries).
|
||||
package gitlabsrc
|
||||
|
||||
import (
|
||||
"context"
|
||||
"iter"
|
||||
"net/http"
|
||||
|
||||
"github.com/webinstall/webi-installers/internal/releases/gitlab"
|
||||
)
|
||||
|
||||
// Fetch retrieves releases from a GitLab instance.
|
||||
// Paginates automatically, yielding one batch per API page.
|
||||
//
|
||||
// Callers should use [gitlab.Release.Assets.Sources] rather than
|
||||
// [gitlab.Release.Assets.Links].
|
||||
func Fetch(ctx context.Context, client *http.Client, baseURL, project string, auth *gitlab.Auth) iter.Seq2[[]gitlab.Release, error] {
|
||||
return gitlab.Fetch(ctx, client, baseURL, project, auth)
|
||||
}
|
||||
Reference in New Issue
Block a user