Documentation
¶
Index ¶
- Constants
- func ChangeRepositoryVisibility(ctx context.Context, host, repoPath, apiToken string, isPublic bool) error
- func IsNebiRepository(ctx context.Context, repoRef string, opts BrowseOptions) bool
- func ParseRegistryURL(rawURL string) (host, namespace string)
- func PublishWorkspace(ctx context.Context, envPath string, opts PublishOptions) (string, error)
- type BrowseOptions
- type PublishOptions
- type PullResult
- type RepositoryInfo
- func FilterNebiRepositories(ctx context.Context, repos []RepositoryInfo, host string, opts BrowseOptions) []RepositoryInfo
- func ListRepositories(ctx context.Context, opts BrowseOptions) ([]RepositoryInfo, error)
- func ListRepositoriesViaQuayAPI(ctx context.Context, host, namespace, apiToken string) ([]RepositoryInfo, error)
- type TagInfo
Constants ¶
const ( // MediaTypePixiConfig is the media type for pixi config (empty JSON) MediaTypePixiConfig = "application/vnd.pixi.config.v1+toml" // MediaTypePixiToml is the media type for pixi.toml manifest MediaTypePixiToml = "application/vnd.pixi.toml.v1+toml" // MediaTypePixiLock is the media type for pixi.lock lockfile MediaTypePixiLock = "application/vnd.pixi.lock.v1+yaml" )
Variables ¶
This section is empty.
Functions ¶
func ChangeRepositoryVisibility ¶
func ChangeRepositoryVisibility(ctx context.Context, host, repoPath, apiToken string, isPublic bool) error
ChangeRepositoryVisibility changes the visibility of a repository on Quay.io. It calls the Quay.io API: POST /api/v1/repository/{repo}/changevisibility
func IsNebiRepository ¶
func IsNebiRepository(ctx context.Context, repoRef string, opts BrowseOptions) bool
IsNebiRepository checks if a repository contains a Nebi OCI image by inspecting the manifest config media type of the first available tag.
func ParseRegistryURL ¶
ParseRegistryURL splits a registry URL into its host and optional namespace. For example, "quay.io/nebari" returns host="quay.io", namespace="nebari". A plain host like "quay.io" returns namespace="".
func PublishWorkspace ¶
PublishWorkspace publishes pixi.toml and pixi.lock to an OCI registry
Types ¶
type BrowseOptions ¶
BrowseOptions contains options for browsing an OCI registry
type PublishOptions ¶
type PublishOptions struct {
Repository string // Full repository path (e.g., "ghcr.io/myorg/myenv")
Tag string // Primary tag for the manifest (e.g., "sha-a1b2c3d4e5f6")
ExtraTags []string // Additional tags to apply (e.g., ["latest"])
Username string // Registry username
Password string // Registry password/token
RegistryHost string // Registry hostname (e.g., "ghcr.io")
}
PublishOptions contains options for publishing a workspace
type PullResult ¶
PullResult contains the content pulled from a registry tag
func PullEnvironment ¶
func PullEnvironment(ctx context.Context, repoRef, tag string, opts BrowseOptions) (*PullResult, error)
PullEnvironment fetches pixi.toml and pixi.lock content from a registry tag
type RepositoryInfo ¶
type RepositoryInfo struct {
Name string `json:"name"`
IsPublic *bool `json:"is_public,omitempty"`
}
RepositoryInfo contains information about a repository
func FilterNebiRepositories ¶
func FilterNebiRepositories(ctx context.Context, repos []RepositoryInfo, host string, opts BrowseOptions) []RepositoryInfo
FilterNebiRepositories filters a list of repositories to only include those that contain Nebi OCI images. It checks repositories concurrently with a semaphore.
func ListRepositories ¶
func ListRepositories(ctx context.Context, opts BrowseOptions) ([]RepositoryInfo, error)
ListRepositories queries the /v2/_catalog endpoint for a registry
func ListRepositoriesViaQuayAPI ¶
func ListRepositoriesViaQuayAPI(ctx context.Context, host, namespace, apiToken string) ([]RepositoryInfo, error)
ListRepositoriesViaQuayAPI lists repositories using Quay.io's REST API. This is used as a fallback when the standard /v2/_catalog endpoint is not supported. If an API token is provided, it is sent as a Bearer token to also list private repos. Always includes public=true so public repos are returned regardless of auth.