Blame internal/common/compose_result.go

Packit 63bb0d
package common
Packit 63bb0d
Packit 63bb0d
import (
Packit 63bb0d
	"encoding/json"
Packit 63bb0d
	"fmt"
Packit 63bb0d
	"io"
Packit 63bb0d
)
Packit 63bb0d
Packit 63bb0d
type assembler struct {
Packit 63bb0d
	Name    string          `json:"name"`
Packit 63bb0d
	Options json.RawMessage `json:"options"`
Packit 63bb0d
	Success bool            `json:"success"`
Packit 63bb0d
	Output  string          `json:"output"`
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
type stage struct {
Packit 63bb0d
	Name    string          `json:"name"`
Packit 63bb0d
	Options json.RawMessage `json:"options"`
Packit 63bb0d
	Success bool            `json:"success"`
Packit 63bb0d
	Output  string          `json:"output"`
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
type build struct {
Packit 63bb0d
	Stages  []stage `json:"stages"`
Packit 63bb0d
	TreeID  string  `json:"tree_id"`
Packit 63bb0d
	Success bool    `json:"success"`
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
type ComposeResult struct {
Packit 63bb0d
	TreeID    string     `json:"tree_id"`
Packit 63bb0d
	OutputID  string     `json:"output_id"`
Packit 63bb0d
	Build     *build     `json:"build"`
Packit 63bb0d
	Stages    []stage    `json:"stages"`
Packit 63bb0d
	Assembler *assembler `json:"assembler"`
Packit 63bb0d
	Success   bool       `json:"success"`
Packit 63bb0d
}
Packit 63bb0d
Packit 63bb0d
func (cr *ComposeResult) Write(writer io.Writer) error {
Packit 63bb0d
	if cr.Build == nil && len(cr.Stages) == 0 && cr.Assembler == nil {
Packit 63bb0d
		fmt.Fprintf(writer, "The compose result is empty.\n")
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	if cr.Build != nil {
Packit 63bb0d
		fmt.Fprintf(writer, "Build pipeline:\n")
Packit 63bb0d
Packit 63bb0d
		for _, stage := range cr.Build.Stages {
Packit 63bb0d
			fmt.Fprintf(writer, "Stage %s\n", stage.Name)
Packit 63bb0d
			enc := json.NewEncoder(writer)
Packit 63bb0d
			enc.SetIndent("", "  ")
Packit 63bb0d
			err := enc.Encode(stage.Options)
Packit 63bb0d
			if err != nil {
Packit 63bb0d
				return err
Packit 63bb0d
			}
Packit 63bb0d
			fmt.Fprintf(writer, "\nOutput:\n%s\n", stage.Output)
Packit 63bb0d
		}
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	if len(cr.Stages) > 0 {
Packit 63bb0d
		fmt.Fprintf(writer, "Stages:\n")
Packit 63bb0d
		for _, stage := range cr.Stages {
Packit 63bb0d
			fmt.Fprintf(writer, "Stage: %s\n", stage.Name)
Packit 63bb0d
			enc := json.NewEncoder(writer)
Packit 63bb0d
			enc.SetIndent("", "  ")
Packit 63bb0d
			err := enc.Encode(stage.Options)
Packit 63bb0d
			if err != nil {
Packit 63bb0d
				return err
Packit 63bb0d
			}
Packit 63bb0d
			fmt.Fprintf(writer, "\nOutput:\n%s\n", stage.Output)
Packit 63bb0d
		}
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	if cr.Assembler != nil {
Packit 63bb0d
		fmt.Fprintf(writer, "Assembler %s:\n", cr.Assembler.Name)
Packit 63bb0d
		enc := json.NewEncoder(writer)
Packit 63bb0d
		enc.SetIndent("", "  ")
Packit 63bb0d
		err := enc.Encode(cr.Assembler.Options)
Packit 63bb0d
		if err != nil {
Packit 63bb0d
			return err
Packit 63bb0d
		}
Packit 63bb0d
		fmt.Fprintf(writer, "\nOutput:\n%s\n", cr.Assembler.Output)
Packit 63bb0d
	}
Packit 63bb0d
Packit 63bb0d
	return nil
Packit 63bb0d
}