In the same way `osbuild.Manifest` is the input to the osbuild API, `osbuild.Result` is the output. Move it to the `osbuild` package where it belongs. This is not a functional change. Signed-off-by: Tom Gundersen <teg@jklm.no>
84 lines
2 KiB
Go
84 lines
2 KiB
Go
package osbuild
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"io"
|
|
)
|
|
|
|
type assembler struct {
|
|
Name string `json:"name"`
|
|
Options json.RawMessage `json:"options"`
|
|
Success bool `json:"success"`
|
|
Output string `json:"output"`
|
|
}
|
|
|
|
type stage struct {
|
|
Name string `json:"name"`
|
|
Options json.RawMessage `json:"options"`
|
|
Success bool `json:"success"`
|
|
Output string `json:"output"`
|
|
}
|
|
|
|
type build struct {
|
|
Stages []stage `json:"stages"`
|
|
TreeID string `json:"tree_id"`
|
|
Success bool `json:"success"`
|
|
}
|
|
|
|
type Result struct {
|
|
TreeID string `json:"tree_id"`
|
|
OutputID string `json:"output_id"`
|
|
Build *build `json:"build"`
|
|
Stages []stage `json:"stages"`
|
|
Assembler *assembler `json:"assembler"`
|
|
Success bool `json:"success"`
|
|
}
|
|
|
|
func (cr *Result) Write(writer io.Writer) error {
|
|
if cr.Build == nil && len(cr.Stages) == 0 && cr.Assembler == nil {
|
|
fmt.Fprintf(writer, "The compose result is empty.\n")
|
|
}
|
|
|
|
if cr.Build != nil {
|
|
fmt.Fprintf(writer, "Build pipeline:\n")
|
|
|
|
for _, stage := range cr.Build.Stages {
|
|
fmt.Fprintf(writer, "Stage %s\n", stage.Name)
|
|
enc := json.NewEncoder(writer)
|
|
enc.SetIndent("", " ")
|
|
err := enc.Encode(stage.Options)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
fmt.Fprintf(writer, "\nOutput:\n%s\n", stage.Output)
|
|
}
|
|
}
|
|
|
|
if len(cr.Stages) > 0 {
|
|
fmt.Fprintf(writer, "Stages:\n")
|
|
for _, stage := range cr.Stages {
|
|
fmt.Fprintf(writer, "Stage: %s\n", stage.Name)
|
|
enc := json.NewEncoder(writer)
|
|
enc.SetIndent("", " ")
|
|
err := enc.Encode(stage.Options)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
fmt.Fprintf(writer, "\nOutput:\n%s\n", stage.Output)
|
|
}
|
|
}
|
|
|
|
if cr.Assembler != nil {
|
|
fmt.Fprintf(writer, "Assembler %s:\n", cr.Assembler.Name)
|
|
enc := json.NewEncoder(writer)
|
|
enc.SetIndent("", " ")
|
|
err := enc.Encode(cr.Assembler.Options)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
fmt.Fprintf(writer, "\nOutput:\n%s\n", cr.Assembler.Output)
|
|
}
|
|
|
|
return nil
|
|
}
|