Move the OSBuildStagesToRPMs function, associated test, and RPM type from the worker into the rpmmd subpackge. We will use this function in the cloud API to compile the NEVRAs for the new metadata endpoint.
49 lines
1.1 KiB
Go
49 lines
1.1 KiB
Go
package rpmmd
|
|
|
|
import (
|
|
osbuild "github.com/osbuild/osbuild-composer/internal/osbuild1"
|
|
)
|
|
|
|
type RPM struct {
|
|
Type string `json:"type"` // must be 'rpm'
|
|
Name string `json:"name"`
|
|
Version string `json:"version"`
|
|
Release string `json:"release"`
|
|
Epoch *string `json:"epoch,omitempty"`
|
|
Arch string `json:"arch"`
|
|
Sigmd5 string `json:"sigmd5"`
|
|
Signature *string `json:"signature"`
|
|
}
|
|
|
|
func OSBuildStagesToRPMs(stages []osbuild.StageResult) []RPM {
|
|
rpms := make([]RPM, 0)
|
|
for _, stage := range stages {
|
|
switch metadata := stage.Metadata.(type) {
|
|
case *osbuild.RPMStageMetadata:
|
|
for _, pkg := range metadata.Packages {
|
|
rpms = append(rpms, RPM{
|
|
Type: "rpm",
|
|
Name: pkg.Name,
|
|
Epoch: pkg.Epoch,
|
|
Version: pkg.Version,
|
|
Release: pkg.Release,
|
|
Arch: pkg.Arch,
|
|
Sigmd5: pkg.SigMD5,
|
|
Signature: packageMetadataToSignature(pkg),
|
|
})
|
|
}
|
|
default:
|
|
continue
|
|
}
|
|
}
|
|
return rpms
|
|
}
|
|
|
|
func packageMetadataToSignature(pkg osbuild.RPMPackageMetadata) *string {
|
|
if pkg.SigGPG != "" {
|
|
return &pkg.SigGPG
|
|
} else if pkg.SigPGP != "" {
|
|
return &pkg.SigPGP
|
|
}
|
|
return nil
|
|
}
|