Tonis Tiigi 13a426fca6
vendor: update buildkit to v0.18.0-rc1
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2024-11-21 12:57:27 -08:00

151 lines
3.5 KiB
Go

package pb
import "encoding/json"
type jsonOp struct {
Inputs []*Input `json:"inputs,omitempty"`
Op struct {
Exec *ExecOp `json:"exec,omitempty"`
Source *SourceOp `json:"source,omitempty"`
File *FileOp `json:"file,omitempty"`
Build *BuildOp `json:"build,omitempty"`
Merge *MergeOp `json:"merge,omitempty"`
Diff *DiffOp `json:"diff,omitempty"`
}
Platform *Platform `json:"platform,omitempty"`
Constraints *WorkerConstraints `json:"constraints,omitempty"`
}
func (m *Op) MarshalJSON() ([]byte, error) {
var v jsonOp
v.Inputs = m.Inputs
switch op := m.Op.(type) {
case *Op_Exec:
v.Op.Exec = op.Exec
case *Op_Source:
v.Op.Source = op.Source
case *Op_File:
v.Op.File = op.File
case *Op_Build:
v.Op.Build = op.Build
case *Op_Merge:
v.Op.Merge = op.Merge
case *Op_Diff:
v.Op.Diff = op.Diff
}
v.Platform = m.Platform
v.Constraints = m.Constraints
return json.Marshal(v)
}
func (m *Op) UnmarshalJSON(data []byte) error {
var v jsonOp
if err := json.Unmarshal(data, &v); err != nil {
return err
}
m.Inputs = v.Inputs
switch {
case v.Op.Exec != nil:
m.Op = &Op_Exec{v.Op.Exec}
case v.Op.Source != nil:
m.Op = &Op_Source{v.Op.Source}
case v.Op.File != nil:
m.Op = &Op_File{v.Op.File}
case v.Op.Build != nil:
m.Op = &Op_Build{v.Op.Build}
case v.Op.Merge != nil:
m.Op = &Op_Merge{v.Op.Merge}
case v.Op.Diff != nil:
m.Op = &Op_Diff{v.Op.Diff}
}
m.Platform = v.Platform
m.Constraints = v.Constraints
return nil
}
type jsonFileAction struct {
Input InputIndex `json:"input"`
SecondaryInput InputIndex `json:"secondaryInput"`
Output OutputIndex `json:"output"`
Action struct {
Copy *FileActionCopy `json:"copy,omitempty"`
Mkfile *FileActionMkFile `json:"mkfile,omitempty"`
Mkdir *FileActionMkDir `json:"mkdir,omitempty"`
Rm *FileActionRm `json:"rm,omitempty"`
}
}
func (m *FileAction) MarshalJSON() ([]byte, error) {
var v jsonFileAction
v.Input = InputIndex(m.Input)
v.SecondaryInput = InputIndex(m.SecondaryInput)
v.Output = OutputIndex(m.Output)
switch action := m.Action.(type) {
case *FileAction_Copy:
v.Action.Copy = action.Copy
case *FileAction_Mkfile:
v.Action.Mkfile = action.Mkfile
case *FileAction_Mkdir:
v.Action.Mkdir = action.Mkdir
case *FileAction_Rm:
v.Action.Rm = action.Rm
}
return json.Marshal(v)
}
func (m *FileAction) UnmarshalJSON(data []byte) error {
var v jsonFileAction
if err := json.Unmarshal(data, &v); err != nil {
return err
}
m.Input = int64(v.Input)
m.SecondaryInput = int64(v.SecondaryInput)
m.Output = int64(v.Output)
switch {
case v.Action.Copy != nil:
m.Action = &FileAction_Copy{v.Action.Copy}
case v.Action.Mkfile != nil:
m.Action = &FileAction_Mkfile{v.Action.Mkfile}
case v.Action.Mkdir != nil:
m.Action = &FileAction_Mkdir{v.Action.Mkdir}
case v.Action.Rm != nil:
m.Action = &FileAction_Rm{v.Action.Rm}
}
return nil
}
type jsonUserOpt struct {
User struct {
ByName *NamedUserOpt `json:"byName,omitempty"`
ByID uint32 `json:"byId,omitempty"`
}
}
func (m *UserOpt) MarshalJSON() ([]byte, error) {
var v jsonUserOpt
switch userOpt := m.User.(type) {
case *UserOpt_ByName:
v.User.ByName = userOpt.ByName
case *UserOpt_ByID:
v.User.ByID = userOpt.ByID
}
return json.Marshal(v)
}
func (m *UserOpt) UnmarshalJSON(data []byte) error {
var v jsonUserOpt
if err := json.Unmarshal(data, &v); err != nil {
return err
}
switch {
case v.User.ByName != nil:
m.User = &UserOpt_ByName{v.User.ByName}
default:
m.User = &UserOpt_ByID{v.User.ByID}
}
return nil
}