Documentation
¶
Overview ¶
Package gitlab provides functionality to interact with GitLab repositories, releases, and assets via the GitLab API. It includes utilities for filtering and retrieving release information, assets, and repository metadata.
The main types and functions in this package include:
- Asset: Represents a GitLab release asset with name, URL, and content type.
- Assets: A collection of Asset objects with filtering methods.
- Release: Represents a GitLab release containing a tag, name, and assets.
- Repository: Represents a GitLab repository, with methods for retrieving releases, assets, and repository details.
- NewClient: Creates a new GitLab API client.
- NewRepository: Creates a new Repository instance for accessing repository data.
This package uses the official GitLab client (gitlab.com/gitlab-org/api/client-go) for making API calls and provides additional utilities to handle GitLab data.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrRelease = errors.New("release")
ErrRelease is returned when a release issue is encountered.
Functions ¶
Types ¶
type Asset ¶
type Asset struct { // Name is the name of the asset. Name string `json:"name"` // URL is the browser download URL for the asset. URL string `json:"url"` // Type is the content type of the asset. Type string `json:"content_type"` //nolint:tagliatelle // GitLab API uses snake_case field names }
Asset represents a GitLab release asset with its name, download URL, and content type.
func (Asset) HasExtension ¶
HasExtension checks if the asset has the given file extension.
type Assets ¶
type Assets []Asset
Assets represents a collection of GitLab release assets.
func (Assets) FilterByName ¶
FilterByName returns the assets that match the given name. It compares asset names in a case-insensitive manner.
type Release ¶
type Release struct { // Name is the name of the release. Name string `json:"name"` // Tag is the tag associated with the release (e.g., version number). Tag string `json:"tag_name"` //nolint:tagliatelle // GitLab API uses snake_case field names // Assets is a collection of assets attached to the release. Assets Assets `json:"assets"` }
Release represents a GitLab release, containing the release name, tag, and associated assets.
type Repository ¶
Repository represents a GitLab repository with its owner and name. It contains a GitLab client for making API calls.
func NewRepository ¶
func NewRepository(namespace, repo string, client *gitlab.Client) *Repository
NewRepository creates a new instance of Repository. It requires the repository owner, repository name, and a GitLab client.
func (*Repository) GetLatestIncludingPreRelease ¶
func (g *Repository) GetLatestIncludingPreRelease(ctx context.Context, perPage int) (*Release, error)
GetLatestIncludingPreRelease retrieves the most recently published release for the repository, including pre-releases. This returns the newest release by published date, regardless of whether it's a regular release or pre-release.
func (*Repository) GetRelease ¶
GetRelease retrieves a specific release for the repository based on the provided tag.
func (*Repository) LatestRelease ¶
func (g *Repository) LatestRelease(ctx context.Context) (*Release, error)
LatestRelease retrieves the latest release for the repository.