debian-forge-composer/internal/pipeline/commit.go
Tom Gundersen be2195b235 pipeline: add a bit more documentation
Make sure that each of the types have at least a bit of documentation.
2022-06-27 19:11:26 +01:00

52 lines
1.5 KiB
Go

package pipeline
import (
"github.com/osbuild/osbuild-composer/internal/osbuild2"
)
// OSTreeCommitPipeline represents an ostree with one commit.
type OSTreeCommitPipeline struct {
Pipeline
OSVersion string
treePipeline *OSPipeline
ref string
}
// NewOSTreeCommitPipeline creates a new OSTree commit pipeline. The
// treePipeline is the tree representing the content of the commit.
// ref is the ref to create the commit under.
func NewOSTreeCommitPipeline(buildPipeline *BuildPipeline, treePipeline *OSPipeline, ref string) OSTreeCommitPipeline {
return OSTreeCommitPipeline{
Pipeline: New("ostree-commit", buildPipeline, nil),
treePipeline: treePipeline,
ref: ref,
}
}
// Ref returns the OSTree ref of the commit.
func (p OSTreeCommitPipeline) Ref() string {
return p.ref
}
func (p OSTreeCommitPipeline) Serialize() osbuild2.Pipeline {
pipeline := p.Pipeline.Serialize()
pipeline.AddStage(osbuild2.NewOSTreeInitStage(&osbuild2.OSTreeInitStageOptions{Path: "/repo"}))
commitStageInput := new(osbuild2.OSTreeCommitStageInput)
commitStageInput.Type = "org.osbuild.tree"
commitStageInput.Origin = "org.osbuild.pipeline"
commitStageInput.References = osbuild2.OSTreeCommitStageReferences{"name:" + p.treePipeline.Name()}
pipeline.AddStage(osbuild2.NewOSTreeCommitStage(
&osbuild2.OSTreeCommitStageOptions{
Ref: p.Ref(),
OSVersion: p.OSVersion,
Parent: p.treePipeline.OSTreeParent(),
},
&osbuild2.OSTreeCommitStageInputs{Tree: commitStageInput}),
)
return pipeline
}