101 lines
2.3 KiB
Go
101 lines
2.3 KiB
Go
package manifest
|
|
|
|
import (
|
|
"github.com/osbuild/images/pkg/container"
|
|
"github.com/osbuild/images/pkg/osbuild"
|
|
"github.com/osbuild/images/pkg/ostree"
|
|
"github.com/osbuild/images/pkg/rpmmd"
|
|
)
|
|
|
|
// A ContentTest can be used to define content sources without generating
|
|
// pipelines. It is useful for testing but not much else.
|
|
type ContentTest struct {
|
|
Base
|
|
|
|
// content sources
|
|
packageSets []rpmmd.PackageSet
|
|
containers []container.SourceSpec
|
|
commits []ostree.SourceSpec
|
|
|
|
// resolved content
|
|
packageSpecs []rpmmd.PackageSpec
|
|
containerSpecs []container.Spec
|
|
commitSpecs []ostree.CommitSpec
|
|
|
|
repos []rpmmd.RepoConfig
|
|
|
|
// serialization flag
|
|
serializing bool
|
|
}
|
|
|
|
// NewContentTest creates a new ContentTest pipeline with a given name and
|
|
// content sources.
|
|
func NewContentTest(m *Manifest, name string, packageSets []rpmmd.PackageSet, containers []container.SourceSpec, commits []ostree.SourceSpec) *ContentTest {
|
|
pipeline := &ContentTest{
|
|
Base: NewBase(name, nil),
|
|
packageSets: packageSets,
|
|
containers: containers,
|
|
commits: commits,
|
|
}
|
|
m.addPipeline(pipeline)
|
|
return pipeline
|
|
}
|
|
|
|
func (p *ContentTest) getPackageSetChain(Distro) []rpmmd.PackageSet {
|
|
return p.packageSets
|
|
}
|
|
|
|
func (p *ContentTest) getContainerSources() []container.SourceSpec {
|
|
return p.containers
|
|
}
|
|
|
|
func (p *ContentTest) getOSTreeCommitSources() []ostree.SourceSpec {
|
|
return p.commits
|
|
}
|
|
|
|
func (p *ContentTest) getPackageSpecs() []rpmmd.PackageSpec {
|
|
return p.packageSpecs
|
|
}
|
|
|
|
func (p *ContentTest) getContainerSpecs() []container.Spec {
|
|
return p.containerSpecs
|
|
}
|
|
|
|
func (p *ContentTest) getOSTreeCommits() []ostree.CommitSpec {
|
|
return p.commitSpecs
|
|
}
|
|
|
|
func (p *ContentTest) serializeStart(inputs Inputs) {
|
|
if p.serializing {
|
|
panic("double call to serializeStart()")
|
|
}
|
|
p.packageSpecs = inputs.Depsolved.Packages
|
|
p.containerSpecs = inputs.Containers
|
|
p.commitSpecs = inputs.Commits
|
|
p.repos = inputs.Depsolved.Repos
|
|
|
|
p.serializing = true
|
|
}
|
|
|
|
func (p *ContentTest) serializeEnd() {
|
|
if !p.serializing {
|
|
panic("serializeEnd() call when serialization not in progress")
|
|
}
|
|
p.packageSpecs = nil
|
|
p.containerSpecs = nil
|
|
p.commitSpecs = nil
|
|
|
|
p.serializing = false
|
|
}
|
|
|
|
func (p *ContentTest) serialize() osbuild.Pipeline {
|
|
if !p.serializing {
|
|
panic("serialization not started")
|
|
}
|
|
|
|
// no stages
|
|
|
|
return osbuild.Pipeline{
|
|
Name: p.name,
|
|
}
|
|
}
|