Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var NewGitHubSource func(config Config) Source
NewGitHubSource creates a GitHub source - placeholder until github package is created
var NewGitLabSource func(config Config) Source
NewGitLabSource creates a GitLab source - placeholder until gitlab package is created
Functions ¶
This section is empty.
Types ¶
type Commit ¶
type Commit struct {
Repo Repo
GitRef string // Fallback reference
GitTag string // Semantic version tag
BranchName string // Branch name
CommitSha string // Exact commit SHA
}
Commit represents a git reference
type Config ¶
type Config struct {
ApiVersion string // v3 for GitHub, v4 for GitLab
Logger *logrus.Entry // Logger instance
}
Config holds source-specific configuration
type Release ¶
type Release struct {
Id int
Url string
Name string
Assets []ReleaseAsset
}
Release represents release info
type ReleaseAsset ¶
type ReleaseAsset struct {
Id int // Asset ID
Url string // Direct download URL
Name string // Asset filename
}
ReleaseAsset represents a downloadable release asset
type Repo ¶
type Repo struct {
Url string // Full repo URL
BaseUrl string // Host (github.com, gitlab.com, enterprise host)
ApiUrl string // API endpoint base URL
Owner string // Account/namespace (can be nested for GitLab: group/subgroup)
Name string // Repository name
Token string // Auth token
Type SourceType // Provider type
}
Repo represents a repository on any source
type Source ¶
type Source interface {
// Type returns the source type identifier
Type() SourceType
// ParseUrl parses repo URL into Repo struct
ParseUrl(repoUrl, token string) (Repo, error)
// FetchTags returns all semver tags from the repository
FetchTags(repoUrl, token string) ([]string, error)
// GetReleaseInfo returns release information for a specific tag
GetReleaseInfo(repo Repo, tag string) (Release, error)
// DownloadReleaseAsset downloads a release asset to destPath
DownloadReleaseAsset(repo Repo, asset ReleaseAsset, destPath string, withProgress bool) error
// MakeArchiveRequest creates HTTP request to download repo archive
MakeArchiveRequest(commit Commit, token string) (*http.Request, error)
// DownloadSourceZip downloads repo archive for a git ref and returns temp file path
DownloadSourceZip(repo Repo, gitRef string) (string, error)
}
Source interface defines operations every provider must implement
type SourceType ¶
type SourceType string
SourceType identifies the provider type
const ( TypeGitHub SourceType = "github" TypeGitLab SourceType = "gitlab" TypeAuto SourceType = "auto" )
func DetectSourceType ¶
func DetectSourceType(repoUrl string) (SourceType, error)
DetectSourceType determines provider from URL Auto-detects GitHub or GitLab if the hostname contains "github" or "gitlab" Returns GitHub as default for unknown hosts (backward compatibility)
func ParseSourceType ¶
func ParseSourceType(s string) (SourceType, error)
ParseSourceType converts string to SourceType