mirror of
https://github.com/containers/podman.git
synced 2025-11-15 02:29:16 +08:00
Vendor in containers/(storage,image, common, buildah)
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
This commit is contained in:
88
vendor/github.com/containers/common/pkg/hooks/0.1.0/hook.go
generated
vendored
Normal file
88
vendor/github.com/containers/common/pkg/hooks/0.1.0/hook.go
generated
vendored
Normal file
@@ -0,0 +1,88 @@
|
||||
// Package hook is the 0.1.0 hook configuration structure.
|
||||
package hook
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"strings"
|
||||
|
||||
current "github.com/containers/common/pkg/hooks/1.0.0"
|
||||
rspec "github.com/opencontainers/runtime-spec/specs-go"
|
||||
)
|
||||
|
||||
// Version is the hook configuration version defined in this package.
|
||||
const Version = "0.1.0"
|
||||
|
||||
// Hook is the hook configuration structure.
|
||||
type Hook struct {
|
||||
Hook *string `json:"hook"`
|
||||
Arguments []string `json:"arguments,omitempty"`
|
||||
|
||||
// https://github.com/cri-o/cri-o/pull/1235
|
||||
Stages []string `json:"stages"`
|
||||
Stage []string `json:"stage"`
|
||||
|
||||
Cmds []string `json:"cmds,omitempty"`
|
||||
Cmd []string `json:"cmd,omitempty"`
|
||||
|
||||
Annotations []string `json:"annotations,omitempty"`
|
||||
Annotation []string `json:"annotation,omitempty"`
|
||||
|
||||
HasBindMounts *bool `json:"hasbindmounts,omitempty"`
|
||||
}
|
||||
|
||||
func Read(content []byte) (hook *current.Hook, err error) {
|
||||
var raw Hook
|
||||
|
||||
if err = json.Unmarshal(content, &raw); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if raw.Hook == nil {
|
||||
return nil, errors.New("missing required property: hook")
|
||||
}
|
||||
|
||||
if raw.Stages == nil {
|
||||
raw.Stages = raw.Stage
|
||||
} else if raw.Stage != nil {
|
||||
return nil, errors.New("cannot set both 'stage' and 'stages'")
|
||||
}
|
||||
if raw.Stages == nil {
|
||||
return nil, errors.New("missing required property: stages")
|
||||
}
|
||||
|
||||
if raw.Cmds == nil {
|
||||
raw.Cmds = raw.Cmd
|
||||
} else if raw.Cmd != nil {
|
||||
return nil, errors.New("cannot set both 'cmd' and 'cmds'")
|
||||
}
|
||||
|
||||
if raw.Annotations == nil {
|
||||
raw.Annotations = raw.Annotation
|
||||
} else if raw.Annotation != nil {
|
||||
return nil, errors.New("cannot set both 'annotation' and 'annotations'")
|
||||
}
|
||||
|
||||
hook = ¤t.Hook{
|
||||
Version: current.Version,
|
||||
Hook: rspec.Hook{
|
||||
Path: *raw.Hook,
|
||||
},
|
||||
When: current.When{
|
||||
Commands: raw.Cmds,
|
||||
HasBindMounts: raw.HasBindMounts,
|
||||
Or: true,
|
||||
},
|
||||
Stages: raw.Stages,
|
||||
}
|
||||
if raw.Arguments != nil {
|
||||
hook.Hook.Args = append([]string{*raw.Hook}, raw.Arguments...)
|
||||
}
|
||||
if raw.Annotations != nil {
|
||||
hook.When.Annotations = map[string]string{
|
||||
".*": strings.Join(raw.Annotations, "|"),
|
||||
}
|
||||
}
|
||||
|
||||
return hook, nil
|
||||
}
|
||||
Reference in New Issue
Block a user