diff --git a/internal/osbuild/rpm_ostree_stage.go b/internal/osbuild/rpm_ostree_stage.go new file mode 100644 index 000000000..b5a961441 --- /dev/null +++ b/internal/osbuild/rpm_ostree_stage.go @@ -0,0 +1,16 @@ +package osbuild + +// The RPM-OSTree stage describes how to transform the imgae into an OSTree. +type RPMOSTreeStageOptions struct { + EtcGroupMembers []string `json:"etc_group_members,omitempty"` +} + +func (RPMOSTreeStageOptions) isStageOptions() {} + +// NewLocaleStage creates a new Locale Stage object. +func NewRPMOSTreeStage(options *RPMOSTreeStageOptions) *Stage { + return &Stage{ + Name: "org.osbuild.rpm-ostree", + Options: options, + } +} diff --git a/internal/osbuild/stage.go b/internal/osbuild/stage.go index 54b42415a..dd2689585 100644 --- a/internal/osbuild/stage.go +++ b/internal/osbuild/stage.go @@ -62,6 +62,8 @@ func (stage *Stage) UnmarshalJSON(data []byte) error { options = new(FirewallStageOptions) case "org.osbuild.rpm": options = new(RPMStageOptions) + case "org.osbuild.rpm-ostree": + options = new(RPMOSTreeStageOptions) case "org.osbuild.systemd": options = new(SystemdStageOptions) case "org.osbuild.script": diff --git a/internal/osbuild/stage_test.go b/internal/osbuild/stage_test.go index 21663cd25..8e3651ca4 100644 --- a/internal/osbuild/stage_test.go +++ b/internal/osbuild/stage_test.go @@ -195,6 +195,20 @@ func TestStage_UnmarshalJSON(t *testing.T) { data: []byte(`{"name":"org.osbuild.rpm","options":{"gpgkeys":["key1","key2"],"packages":["checksum1","checksum2"]}}`), }, }, + { + name: "rpm-ostree", + fields: fields{ + Name: "org.osbuild.rpm-ostree", + Options: &RPMOSTreeStageOptions{ + EtcGroupMembers: []string{ + "wheel", + }, + }, + }, + args: args{ + data: []byte(`{"name":"org.osbuild.rpm-ostree","options":{"etc_group_members":["wheel"]}}`), + }, + }, { name: "script", fields: fields{