package osbuild2
import (
"encoding/json"
)
type PipelineResult []StageResult
type StageResult struct {
ID string `json:"id"`
Type string `json:"type"`
Output string `json:"output"`
Success bool `json:"success,omitempty"`
Error string `json:"string,omitempty"`
}
// UnmarshalJSON decodes json-encoded StageResult.
//
// This method is here only as a workaround for the default value of the
// success field, see the comment inside the method.
func (sr *StageResult) UnmarshalJSON(data []byte) error {
// Create a StageResult-like object with the Success value set to true
// before json.Unmarshal is called. If the success field isn't in the
// input JSON, the json decoder will not touch it and thus it will still
// be true.
//
// The type alias is needed to prevent recursive calls of this method.
type stageResultAlias StageResult
stageResultDefault := stageResultAlias{
Success: true,
}
err := json.Unmarshal(data, &stageResultDefault)
if err != nil {
return err
}
*sr = StageResult(stageResultDefault)
return nil
}
type Result struct {
Type string `json:"type"`
Success bool `json:"success"`
Error json.RawMessage `json:"error"`
Log map[string]PipelineResult `json:"log"`
}