mirror of
https://github.com/mudler/luet.git
synced 2025-06-07 14:37:21 +00:00
This commit is multi-fold as it also refactors internally context and logger as interfaces so it is easier to plug luet as a library externally. Introduces a garbage collector (related to #227) but doesn't handle yet parallelism. Closes #265
42 lines
1.0 KiB
Go
42 lines
1.0 KiB
Go
package compiler
|
|
|
|
import (
|
|
v1 "github.com/google/go-containerregistry/pkg/v1"
|
|
|
|
"github.com/mudler/luet/pkg/api/core/types"
|
|
"github.com/mudler/luet/pkg/compiler/backend"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
func NewBackend(ctx types.Context, s string) (CompilerBackend, error) {
|
|
var compilerBackend CompilerBackend
|
|
|
|
switch s {
|
|
case backend.ImgBackend:
|
|
compilerBackend = backend.NewSimpleImgBackend(ctx)
|
|
case backend.DockerBackend:
|
|
compilerBackend = backend.NewSimpleDockerBackend(ctx)
|
|
default:
|
|
return nil, errors.New("invalid backend. Unsupported")
|
|
}
|
|
|
|
return compilerBackend, nil
|
|
}
|
|
|
|
type CompilerBackend interface {
|
|
BuildImage(backend.Options) error
|
|
ExportImage(backend.Options) error
|
|
LoadImage(string) error
|
|
RemoveImage(backend.Options) error
|
|
ImageDefinitionToTar(backend.Options) error
|
|
|
|
CopyImage(string, string) error
|
|
DownloadImage(opts backend.Options) error
|
|
|
|
Push(opts backend.Options) error
|
|
ImageAvailable(string) bool
|
|
|
|
ImageReference(img1 string, ondisk bool) (v1.Image, error)
|
|
ImageExists(string) bool
|
|
}
|