Introduce the `distro` package, which contains an interface for OS implementations. Its main purpose is to convert a blueprint to a distro-specific pipeline. Also introduce the `distro/fedora30` package. It is the first implementation of the distro interface. Most of its code has been copied with minimal modifications from the blueprint package. The `blueprint` package is now back to serving a single purpose: representing a weldr blueprint. It does not depend on the `pipeline` package anymore. Change osbuild-composer and osbuild-pipeline to use the new API, hard-coding "fedora-30". This looks a bit weird now, but is the same behavior as before. All test cases now also take an "distro" key in the "compose" object.
31 lines
647 B
Go
31 lines
647 B
Go
package fedora30
|
|
|
|
import (
|
|
"github.com/osbuild/osbuild-composer/internal/blueprint"
|
|
"github.com/osbuild/osbuild-composer/internal/pipeline"
|
|
)
|
|
|
|
type liveIsoOutput struct{}
|
|
|
|
func (t *liveIsoOutput) translate(b *blueprint.Blueprint) (*pipeline.Pipeline, error) {
|
|
// TODO!
|
|
p := getF30Pipeline()
|
|
addF30SELinuxStage(p)
|
|
addF30QemuAssembler(p, "raw", t.getName())
|
|
|
|
if b.Customizations != nil {
|
|
err := customizeAll(p, b.Customizations)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
}
|
|
return p, nil
|
|
}
|
|
|
|
func (t *liveIsoOutput) getName() string {
|
|
return "image.iso"
|
|
}
|
|
|
|
func (t *liveIsoOutput) getMime() string {
|
|
return "application/x-iso9660-image"
|
|
}
|