mirror of https://github.com/knative/caching.git
upgrade to latest dependencies (#922)
bumping knative.dev/pkg efddeac...f62a97f: > f62a97f Bump github.com/spf13/pflag from 1.0.5 to 1.0.6 (# 3145) > 5be4868 Bump github.com/evanphx/json-patch/v5 from 5.9.0 to 5.9.11 (# 3144) Signed-off-by: Knative Automation <automation@knative.team>
This commit is contained in:
parent
41aa68a551
commit
ed50a5c83f
6
go.mod
6
go.mod
|
@ -11,7 +11,7 @@ require (
|
|||
k8s.io/code-generator v0.31.4
|
||||
k8s.io/kube-openapi v0.0.0-20240808142205-8e686545bdb8
|
||||
knative.dev/hack v0.0.0-20250128013659-5f7f0f50e9de
|
||||
knative.dev/pkg v0.0.0-20250128013458-efddeac3ec35
|
||||
knative.dev/pkg v0.0.0-20250203163623-f62a97fc6ad4
|
||||
)
|
||||
|
||||
require (
|
||||
|
@ -23,7 +23,7 @@ require (
|
|||
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
||||
github.com/emicklei/go-restful/v3 v3.12.1 // indirect
|
||||
github.com/evanphx/json-patch/v5 v5.9.0 // indirect
|
||||
github.com/evanphx/json-patch/v5 v5.9.11 // indirect
|
||||
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
|
||||
github.com/go-kit/log v0.2.1 // indirect
|
||||
github.com/go-logfmt/logfmt v0.5.1 // indirect
|
||||
|
@ -53,7 +53,7 @@ require (
|
|||
github.com/prometheus/common v0.55.0 // indirect
|
||||
github.com/prometheus/procfs v0.15.1 // indirect
|
||||
github.com/prometheus/statsd_exporter v0.22.7 // indirect
|
||||
github.com/spf13/pflag v1.0.5 // indirect
|
||||
github.com/spf13/pflag v1.0.6 // indirect
|
||||
github.com/x448/float16 v0.8.4 // indirect
|
||||
go.opencensus.io v0.24.0 // indirect
|
||||
go.uber.org/multierr v1.11.0 // indirect
|
||||
|
|
11
go.sum
11
go.sum
|
@ -74,8 +74,8 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m
|
|||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||
github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lShz4oaXpDTX2bLe7ls=
|
||||
github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
|
||||
github.com/evanphx/json-patch/v5 v5.9.0 h1:kcBlZQbplgElYIlo/n1hJbls2z/1awpXxpRi0/FOJfg=
|
||||
github.com/evanphx/json-patch/v5 v5.9.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ=
|
||||
github.com/evanphx/json-patch/v5 v5.9.11 h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU=
|
||||
github.com/evanphx/json-patch/v5 v5.9.11/go.mod h1:3j+LviiESTElxA4p3EMKAB9HXj3/XEtnUf6OZxqIQTM=
|
||||
github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E=
|
||||
github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
|
||||
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||
|
@ -282,8 +282,9 @@ github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99
|
|||
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
|
||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
||||
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
|
||||
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
||||
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||
github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
|
||||
github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||
|
@ -683,8 +684,8 @@ k8s.io/utils v0.0.0-20240711033017-18e509b52bc8 h1:pUdcCO1Lk/tbT5ztQWOBi5HBgbBP1
|
|||
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
|
||||
knative.dev/hack v0.0.0-20250128013659-5f7f0f50e9de h1:9xWkakMP0rpTpEIi9iRfkDsqhe2XbuyJdBkrlPB2Yjs=
|
||||
knative.dev/hack v0.0.0-20250128013659-5f7f0f50e9de/go.mod h1:R0ritgYtjLDO9527h5vb5X6gfvt5LCrJ55BNbVDsWiY=
|
||||
knative.dev/pkg v0.0.0-20250128013458-efddeac3ec35 h1:FEk78RvL8yTuu/RczMXIo/ahhP8uaR3gPO20ZUymH5w=
|
||||
knative.dev/pkg v0.0.0-20250128013458-efddeac3ec35/go.mod h1:8hCNDHVxfWH0OBbPGvupXOqxMJPOqVrxC1Ar+/Gd28o=
|
||||
knative.dev/pkg v0.0.0-20250203163623-f62a97fc6ad4 h1:dHkehXNqUAuRtHr0LjGqBC3Uztuj6LcOrOdqCI4c85s=
|
||||
knative.dev/pkg v0.0.0-20250203163623-f62a97fc6ad4/go.mod h1:T4d91cYeEBb9tpz4JqoqA77Px/rhq529heP6NKoknSI=
|
||||
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
|
||||
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
|
||||
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
|
||||
|
|
|
@ -103,8 +103,8 @@ func pruneAryNulls(ary *partialArray, options *ApplyOptions) *partialArray {
|
|||
return ary
|
||||
}
|
||||
|
||||
var errBadJSONDoc = fmt.Errorf("Invalid JSON Document")
|
||||
var errBadJSONPatch = fmt.Errorf("Invalid JSON Patch")
|
||||
var ErrBadJSONDoc = fmt.Errorf("Invalid JSON Document")
|
||||
var ErrBadJSONPatch = fmt.Errorf("Invalid JSON Patch")
|
||||
var errBadMergeTypes = fmt.Errorf("Mismatched JSON Documents")
|
||||
|
||||
// MergeMergePatches merges two merge patches together, such that
|
||||
|
@ -121,11 +121,11 @@ func MergePatch(docData, patchData []byte) ([]byte, error) {
|
|||
|
||||
func doMergePatch(docData, patchData []byte, mergeMerge bool) ([]byte, error) {
|
||||
if !json.Valid(docData) {
|
||||
return nil, errBadJSONDoc
|
||||
return nil, ErrBadJSONDoc
|
||||
}
|
||||
|
||||
if !json.Valid(patchData) {
|
||||
return nil, errBadJSONPatch
|
||||
return nil, ErrBadJSONPatch
|
||||
}
|
||||
|
||||
options := NewApplyOptions()
|
||||
|
@ -143,7 +143,7 @@ func doMergePatch(docData, patchData []byte, mergeMerge bool) ([]byte, error) {
|
|||
patchErr := patch.UnmarshalJSON(patchData)
|
||||
|
||||
if isSyntaxError(docErr) {
|
||||
return nil, errBadJSONDoc
|
||||
return nil, ErrBadJSONDoc
|
||||
}
|
||||
|
||||
if isSyntaxError(patchErr) {
|
||||
|
@ -151,7 +151,7 @@ func doMergePatch(docData, patchData []byte, mergeMerge bool) ([]byte, error) {
|
|||
}
|
||||
|
||||
if docErr == nil && doc.obj == nil {
|
||||
return nil, errBadJSONDoc
|
||||
return nil, ErrBadJSONDoc
|
||||
}
|
||||
|
||||
if patchErr == nil && patch.obj == nil {
|
||||
|
@ -175,7 +175,7 @@ func doMergePatch(docData, patchData []byte, mergeMerge bool) ([]byte, error) {
|
|||
if json.Valid(patchData) {
|
||||
return patchData, nil
|
||||
}
|
||||
return nil, errBadJSONPatch
|
||||
return nil, ErrBadJSONPatch
|
||||
}
|
||||
|
||||
pruneAryNulls(patchAry, options)
|
||||
|
@ -183,7 +183,7 @@ func doMergePatch(docData, patchData []byte, mergeMerge bool) ([]byte, error) {
|
|||
out, patchErr := json.Marshal(patchAry.nodes)
|
||||
|
||||
if patchErr != nil {
|
||||
return nil, errBadJSONPatch
|
||||
return nil, ErrBadJSONPatch
|
||||
}
|
||||
|
||||
return out, nil
|
||||
|
@ -256,12 +256,12 @@ func createObjectMergePatch(originalJSON, modifiedJSON []byte) ([]byte, error) {
|
|||
|
||||
err := unmarshal(originalJSON, &originalDoc)
|
||||
if err != nil {
|
||||
return nil, errBadJSONDoc
|
||||
return nil, ErrBadJSONDoc
|
||||
}
|
||||
|
||||
err = unmarshal(modifiedJSON, &modifiedDoc)
|
||||
if err != nil {
|
||||
return nil, errBadJSONDoc
|
||||
return nil, ErrBadJSONDoc
|
||||
}
|
||||
|
||||
dest, err := getDiff(originalDoc, modifiedDoc)
|
||||
|
@ -286,17 +286,17 @@ func createArrayMergePatch(originalJSON, modifiedJSON []byte) ([]byte, error) {
|
|||
|
||||
err := unmarshal(originalJSON, &originalDocs)
|
||||
if err != nil {
|
||||
return nil, errBadJSONDoc
|
||||
return nil, ErrBadJSONDoc
|
||||
}
|
||||
|
||||
err = unmarshal(modifiedJSON, &modifiedDocs)
|
||||
if err != nil {
|
||||
return nil, errBadJSONDoc
|
||||
return nil, ErrBadJSONDoc
|
||||
}
|
||||
|
||||
total := len(originalDocs)
|
||||
if len(modifiedDocs) != total {
|
||||
return nil, errBadJSONDoc
|
||||
return nil, ErrBadJSONDoc
|
||||
}
|
||||
|
||||
result := []json.RawMessage{}
|
||||
|
|
|
@ -2,13 +2,13 @@ package jsonpatch
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strconv"
|
||||
"strings"
|
||||
"unicode"
|
||||
|
||||
"github.com/evanphx/json-patch/v5/internal/json"
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -461,7 +461,7 @@ func (o Operation) Path() (string, error) {
|
|||
return op, nil
|
||||
}
|
||||
|
||||
return "unknown", errors.Wrapf(ErrMissing, "operation missing path field")
|
||||
return "unknown", fmt.Errorf("operation missing path field: %w", ErrMissing)
|
||||
}
|
||||
|
||||
// From reads the "from" field of the Operation.
|
||||
|
@ -478,7 +478,7 @@ func (o Operation) From() (string, error) {
|
|||
return op, nil
|
||||
}
|
||||
|
||||
return "unknown", errors.Wrapf(ErrMissing, "operation, missing from field")
|
||||
return "unknown", fmt.Errorf("operation, missing from field: %w", ErrMissing)
|
||||
}
|
||||
|
||||
func (o Operation) value() *lazyNode {
|
||||
|
@ -511,7 +511,7 @@ func (o Operation) ValueInterface() (interface{}, error) {
|
|||
return v, nil
|
||||
}
|
||||
|
||||
return nil, errors.Wrapf(ErrMissing, "operation, missing value field")
|
||||
return nil, fmt.Errorf("operation, missing value field: %w", ErrMissing)
|
||||
}
|
||||
|
||||
func isArray(buf []byte) bool {
|
||||
|
@ -610,7 +610,7 @@ func (d *partialDoc) get(key string, options *ApplyOptions) (*lazyNode, error) {
|
|||
|
||||
v, ok := d.obj[key]
|
||||
if !ok {
|
||||
return v, errors.Wrapf(ErrMissing, "unable to get nonexistent key: %s", key)
|
||||
return v, fmt.Errorf("unable to get nonexistent key: %s: %w", key, ErrMissing)
|
||||
}
|
||||
return v, nil
|
||||
}
|
||||
|
@ -625,7 +625,7 @@ func (d *partialDoc) remove(key string, options *ApplyOptions) error {
|
|||
if options.AllowMissingPathOnRemove {
|
||||
return nil
|
||||
}
|
||||
return errors.Wrapf(ErrMissing, "unable to remove nonexistent key: %s", key)
|
||||
return fmt.Errorf("unable to remove nonexistent key: %s: %w", key, ErrMissing)
|
||||
}
|
||||
idx := -1
|
||||
for i, k := range d.keys {
|
||||
|
@ -649,10 +649,10 @@ func (d *partialArray) set(key string, val *lazyNode, options *ApplyOptions) err
|
|||
|
||||
if idx < 0 {
|
||||
if !options.SupportNegativeIndices {
|
||||
return errors.Wrapf(ErrInvalidIndex, "Unable to access invalid index: %d", idx)
|
||||
return fmt.Errorf("Unable to access invalid index: %d: %w", idx, ErrInvalidIndex)
|
||||
}
|
||||
if idx < -len(d.nodes) {
|
||||
return errors.Wrapf(ErrInvalidIndex, "Unable to access invalid index: %d", idx)
|
||||
return fmt.Errorf("Unable to access invalid index: %d: %w", idx, ErrInvalidIndex)
|
||||
}
|
||||
idx += len(d.nodes)
|
||||
}
|
||||
|
@ -669,7 +669,7 @@ func (d *partialArray) add(key string, val *lazyNode, options *ApplyOptions) err
|
|||
|
||||
idx, err := strconv.Atoi(key)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "value was not a proper array index: '%s'", key)
|
||||
return fmt.Errorf("value was not a proper array index: '%s': %w", key, err)
|
||||
}
|
||||
|
||||
sz := len(d.nodes) + 1
|
||||
|
@ -679,15 +679,15 @@ func (d *partialArray) add(key string, val *lazyNode, options *ApplyOptions) err
|
|||
cur := d
|
||||
|
||||
if idx >= len(ary) {
|
||||
return errors.Wrapf(ErrInvalidIndex, "Unable to access invalid index: %d", idx)
|
||||
return fmt.Errorf("Unable to access invalid index: %d: %w", idx, ErrInvalidIndex)
|
||||
}
|
||||
|
||||
if idx < 0 {
|
||||
if !options.SupportNegativeIndices {
|
||||
return errors.Wrapf(ErrInvalidIndex, "Unable to access invalid index: %d", idx)
|
||||
return fmt.Errorf("Unable to access invalid index: %d: %w", idx, ErrInvalidIndex)
|
||||
}
|
||||
if idx < -len(ary) {
|
||||
return errors.Wrapf(ErrInvalidIndex, "Unable to access invalid index: %d", idx)
|
||||
return fmt.Errorf("Unable to access invalid index: %d: %w", idx, ErrInvalidIndex)
|
||||
}
|
||||
idx += len(ary)
|
||||
}
|
||||
|
@ -713,16 +713,16 @@ func (d *partialArray) get(key string, options *ApplyOptions) (*lazyNode, error)
|
|||
|
||||
if idx < 0 {
|
||||
if !options.SupportNegativeIndices {
|
||||
return nil, errors.Wrapf(ErrInvalidIndex, "Unable to access invalid index: %d", idx)
|
||||
return nil, fmt.Errorf("Unable to access invalid index: %d: %w", idx, ErrInvalidIndex)
|
||||
}
|
||||
if idx < -len(d.nodes) {
|
||||
return nil, errors.Wrapf(ErrInvalidIndex, "Unable to access invalid index: %d", idx)
|
||||
return nil, fmt.Errorf("Unable to access invalid index: %d: %w", idx, ErrInvalidIndex)
|
||||
}
|
||||
idx += len(d.nodes)
|
||||
}
|
||||
|
||||
if idx >= len(d.nodes) {
|
||||
return nil, errors.Wrapf(ErrInvalidIndex, "Unable to access invalid index: %d", idx)
|
||||
return nil, fmt.Errorf("Unable to access invalid index: %d: %w", idx, ErrInvalidIndex)
|
||||
}
|
||||
|
||||
return d.nodes[idx], nil
|
||||
|
@ -740,18 +740,18 @@ func (d *partialArray) remove(key string, options *ApplyOptions) error {
|
|||
if options.AllowMissingPathOnRemove {
|
||||
return nil
|
||||
}
|
||||
return errors.Wrapf(ErrInvalidIndex, "Unable to access invalid index: %d", idx)
|
||||
return fmt.Errorf("Unable to access invalid index: %d: %w", idx, ErrInvalidIndex)
|
||||
}
|
||||
|
||||
if idx < 0 {
|
||||
if !options.SupportNegativeIndices {
|
||||
return errors.Wrapf(ErrInvalidIndex, "Unable to access invalid index: %d", idx)
|
||||
return fmt.Errorf("Unable to access invalid index: %d: %w", idx, ErrInvalidIndex)
|
||||
}
|
||||
if idx < -len(cur.nodes) {
|
||||
if options.AllowMissingPathOnRemove {
|
||||
return nil
|
||||
}
|
||||
return errors.Wrapf(ErrInvalidIndex, "Unable to access invalid index: %d", idx)
|
||||
return fmt.Errorf("Unable to access invalid index: %d: %w", idx, ErrInvalidIndex)
|
||||
}
|
||||
idx += len(cur.nodes)
|
||||
}
|
||||
|
@ -768,7 +768,7 @@ func (d *partialArray) remove(key string, options *ApplyOptions) error {
|
|||
func (p Patch) add(doc *container, op Operation, options *ApplyOptions) error {
|
||||
path, err := op.Path()
|
||||
if err != nil {
|
||||
return errors.Wrapf(ErrMissing, "add operation failed to decode path")
|
||||
return fmt.Errorf("add operation failed to decode path: %w", ErrMissing)
|
||||
}
|
||||
|
||||
// special case, adding to empty means replacing the container with the value given
|
||||
|
@ -809,12 +809,12 @@ func (p Patch) add(doc *container, op Operation, options *ApplyOptions) error {
|
|||
con, key := findObject(doc, path, options)
|
||||
|
||||
if con == nil {
|
||||
return errors.Wrapf(ErrMissing, "add operation does not apply: doc is missing path: \"%s\"", path)
|
||||
return fmt.Errorf("add operation does not apply: doc is missing path: \"%s\": %w", path, ErrMissing)
|
||||
}
|
||||
|
||||
err = con.add(key, op.value(), options)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "error in add for path: '%s'", path)
|
||||
return fmt.Errorf("error in add for path: '%s': %w", path, err)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
@ -867,11 +867,11 @@ func ensurePathExists(pd *container, path string, options *ApplyOptions) error {
|
|||
if arrIndex < 0 {
|
||||
|
||||
if !options.SupportNegativeIndices {
|
||||
return errors.Wrapf(ErrInvalidIndex, "Unable to ensure path for invalid index: %d", arrIndex)
|
||||
return fmt.Errorf("Unable to ensure path for invalid index: %d: %w", arrIndex, ErrInvalidIndex)
|
||||
}
|
||||
|
||||
if arrIndex < -1 {
|
||||
return errors.Wrapf(ErrInvalidIndex, "Unable to ensure path for negative index other than -1: %d", arrIndex)
|
||||
return fmt.Errorf("Unable to ensure path for negative index other than -1: %d: %w", arrIndex, ErrInvalidIndex)
|
||||
}
|
||||
|
||||
arrIndex = 0
|
||||
|
@ -918,11 +918,11 @@ func validateOperation(op Operation) error {
|
|||
switch op.Kind() {
|
||||
case "add", "replace":
|
||||
if _, err := op.ValueInterface(); err != nil {
|
||||
return errors.Wrapf(err, "failed to decode 'value'")
|
||||
return fmt.Errorf("failed to decode 'value': %w", err)
|
||||
}
|
||||
case "move", "copy":
|
||||
if _, err := op.From(); err != nil {
|
||||
return errors.Wrapf(err, "failed to decode 'from'")
|
||||
return fmt.Errorf("failed to decode 'from': %w", err)
|
||||
}
|
||||
case "remove", "test":
|
||||
default:
|
||||
|
@ -930,7 +930,7 @@ func validateOperation(op Operation) error {
|
|||
}
|
||||
|
||||
if _, err := op.Path(); err != nil {
|
||||
return errors.Wrapf(err, "failed to decode 'path'")
|
||||
return fmt.Errorf("failed to decode 'path': %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
@ -941,10 +941,10 @@ func validatePatch(p Patch) error {
|
|||
if err := validateOperation(op); err != nil {
|
||||
opData, infoErr := json.Marshal(op)
|
||||
if infoErr != nil {
|
||||
return errors.Wrapf(err, "invalid operation")
|
||||
return fmt.Errorf("invalid operation: %w", err)
|
||||
}
|
||||
|
||||
return errors.Wrapf(err, "invalid operation %s", opData)
|
||||
return fmt.Errorf("invalid operation %s: %w", opData, err)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -954,7 +954,7 @@ func validatePatch(p Patch) error {
|
|||
func (p Patch) remove(doc *container, op Operation, options *ApplyOptions) error {
|
||||
path, err := op.Path()
|
||||
if err != nil {
|
||||
return errors.Wrapf(ErrMissing, "remove operation failed to decode path")
|
||||
return fmt.Errorf("remove operation failed to decode path: %w", ErrMissing)
|
||||
}
|
||||
|
||||
con, key := findObject(doc, path, options)
|
||||
|
@ -963,12 +963,12 @@ func (p Patch) remove(doc *container, op Operation, options *ApplyOptions) error
|
|||
if options.AllowMissingPathOnRemove {
|
||||
return nil
|
||||
}
|
||||
return errors.Wrapf(ErrMissing, "remove operation does not apply: doc is missing path: \"%s\"", path)
|
||||
return fmt.Errorf("remove operation does not apply: doc is missing path: \"%s\": %w", path, ErrMissing)
|
||||
}
|
||||
|
||||
err = con.remove(key, options)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "error in remove for path: '%s'", path)
|
||||
return fmt.Errorf("error in remove for path: '%s': %w", path, err)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
@ -977,7 +977,7 @@ func (p Patch) remove(doc *container, op Operation, options *ApplyOptions) error
|
|||
func (p Patch) replace(doc *container, op Operation, options *ApplyOptions) error {
|
||||
path, err := op.Path()
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "replace operation failed to decode path")
|
||||
return fmt.Errorf("replace operation failed to decode path: %w", err)
|
||||
}
|
||||
|
||||
if path == "" {
|
||||
|
@ -986,7 +986,7 @@ func (p Patch) replace(doc *container, op Operation, options *ApplyOptions) erro
|
|||
if val.which == eRaw {
|
||||
if !val.tryDoc() {
|
||||
if !val.tryAry() {
|
||||
return errors.Wrapf(err, "replace operation value must be object or array")
|
||||
return fmt.Errorf("replace operation value must be object or array: %w", err)
|
||||
}
|
||||
} else {
|
||||
val.doc.opts = options
|
||||
|
@ -999,7 +999,7 @@ func (p Patch) replace(doc *container, op Operation, options *ApplyOptions) erro
|
|||
case eDoc:
|
||||
*doc = val.doc
|
||||
case eRaw:
|
||||
return errors.Wrapf(err, "replace operation hit impossible case")
|
||||
return fmt.Errorf("replace operation hit impossible case: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
@ -1008,17 +1008,17 @@ func (p Patch) replace(doc *container, op Operation, options *ApplyOptions) erro
|
|||
con, key := findObject(doc, path, options)
|
||||
|
||||
if con == nil {
|
||||
return errors.Wrapf(ErrMissing, "replace operation does not apply: doc is missing path: %s", path)
|
||||
return fmt.Errorf("replace operation does not apply: doc is missing path: %s: %w", path, ErrMissing)
|
||||
}
|
||||
|
||||
_, ok := con.get(key, options)
|
||||
if ok != nil {
|
||||
return errors.Wrapf(ErrMissing, "replace operation does not apply: doc is missing key: %s", path)
|
||||
return fmt.Errorf("replace operation does not apply: doc is missing key: %s: %w", path, ErrMissing)
|
||||
}
|
||||
|
||||
err = con.set(key, op.value(), options)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "error in remove for path: '%s'", path)
|
||||
return fmt.Errorf("error in remove for path: '%s': %w", path, err)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
@ -1027,43 +1027,43 @@ func (p Patch) replace(doc *container, op Operation, options *ApplyOptions) erro
|
|||
func (p Patch) move(doc *container, op Operation, options *ApplyOptions) error {
|
||||
from, err := op.From()
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "move operation failed to decode from")
|
||||
return fmt.Errorf("move operation failed to decode from: %w", err)
|
||||
}
|
||||
|
||||
if from == "" {
|
||||
return errors.Wrapf(ErrInvalid, "unable to move entire document to another path")
|
||||
return fmt.Errorf("unable to move entire document to another path: %w", ErrInvalid)
|
||||
}
|
||||
|
||||
con, key := findObject(doc, from, options)
|
||||
|
||||
if con == nil {
|
||||
return errors.Wrapf(ErrMissing, "move operation does not apply: doc is missing from path: %s", from)
|
||||
return fmt.Errorf("move operation does not apply: doc is missing from path: %s: %w", from, ErrMissing)
|
||||
}
|
||||
|
||||
val, err := con.get(key, options)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "error in move for path: '%s'", key)
|
||||
return fmt.Errorf("error in move for path: '%s': %w", key, err)
|
||||
}
|
||||
|
||||
err = con.remove(key, options)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "error in move for path: '%s'", key)
|
||||
return fmt.Errorf("error in move for path: '%s': %w", key, err)
|
||||
}
|
||||
|
||||
path, err := op.Path()
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "move operation failed to decode path")
|
||||
return fmt.Errorf("move operation failed to decode path: %w", err)
|
||||
}
|
||||
|
||||
con, key = findObject(doc, path, options)
|
||||
|
||||
if con == nil {
|
||||
return errors.Wrapf(ErrMissing, "move operation does not apply: doc is missing destination path: %s", path)
|
||||
return fmt.Errorf("move operation does not apply: doc is missing destination path: %s: %w", path, ErrMissing)
|
||||
}
|
||||
|
||||
err = con.add(key, val, options)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "error in move for path: '%s'", path)
|
||||
return fmt.Errorf("error in move for path: '%s': %w", path, err)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
@ -1072,7 +1072,7 @@ func (p Patch) move(doc *container, op Operation, options *ApplyOptions) error {
|
|||
func (p Patch) test(doc *container, op Operation, options *ApplyOptions) error {
|
||||
path, err := op.Path()
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "test operation failed to decode path")
|
||||
return fmt.Errorf("test operation failed to decode path: %w", err)
|
||||
}
|
||||
|
||||
if path == "" {
|
||||
|
@ -1091,18 +1091,18 @@ func (p Patch) test(doc *container, op Operation, options *ApplyOptions) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
return errors.Wrapf(ErrTestFailed, "testing value %s failed", path)
|
||||
return fmt.Errorf("testing value %s failed: %w", path, ErrTestFailed)
|
||||
}
|
||||
|
||||
con, key := findObject(doc, path, options)
|
||||
|
||||
if con == nil {
|
||||
return errors.Wrapf(ErrMissing, "test operation does not apply: is missing path: %s", path)
|
||||
return fmt.Errorf("test operation does not apply: is missing path: %s: %w", path, ErrMissing)
|
||||
}
|
||||
|
||||
val, err := con.get(key, options)
|
||||
if err != nil && errors.Cause(err) != ErrMissing {
|
||||
return errors.Wrapf(err, "error in test for path: '%s'", path)
|
||||
if err != nil && errors.Unwrap(err) != ErrMissing {
|
||||
return fmt.Errorf("error in test for path: '%s': %w", path, err)
|
||||
}
|
||||
|
||||
ov := op.value()
|
||||
|
@ -1111,49 +1111,49 @@ func (p Patch) test(doc *container, op Operation, options *ApplyOptions) error {
|
|||
if ov.isNull() {
|
||||
return nil
|
||||
}
|
||||
return errors.Wrapf(ErrTestFailed, "testing value %s failed", path)
|
||||
return fmt.Errorf("testing value %s failed: %w", path, ErrTestFailed)
|
||||
} else if ov.isNull() {
|
||||
return errors.Wrapf(ErrTestFailed, "testing value %s failed", path)
|
||||
return fmt.Errorf("testing value %s failed: %w", path, ErrTestFailed)
|
||||
}
|
||||
|
||||
if val.equal(op.value()) {
|
||||
return nil
|
||||
}
|
||||
|
||||
return errors.Wrapf(ErrTestFailed, "testing value %s failed", path)
|
||||
return fmt.Errorf("testing value %s failed: %w", path, ErrTestFailed)
|
||||
}
|
||||
|
||||
func (p Patch) copy(doc *container, op Operation, accumulatedCopySize *int64, options *ApplyOptions) error {
|
||||
from, err := op.From()
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "copy operation failed to decode from")
|
||||
return fmt.Errorf("copy operation failed to decode from: %w", err)
|
||||
}
|
||||
|
||||
con, key := findObject(doc, from, options)
|
||||
|
||||
if con == nil {
|
||||
return errors.Wrapf(ErrMissing, "copy operation does not apply: doc is missing from path: \"%s\"", from)
|
||||
return fmt.Errorf("copy operation does not apply: doc is missing from path: \"%s\": %w", from, ErrMissing)
|
||||
}
|
||||
|
||||
val, err := con.get(key, options)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "error in copy for from: '%s'", from)
|
||||
return fmt.Errorf("error in copy for from: '%s': %w", from, err)
|
||||
}
|
||||
|
||||
path, err := op.Path()
|
||||
if err != nil {
|
||||
return errors.Wrapf(ErrMissing, "copy operation failed to decode path")
|
||||
return fmt.Errorf("copy operation failed to decode path: %w", ErrMissing)
|
||||
}
|
||||
|
||||
con, key = findObject(doc, path, options)
|
||||
|
||||
if con == nil {
|
||||
return errors.Wrapf(ErrMissing, "copy operation does not apply: doc is missing destination path: %s", path)
|
||||
return fmt.Errorf("copy operation does not apply: doc is missing destination path: %s: %w", path, ErrMissing)
|
||||
}
|
||||
|
||||
valCopy, sz, err := deepCopy(val, options)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "error while performing deep copy")
|
||||
return fmt.Errorf("error while performing deep copy: %w", err)
|
||||
}
|
||||
|
||||
(*accumulatedCopySize) += int64(sz)
|
||||
|
@ -1163,7 +1163,7 @@ func (p Patch) copy(doc *container, op Operation, accumulatedCopySize *int64, op
|
|||
|
||||
err = con.add(key, valCopy, options)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "error while adding value during copy")
|
||||
return fmt.Errorf("error while adding value during copy: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_size = 4
|
||||
indent_style = space
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.go]
|
||||
indent_style = tab
|
|
@ -0,0 +1,4 @@
|
|||
linters:
|
||||
disable-all: true
|
||||
enable:
|
||||
- nolintlint
|
|
@ -160,7 +160,7 @@ type FlagSet struct {
|
|||
args []string // arguments after flags
|
||||
argsLenAtDash int // len(args) when a '--' was located when parsing, or -1 if no --
|
||||
errorHandling ErrorHandling
|
||||
output io.Writer // nil means stderr; use out() accessor
|
||||
output io.Writer // nil means stderr; use Output() accessor
|
||||
interspersed bool // allow interspersed option/non-option args
|
||||
normalizeNameFunc func(f *FlagSet, name string) NormalizedName
|
||||
|
||||
|
@ -255,13 +255,20 @@ func (f *FlagSet) normalizeFlagName(name string) NormalizedName {
|
|||
return n(f, name)
|
||||
}
|
||||
|
||||
func (f *FlagSet) out() io.Writer {
|
||||
// Output returns the destination for usage and error messages. os.Stderr is returned if
|
||||
// output was not set or was set to nil.
|
||||
func (f *FlagSet) Output() io.Writer {
|
||||
if f.output == nil {
|
||||
return os.Stderr
|
||||
}
|
||||
return f.output
|
||||
}
|
||||
|
||||
// Name returns the name of the flag set.
|
||||
func (f *FlagSet) Name() string {
|
||||
return f.name
|
||||
}
|
||||
|
||||
// SetOutput sets the destination for usage and error messages.
|
||||
// If output is nil, os.Stderr is used.
|
||||
func (f *FlagSet) SetOutput(output io.Writer) {
|
||||
|
@ -358,7 +365,7 @@ func (f *FlagSet) ShorthandLookup(name string) *Flag {
|
|||
}
|
||||
if len(name) > 1 {
|
||||
msg := fmt.Sprintf("can not look up shorthand which is more than one ASCII character: %q", name)
|
||||
fmt.Fprintf(f.out(), msg)
|
||||
fmt.Fprintf(f.Output(), msg)
|
||||
panic(msg)
|
||||
}
|
||||
c := name[0]
|
||||
|
@ -482,7 +489,7 @@ func (f *FlagSet) Set(name, value string) error {
|
|||
}
|
||||
|
||||
if flag.Deprecated != "" {
|
||||
fmt.Fprintf(f.out(), "Flag --%s has been deprecated, %s\n", flag.Name, flag.Deprecated)
|
||||
fmt.Fprintf(f.Output(), "Flag --%s has been deprecated, %s\n", flag.Name, flag.Deprecated)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -523,7 +530,7 @@ func Set(name, value string) error {
|
|||
// otherwise, the default values of all defined flags in the set.
|
||||
func (f *FlagSet) PrintDefaults() {
|
||||
usages := f.FlagUsages()
|
||||
fmt.Fprint(f.out(), usages)
|
||||
fmt.Fprint(f.Output(), usages)
|
||||
}
|
||||
|
||||
// defaultIsZeroValue returns true if the default value for this flag represents
|
||||
|
@ -758,7 +765,7 @@ func PrintDefaults() {
|
|||
|
||||
// defaultUsage is the default function to print a usage message.
|
||||
func defaultUsage(f *FlagSet) {
|
||||
fmt.Fprintf(f.out(), "Usage of %s:\n", f.name)
|
||||
fmt.Fprintf(f.Output(), "Usage of %s:\n", f.name)
|
||||
f.PrintDefaults()
|
||||
}
|
||||
|
||||
|
@ -844,7 +851,7 @@ func (f *FlagSet) AddFlag(flag *Flag) {
|
|||
_, alreadyThere := f.formal[normalizedFlagName]
|
||||
if alreadyThere {
|
||||
msg := fmt.Sprintf("%s flag redefined: %s", f.name, flag.Name)
|
||||
fmt.Fprintln(f.out(), msg)
|
||||
fmt.Fprintln(f.Output(), msg)
|
||||
panic(msg) // Happens only if flags are declared with identical names
|
||||
}
|
||||
if f.formal == nil {
|
||||
|
@ -860,7 +867,7 @@ func (f *FlagSet) AddFlag(flag *Flag) {
|
|||
}
|
||||
if len(flag.Shorthand) > 1 {
|
||||
msg := fmt.Sprintf("%q shorthand is more than one ASCII character", flag.Shorthand)
|
||||
fmt.Fprintf(f.out(), msg)
|
||||
fmt.Fprintf(f.Output(), msg)
|
||||
panic(msg)
|
||||
}
|
||||
if f.shorthands == nil {
|
||||
|
@ -870,7 +877,7 @@ func (f *FlagSet) AddFlag(flag *Flag) {
|
|||
used, alreadyThere := f.shorthands[c]
|
||||
if alreadyThere {
|
||||
msg := fmt.Sprintf("unable to redefine %q shorthand in %q flagset: it's already used for %q flag", c, f.name, used.Name)
|
||||
fmt.Fprintf(f.out(), msg)
|
||||
fmt.Fprintf(f.Output(), msg)
|
||||
panic(msg)
|
||||
}
|
||||
f.shorthands[c] = flag
|
||||
|
@ -909,7 +916,7 @@ func VarP(value Value, name, shorthand, usage string) {
|
|||
func (f *FlagSet) failf(format string, a ...interface{}) error {
|
||||
err := fmt.Errorf(format, a...)
|
||||
if f.errorHandling != ContinueOnError {
|
||||
fmt.Fprintln(f.out(), err)
|
||||
fmt.Fprintln(f.Output(), err)
|
||||
f.usage()
|
||||
}
|
||||
return err
|
||||
|
@ -1060,7 +1067,7 @@ func (f *FlagSet) parseSingleShortArg(shorthands string, args []string, fn parse
|
|||
}
|
||||
|
||||
if flag.ShorthandDeprecated != "" {
|
||||
fmt.Fprintf(f.out(), "Flag shorthand -%s has been deprecated, %s\n", flag.Shorthand, flag.ShorthandDeprecated)
|
||||
fmt.Fprintf(f.Output(), "Flag shorthand -%s has been deprecated, %s\n", flag.Shorthand, flag.ShorthandDeprecated)
|
||||
}
|
||||
|
||||
err = fn(flag, value)
|
||||
|
|
|
@ -16,6 +16,9 @@ func newIPValue(val net.IP, p *net.IP) *ipValue {
|
|||
|
||||
func (i *ipValue) String() string { return net.IP(*i).String() }
|
||||
func (i *ipValue) Set(s string) error {
|
||||
if s == "" {
|
||||
return nil
|
||||
}
|
||||
ip := net.ParseIP(strings.TrimSpace(s))
|
||||
if ip == nil {
|
||||
return fmt.Errorf("failed to parse IP: %q", s)
|
||||
|
|
|
@ -0,0 +1,147 @@
|
|||
package pflag
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"net"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// -- ipNetSlice Value
|
||||
type ipNetSliceValue struct {
|
||||
value *[]net.IPNet
|
||||
changed bool
|
||||
}
|
||||
|
||||
func newIPNetSliceValue(val []net.IPNet, p *[]net.IPNet) *ipNetSliceValue {
|
||||
ipnsv := new(ipNetSliceValue)
|
||||
ipnsv.value = p
|
||||
*ipnsv.value = val
|
||||
return ipnsv
|
||||
}
|
||||
|
||||
// Set converts, and assigns, the comma-separated IPNet argument string representation as the []net.IPNet value of this flag.
|
||||
// If Set is called on a flag that already has a []net.IPNet assigned, the newly converted values will be appended.
|
||||
func (s *ipNetSliceValue) Set(val string) error {
|
||||
|
||||
// remove all quote characters
|
||||
rmQuote := strings.NewReplacer(`"`, "", `'`, "", "`", "")
|
||||
|
||||
// read flag arguments with CSV parser
|
||||
ipNetStrSlice, err := readAsCSV(rmQuote.Replace(val))
|
||||
if err != nil && err != io.EOF {
|
||||
return err
|
||||
}
|
||||
|
||||
// parse ip values into slice
|
||||
out := make([]net.IPNet, 0, len(ipNetStrSlice))
|
||||
for _, ipNetStr := range ipNetStrSlice {
|
||||
_, n, err := net.ParseCIDR(strings.TrimSpace(ipNetStr))
|
||||
if err != nil {
|
||||
return fmt.Errorf("invalid string being converted to CIDR: %s", ipNetStr)
|
||||
}
|
||||
out = append(out, *n)
|
||||
}
|
||||
|
||||
if !s.changed {
|
||||
*s.value = out
|
||||
} else {
|
||||
*s.value = append(*s.value, out...)
|
||||
}
|
||||
|
||||
s.changed = true
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Type returns a string that uniquely represents this flag's type.
|
||||
func (s *ipNetSliceValue) Type() string {
|
||||
return "ipNetSlice"
|
||||
}
|
||||
|
||||
// String defines a "native" format for this net.IPNet slice flag value.
|
||||
func (s *ipNetSliceValue) String() string {
|
||||
|
||||
ipNetStrSlice := make([]string, len(*s.value))
|
||||
for i, n := range *s.value {
|
||||
ipNetStrSlice[i] = n.String()
|
||||
}
|
||||
|
||||
out, _ := writeAsCSV(ipNetStrSlice)
|
||||
return "[" + out + "]"
|
||||
}
|
||||
|
||||
func ipNetSliceConv(val string) (interface{}, error) {
|
||||
val = strings.Trim(val, "[]")
|
||||
// Emtpy string would cause a slice with one (empty) entry
|
||||
if len(val) == 0 {
|
||||
return []net.IPNet{}, nil
|
||||
}
|
||||
ss := strings.Split(val, ",")
|
||||
out := make([]net.IPNet, len(ss))
|
||||
for i, sval := range ss {
|
||||
_, n, err := net.ParseCIDR(strings.TrimSpace(sval))
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("invalid string being converted to CIDR: %s", sval)
|
||||
}
|
||||
out[i] = *n
|
||||
}
|
||||
return out, nil
|
||||
}
|
||||
|
||||
// GetIPNetSlice returns the []net.IPNet value of a flag with the given name
|
||||
func (f *FlagSet) GetIPNetSlice(name string) ([]net.IPNet, error) {
|
||||
val, err := f.getFlagType(name, "ipNetSlice", ipNetSliceConv)
|
||||
if err != nil {
|
||||
return []net.IPNet{}, err
|
||||
}
|
||||
return val.([]net.IPNet), nil
|
||||
}
|
||||
|
||||
// IPNetSliceVar defines a ipNetSlice flag with specified name, default value, and usage string.
|
||||
// The argument p points to a []net.IPNet variable in which to store the value of the flag.
|
||||
func (f *FlagSet) IPNetSliceVar(p *[]net.IPNet, name string, value []net.IPNet, usage string) {
|
||||
f.VarP(newIPNetSliceValue(value, p), name, "", usage)
|
||||
}
|
||||
|
||||
// IPNetSliceVarP is like IPNetSliceVar, but accepts a shorthand letter that can be used after a single dash.
|
||||
func (f *FlagSet) IPNetSliceVarP(p *[]net.IPNet, name, shorthand string, value []net.IPNet, usage string) {
|
||||
f.VarP(newIPNetSliceValue(value, p), name, shorthand, usage)
|
||||
}
|
||||
|
||||
// IPNetSliceVar defines a []net.IPNet flag with specified name, default value, and usage string.
|
||||
// The argument p points to a []net.IPNet variable in which to store the value of the flag.
|
||||
func IPNetSliceVar(p *[]net.IPNet, name string, value []net.IPNet, usage string) {
|
||||
CommandLine.VarP(newIPNetSliceValue(value, p), name, "", usage)
|
||||
}
|
||||
|
||||
// IPNetSliceVarP is like IPNetSliceVar, but accepts a shorthand letter that can be used after a single dash.
|
||||
func IPNetSliceVarP(p *[]net.IPNet, name, shorthand string, value []net.IPNet, usage string) {
|
||||
CommandLine.VarP(newIPNetSliceValue(value, p), name, shorthand, usage)
|
||||
}
|
||||
|
||||
// IPNetSlice defines a []net.IPNet flag with specified name, default value, and usage string.
|
||||
// The return value is the address of a []net.IPNet variable that stores the value of that flag.
|
||||
func (f *FlagSet) IPNetSlice(name string, value []net.IPNet, usage string) *[]net.IPNet {
|
||||
p := []net.IPNet{}
|
||||
f.IPNetSliceVarP(&p, name, "", value, usage)
|
||||
return &p
|
||||
}
|
||||
|
||||
// IPNetSliceP is like IPNetSlice, but accepts a shorthand letter that can be used after a single dash.
|
||||
func (f *FlagSet) IPNetSliceP(name, shorthand string, value []net.IPNet, usage string) *[]net.IPNet {
|
||||
p := []net.IPNet{}
|
||||
f.IPNetSliceVarP(&p, name, shorthand, value, usage)
|
||||
return &p
|
||||
}
|
||||
|
||||
// IPNetSlice defines a []net.IPNet flag with specified name, default value, and usage string.
|
||||
// The return value is the address of a []net.IP variable that stores the value of the flag.
|
||||
func IPNetSlice(name string, value []net.IPNet, usage string) *[]net.IPNet {
|
||||
return CommandLine.IPNetSliceP(name, "", value, usage)
|
||||
}
|
||||
|
||||
// IPNetSliceP is like IPNetSlice, but accepts a shorthand letter that can be used after a single dash.
|
||||
func IPNetSliceP(name, shorthand string, value []net.IPNet, usage string) *[]net.IPNet {
|
||||
return CommandLine.IPNetSliceP(name, shorthand, value, usage)
|
||||
}
|
|
@ -31,11 +31,7 @@ func (s *stringArrayValue) Append(val string) error {
|
|||
func (s *stringArrayValue) Replace(val []string) error {
|
||||
out := make([]string, len(val))
|
||||
for i, d := range val {
|
||||
var err error
|
||||
out[i] = d
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
*s.value = out
|
||||
return nil
|
||||
|
|
|
@ -28,7 +28,7 @@ github.com/davecgh/go-spew/spew
|
|||
## explicit; go 1.13
|
||||
github.com/emicklei/go-restful/v3
|
||||
github.com/emicklei/go-restful/v3/log
|
||||
# github.com/evanphx/json-patch/v5 v5.9.0
|
||||
# github.com/evanphx/json-patch/v5 v5.9.11
|
||||
## explicit; go 1.18
|
||||
github.com/evanphx/json-patch/v5
|
||||
github.com/evanphx/json-patch/v5/internal/json
|
||||
|
@ -150,7 +150,7 @@ github.com/prometheus/procfs/internal/util
|
|||
github.com/prometheus/statsd_exporter/pkg/level
|
||||
github.com/prometheus/statsd_exporter/pkg/mapper
|
||||
github.com/prometheus/statsd_exporter/pkg/mapper/fsm
|
||||
# github.com/spf13/pflag v1.0.5
|
||||
# github.com/spf13/pflag v1.0.6
|
||||
## explicit; go 1.12
|
||||
github.com/spf13/pflag
|
||||
# github.com/x448/float16 v0.8.4
|
||||
|
@ -850,7 +850,7 @@ k8s.io/utils/trace
|
|||
# knative.dev/hack v0.0.0-20250128013659-5f7f0f50e9de
|
||||
## explicit; go 1.21
|
||||
knative.dev/hack
|
||||
# knative.dev/pkg v0.0.0-20250128013458-efddeac3ec35
|
||||
# knative.dev/pkg v0.0.0-20250203163623-f62a97fc6ad4
|
||||
## explicit; go 1.22.7
|
||||
knative.dev/pkg/apis
|
||||
knative.dev/pkg/apis/duck
|
||||
|
|
Loading…
Reference in New Issue