mergepatch

package
v0.0.0-...-d63e69c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 7, 2023 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrBadJSONDoc                           = errors.New("invalid JSON document")
	ErrNoListOfLists                        = errors.New("lists of lists are not supported")
	ErrBadPatchFormatForPrimitiveList       = errors.New("invalid patch format of primitive list")
	ErrBadPatchFormatForRetainKeys          = errors.New("invalid patch format of retainKeys")
	ErrBadPatchFormatForSetElementOrderList = errors.New("invalid patch format of setElementOrder list")
	ErrPatchContentNotMatchRetainKeys       = errors.New("patch content doesn't match retainKeys list")
	ErrUnsupportedStrategicMergePatchFormat = errors.New("strategic merge patch format is not supported")
)

Functions

func ErrBadArgKind

func ErrBadArgKind(expected, actual interface{}) error

func ErrBadArgType

func ErrBadArgType(expected, actual interface{}) error

func ErrBadPatchType

func ErrBadPatchType(t interface{}, m map[string]interface{}) error

func ErrNoMergeKey

func ErrNoMergeKey(m map[string]interface{}, k string) error

func HasConflicts

func HasConflicts(left, right interface{}) (bool, error)

HasConflicts returns true if the left and right JSON interface objects overlap with different values in any key. All keys are required to be strings. Since patches of the same Type have congruent keys, this is valid for multiple patch types. This method supports JSON merge patch semantics.

NOTE: Numbers with different types (e.g. int(0) vs int64(0)) will be detected as conflicts.

Make sure the unmarshaling of left and right are consistent (e.g. use the same library).

func IsConflict

func IsConflict(err error) bool

IsConflict returns true if the provided error indicates a conflict between the patch and the current configuration.

func IsPreconditionFailed

func IsPreconditionFailed(err error) bool

IsPreconditionFailed returns true if the provided error indicates a precondition failed.

func ToYAMLOrError

func ToYAMLOrError(v interface{}) string

Types

type ErrConflict

type ErrConflict struct {
	// contains filtered or unexported fields
}

func NewErrConflict

func NewErrConflict(patch, current string) ErrConflict

func (ErrConflict) Error

func (err ErrConflict) Error() string

type ErrPreconditionFailed

type ErrPreconditionFailed struct {
	// contains filtered or unexported fields
}

func NewErrPreconditionFailed

func NewErrPreconditionFailed(target map[string]interface{}) ErrPreconditionFailed

func (ErrPreconditionFailed) Error

func (err ErrPreconditionFailed) Error() string

type PreconditionFunc

type PreconditionFunc func(interface{}) bool

PreconditionFunc asserts that an incompatible change is not present within a patch.

func RequireKeyUnchanged

func RequireKeyUnchanged(key string) PreconditionFunc

RequireKeyUnchanged returns a precondition function that fails if the provided key is present in the patch (indicating that its value has changed).

func RequireMetadataKeyUnchanged

func RequireMetadataKeyUnchanged(key string) PreconditionFunc

RequireMetadataKeyUnchanged creates a precondition function that fails if the metadata.key is present in the patch (indicating its value has changed).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL