Documentation
¶
Index ¶
- type Config
- type GitSourceHandler
- type GitVault
- func (g *GitVault) AddAsset(ctx context.Context, asset *lockfile.Asset, zipData []byte) error
- func (g *GitVault) Authenticate(ctx context.Context) (string, error)
- func (g *GitVault) CommitAndPush(ctx context.Context, asset *lockfile.Asset) error
- func (g *GitVault) GetAsset(ctx context.Context, asset *lockfile.Asset) ([]byte, error)
- func (g *GitVault) GetAssetByVersion(ctx context.Context, name, version string) ([]byte, error)
- func (g *GitVault) GetLockFile(ctx context.Context, cachedETag string) (content []byte, etag string, notModified bool, err error)
- func (g *GitVault) GetLockFilePath() string
- func (g *GitVault) GetMetadata(ctx context.Context, name, version string) (*metadata.Metadata, error)
- func (g *GitVault) GetVersionList(ctx context.Context, name string) ([]string, error)
- func (r *GitVault) PostUsageStats(ctx context.Context, jsonlData string) error
- func (g *GitVault) RemoveAsset(ctx context.Context, assetName, version string) error
- func (g *GitVault) UpdateTemplates(ctx context.Context, commit bool) ([]string, error)
- func (g *GitVault) VerifyIntegrity(data []byte, hashes map[string]string, size int64) error
- type HTTPSourceHandler
- type PathSourceHandler
- type PathVault
- func (p *PathVault) AddAsset(ctx context.Context, asset *lockfile.Asset, zipData []byte) error
- func (p *PathVault) Authenticate(ctx context.Context) (string, error)
- func (p *PathVault) GetAsset(ctx context.Context, asset *lockfile.Asset) ([]byte, error)
- func (p *PathVault) GetLockFile(ctx context.Context, cachedETag string) (content []byte, etag string, notModified bool, err error)
- func (p *PathVault) GetLockFilePath() string
- func (p *PathVault) GetMetadata(ctx context.Context, name, version string) (*metadata.Metadata, error)
- func (p *PathVault) GetVersionList(ctx context.Context, name string) ([]string, error)
- func (p *PathVault) PostUsageStats(ctx context.Context, jsonlData string) error
- func (p *PathVault) RemoveAsset(ctx context.Context, assetName, version string) error
- func (p *PathVault) VerifyIntegrity(data []byte, hashes map[string]string, size int64) error
- type SleuthVault
- func (s *SleuthVault) AddAsset(ctx context.Context, asset *lockfile.Asset, zipData []byte) error
- func (s *SleuthVault) Authenticate(ctx context.Context) (string, error)
- func (s *SleuthVault) GetAsset(ctx context.Context, asset *lockfile.Asset) ([]byte, error)
- func (s *SleuthVault) GetLockFile(ctx context.Context, cachedETag string) (content []byte, etag string, notModified bool, err error)
- func (s *SleuthVault) GetMetadata(ctx context.Context, name, version string) (*metadata.Metadata, error)
- func (s *SleuthVault) GetVersionList(ctx context.Context, name string) ([]string, error)
- func (s *SleuthVault) PostUsageStats(ctx context.Context, jsonlData string) error
- func (s *SleuthVault) RemoveAsset(ctx context.Context, assetName, version string) error
- func (s *SleuthVault) VerifyIntegrity(data []byte, hashes map[string]string, size int64) error
- type SourceHandler
- type Vault
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config interface {
GetType() string
GetServerURL() string
GetAuthToken() string
GetRepositoryURL() string
}
Config represents the minimal configuration needed to create a vault This avoids circular dependency with the config package
type GitSourceHandler ¶
type GitSourceHandler struct {
// contains filtered or unexported fields
}
GitSourceHandler handles assets with source-git
func NewGitSourceHandler ¶
func NewGitSourceHandler(gitClient *git.Client) *GitSourceHandler
NewGitSourceHandler creates a new Git source handler
func (*GitSourceHandler) ResolveRef ¶
ResolveRef resolves a branch or tag name to a commit SHA This is used during lock file generation to convert friendly names to commit SHAs
type GitVault ¶
type GitVault struct {
// contains filtered or unexported fields
}
GitVault implements Vault for Git vaults
func NewGitVault ¶
NewGitVault creates a new Git repository
func (*GitVault) Authenticate ¶
Authenticate performs authentication with the Git repository For Git repos, this is a no-op as authentication is handled by git itself
func (*GitVault) CommitAndPush ¶
CommitAndPush commits all changes and pushes to remote
func (*GitVault) GetAssetByVersion ¶
GetAssetByVersion retrieves an asset by name and version from the git repository This creates a zip from the exploded directory
func (*GitVault) GetLockFile ¶
func (g *GitVault) GetLockFile(ctx context.Context, cachedETag string) (content []byte, etag string, notModified bool, err error)
GetLockFile retrieves the lock file from the Git repository
func (*GitVault) GetLockFilePath ¶
GetLockFilePath returns the path to the lock file in the git repository
func (*GitVault) GetMetadata ¶
func (g *GitVault) GetMetadata(ctx context.Context, name, version string) (*metadata.Metadata, error)
GetMetadata retrieves metadata for a specific asset version Not applicable for Git repositories (metadata is inside the zip)
func (*GitVault) GetVersionList ¶
GetVersionList retrieves available versions for an asset from list.txt
func (*GitVault) PostUsageStats ¶
PostUsageStats is a no-op for Git repositories Git repositories don't support stats collection
func (*GitVault) RemoveAsset ¶
RemoveAsset removes an asset from the lock file and pushes to remote
func (*GitVault) UpdateTemplates ¶
UpdateTemplates updates templates in the repository if needed and returns the list of updated files The commit parameter controls whether to commit and push changes (git-specific behavior)
type HTTPSourceHandler ¶
type HTTPSourceHandler struct {
// contains filtered or unexported fields
}
HTTPSourceHandler handles assets with source-http
func NewHTTPSourceHandler ¶
func NewHTTPSourceHandler(authToken string) *HTTPSourceHandler
NewHTTPSourceHandler creates a new HTTP source handler
func (*HTTPSourceHandler) DownloadWithProgress ¶
func (h *HTTPSourceHandler) DownloadWithProgress(ctx context.Context, url string, progressCallback func(current, total int64)) ([]byte, error)
DownloadWithProgress downloads a file with progress reporting This is used for user-facing downloads with progress bars
type PathSourceHandler ¶
type PathSourceHandler struct {
// contains filtered or unexported fields
}
PathSourceHandler handles assets with source-path
func NewPathSourceHandler ¶
func NewPathSourceHandler(lockFileDir string) *PathSourceHandler
NewPathSourceHandler creates a new path source handler
func (*PathSourceHandler) ResolvePath ¶
func (p *PathSourceHandler) ResolvePath(path string) (string, error)
ResolvePath resolves a path (absolute, relative, or tilde) to an absolute path
type PathVault ¶
type PathVault struct {
// contains filtered or unexported fields
}
PathVault implements Vault for local filesystem directories It follows the same pattern as GitRepository and SleuthRepository
func NewPathVault ¶
NewPathVault creates a new path repository from a file:// URL
func (*PathVault) AddAsset ¶
AddAsset adds an asset to the local repository Follows the same pattern as GitRepository: exploded storage + list.txt
func (*PathVault) Authenticate ¶
Authenticate performs authentication - no-op for path repositories
func (*PathVault) GetAsset ¶
GetAsset downloads an asset using its source configuration Reuses the same dispatch pattern as GitRepository and SleuthRepository
func (*PathVault) GetLockFile ¶
func (p *PathVault) GetLockFile(ctx context.Context, cachedETag string) (content []byte, etag string, notModified bool, err error)
GetLockFile retrieves the lock file from the local directory
func (*PathVault) GetLockFilePath ¶
GetLockFilePath returns the path to the lock file in the path repository
func (*PathVault) GetMetadata ¶
func (p *PathVault) GetMetadata(ctx context.Context, name, version string) (*metadata.Metadata, error)
GetMetadata retrieves metadata for a specific asset version Not applicable for path repositories (metadata is inside the asset)
func (*PathVault) GetVersionList ¶
GetVersionList retrieves available versions for an asset from list.txt Reuses the same pattern as GitRepository
func (*PathVault) PostUsageStats ¶
PostUsageStats is a no-op for path repositories Same as GitRepository
func (*PathVault) RemoveAsset ¶
RemoveAsset removes an asset from the lock file
type SleuthVault ¶
type SleuthVault struct {
// contains filtered or unexported fields
}
SleuthVault implements Vault for Sleuth HTTP servers
func NewSleuthVault ¶
func NewSleuthVault(serverURL, authToken string) *SleuthVault
NewSleuthVault creates a new Sleuth repository
func (*SleuthVault) Authenticate ¶
func (s *SleuthVault) Authenticate(ctx context.Context) (string, error)
Authenticate performs authentication with the Sleuth server
func (*SleuthVault) GetLockFile ¶
func (s *SleuthVault) GetLockFile(ctx context.Context, cachedETag string) (content []byte, etag string, notModified bool, err error)
GetLockFile retrieves the lock file from the Sleuth server
func (*SleuthVault) GetMetadata ¶
func (s *SleuthVault) GetMetadata(ctx context.Context, name, version string) (*metadata.Metadata, error)
GetMetadata retrieves metadata for a specific asset version
func (*SleuthVault) GetVersionList ¶
GetVersionList retrieves available versions for an asset
func (*SleuthVault) PostUsageStats ¶
func (s *SleuthVault) PostUsageStats(ctx context.Context, jsonlData string) error
PostUsageStats sends asset usage statistics to the Sleuth server
func (*SleuthVault) RemoveAsset ¶
func (s *SleuthVault) RemoveAsset(ctx context.Context, assetName, version string) error
RemoveAsset removes an asset from the Sleuth server's lock file
func (*SleuthVault) VerifyIntegrity ¶
VerifyIntegrity checks hashes and sizes for downloaded assets
type SourceHandler ¶
type SourceHandler interface {
// Fetch retrieves asset data from the source
Fetch(ctx context.Context, asset *lockfile.Asset) ([]byte, error)
}
SourceHandler handles fetching assets from specific source types This is used internally by Vault implementations to handle different source types
type Vault ¶
type Vault interface {
// Authenticate performs authentication with the repository
// Returns an auth token or empty string if no auth needed
Authenticate(ctx context.Context) (string, error)
// GetLockFile retrieves the lock file from the repository
// Returns lock file content and ETag for caching
// If cachedETag matches, returns notModified=true with empty content
GetLockFile(ctx context.Context, cachedETag string) (content []byte, etag string, notModified bool, err error)
// GetAsset downloads an asset using its source configuration from the lock file
// The asset parameter contains the source configuration (source-http, source-git, source-path)
GetAsset(ctx context.Context, asset *lockfile.Asset) ([]byte, error)
// AddAsset uploads an asset to the repository
// Updates the lock file with the new asset entry
AddAsset(ctx context.Context, asset *lockfile.Asset, zipData []byte) error
// GetVersionList retrieves available versions for an asset (for resolution)
// Only applicable to repositories with version management (Sleuth, not Git)
GetVersionList(ctx context.Context, name string) ([]string, error)
// GetMetadata retrieves metadata for a specific asset version
// Only applicable to repositories with version management (Sleuth, not Git)
GetMetadata(ctx context.Context, name, version string) (*metadata.Metadata, error)
// VerifyIntegrity checks hashes and sizes for downloaded assets
VerifyIntegrity(data []byte, hashes map[string]string, size int64) error
// PostUsageStats sends asset usage statistics to the repository
// jsonlData is newline-separated JSON (JSONL format)
PostUsageStats(ctx context.Context, jsonlData string) error
// RemoveAsset removes an asset from the lock file
// The asset remains in the vault and can be re-added later
// If version is empty, removes any version of the asset
RemoveAsset(ctx context.Context, assetName, version string) error
}
Vault represents a source of assets with read and write capabilities This interface unifies the concepts of "vault" and "source fetcher"
func NewFromConfig ¶
NewFromConfig creates a vault instance from configuration This factory function eliminates repetitive switch statements across commands