go-devops/devops/sources/source.go
Snider 278e89e292 refactor: swap pkg/{io,log} imports to go-io/go-log
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-06 12:35:24 +00:00

33 lines
957 B
Go

// Package sources provides image download sources for core-devops.
package sources
import (
"context"
"forge.lthn.ai/core/go-io"
)
// ImageSource defines the interface for downloading dev images.
type ImageSource interface {
// Name returns the source identifier.
Name() string
// Available checks if this source can be used.
Available() bool
// LatestVersion returns the latest available version.
LatestVersion(ctx context.Context) (string, error)
// Download downloads the image to the destination path.
// Reports progress via the callback if provided.
Download(ctx context.Context, m io.Medium, dest string, progress func(downloaded, total int64)) error
}
// SourceConfig holds configuration for a source.
type SourceConfig struct {
// GitHub configuration
GitHubRepo string
// Registry configuration
RegistryImage string
// CDN configuration
CDNURL string
// Image name (e.g., core-devops-darwin-arm64.qcow2)
ImageName string
}