diff --git a/internal/osbuild/assembler.go b/internal/osbuild/assembler.go index 44e8324c7..354766889 100644 --- a/internal/osbuild/assembler.go +++ b/internal/osbuild/assembler.go @@ -32,12 +32,14 @@ func (assembler *Assembler) UnmarshalJSON(data []byte) error { } var options AssemblerOptions switch rawAssembler.Name { - case "org.osbuild.tar": - options = new(TarAssemblerOptions) + case "org.osbuild.ostree.commit": + options = new(OSTreeCommitAssemblerOptions) case "org.osbuild.qemu": options = new(QEMUAssemblerOptions) case "org.osbuild.rawfs": options = new(RawFSAssemblerOptions) + case "org.osbuild.tar": + options = new(TarAssemblerOptions) default: return errors.New("unexpected assembler name") } diff --git a/internal/osbuild/assembler_test.go b/internal/osbuild/assembler_test.go index fd05ea10b..14f9d94c6 100644 --- a/internal/osbuild/assembler_test.go +++ b/internal/osbuild/assembler_test.go @@ -108,6 +108,19 @@ func TestAssembler_UnmarshalJSON(t *testing.T) { }, data: []byte(`{"name":"org.osbuild.rawfs","options":{"filename":"filesystem.img","root_fs_uuid":"76a22bf4-f153-4541-b6c7-0332c0dfaeac","size":2147483648}}`), }, + { + name: "ostree commit assembler", + assembler: Assembler{ + Name: "org.osbuild.ostree.commit", + Options: &OSTreeCommitAssemblerOptions{ + Ref: "foo", + Tar: OSTreeCommitAssemblerTarOptions{ + Filename: "foo.tar", + }, + }, + }, + data: []byte(`{"name":"org.osbuild.ostree.commit","options":{"ref":"foo","tar":{"filename":"foo.tar"}}}`), + }, } assert := assert.New(t) diff --git a/internal/osbuild/ostree_commit_assembler.go b/internal/osbuild/ostree_commit_assembler.go new file mode 100644 index 000000000..eabb28b45 --- /dev/null +++ b/internal/osbuild/ostree_commit_assembler.go @@ -0,0 +1,23 @@ +package osbuild + +// OSTreeCommitAssemblerOptions desrcibe how to assemble a tree into an OSTree commit. +type OSTreeCommitAssemblerOptions struct { + Ref string `json:"ref"` + Parent string `json:"parent,omitempty"` + Tar OSTreeCommitAssemblerTarOptions `json:"tar"` +} + +// OSTreeCommitAssemblerTarOptions desrcibes the output tarball +type OSTreeCommitAssemblerTarOptions struct { + Filename string `json:"filename"` +} + +func (OSTreeCommitAssemblerOptions) isAssemblerOptions() {} + +// NewOSTreeCommitAssembler creates a new OSTree Commit Assembler object. +func NewOSTreeCommitAssembler(options *OSTreeCommitAssemblerOptions) *Assembler { + return &Assembler{ + Name: "org.osbuild.ostree.commit", + Options: options, + } +}