Skip to content

Commit f41f07f

Browse files
fix(pipeline_resource): switch yaml to json conversion to yq to support anchors in different sections of the yaml (like the dedicated indicators section) (#153)
## What closes #152
1 parent 0fcb6a2 commit f41f07f

File tree

5 files changed

+32
-60
lines changed

5 files changed

+32
-60
lines changed

Diff for: codefresh/internal/datautil/yaml.go

+10-25
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,25 @@
11
package datautil
22

33
import (
4-
"bytes"
54
"io/ioutil"
65
"strings"
76

87
"github.com/mikefarah/yq/v4/pkg/yqlib"
9-
"github.com/sclevine/yj/convert"
108
"gopkg.in/op/go-logging.v1"
119
)
1210

11+
const (
12+
YQ_OUTPUT_FORMAT_JSON = "json"
13+
YQ_OUTPUT_FORMAT_YAML = "yaml"
14+
)
15+
1316
// Yq gets a value from a YAML string using yq
14-
func Yq(yamlString string, expression string) (string, error) {
17+
func Yq(yamlString string, expression string, outputformat string) (string, error) {
1518
yqEncoder := yqlib.NewYamlEncoder(0, false, yqlib.NewDefaultYamlPreferences())
19+
20+
if outputformat == YQ_OUTPUT_FORMAT_JSON {
21+
yqEncoder = yqlib.NewJSONEncoder(0, false, false)
22+
}
1623
yqDecoder := yqlib.NewYamlDecoder(yqlib.NewDefaultYamlPreferences())
1724
yqEvaluator := yqlib.NewStringEvaluator()
1825

@@ -28,25 +35,3 @@ func Yq(yamlString string, expression string) (string, error) {
2835
}
2936
return yamlString, err
3037
}
31-
32-
// YamlToJson converts a YAML string to JSON
33-
//
34-
// This function preserves the order of map keys (courtesy of yj package).
35-
// If this were to use yaml.Unmarshal() and json.Marshal() instead, the order of map keys would be lost.
36-
func YamlToJson(yamlString string) (string, error) {
37-
yamlConverter := convert.YAML{}
38-
jsonConverter := convert.JSON{}
39-
40-
yamlDecoded, err := yamlConverter.Decode(strings.NewReader(yamlString))
41-
if err != nil {
42-
return "", err
43-
}
44-
45-
jsonBuffer := new(bytes.Buffer)
46-
err = jsonConverter.Encode(jsonBuffer, yamlDecoded)
47-
if err != nil {
48-
return "", err
49-
}
50-
51-
return jsonBuffer.String(), nil
52-
}

Diff for: codefresh/resource_pipeline.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -1280,17 +1280,17 @@ func mapResourceToPipeline(d *schema.ResourceData) (*cfclient.Pipeline, error) {
12801280
// This function is used to extract the spec attributes from the original_yaml_string attribute.
12811281
// Typically, unmarshalling the YAML string is problematic because the order of the attributes is not preserved.
12821282
// Namely, we care a lot about the order of the steps and stages attributes.
1283-
// Luckily, the yj package introduces a MapSlice type that preserves the order Map items (see utils.go).
1283+
// For this purpose we use yq that preserves the order of attributes when converting to json.
12841284
func extractSpecAttributesFromOriginalYamlString(originalYamlString string, pipeline *cfclient.Pipeline) error {
1285+
12851286
for _, attribute := range []string{"stages", "steps", "hooks"} {
1286-
yamlString, err := datautil.Yq(fmt.Sprintf(".%s", attribute), originalYamlString)
1287+
attributeJson, err := datautil.Yq(fmt.Sprintf(".%s", attribute), originalYamlString, "json")
12871288
if err != nil {
12881289
return fmt.Errorf("error while extracting '%s' from original YAML string: %v", attribute, err)
1289-
} else if yamlString == "" {
1290+
} else if attributeJson == "" {
12901291
continue
12911292
}
12921293

1293-
attributeJson, err := datautil.YamlToJson(yamlString)
12941294
if err != nil {
12951295
return fmt.Errorf("error while converting '%s' YAML to JSON: %v", attribute, err)
12961296
}
@@ -1311,14 +1311,14 @@ func extractSpecAttributesFromOriginalYamlString(originalYamlString string, pipe
13111311
}
13121312
}
13131313

1314-
mode, err := datautil.Yq(".mode", originalYamlString)
1314+
mode, err := datautil.Yq(".mode", originalYamlString, "yaml")
13151315
if err != nil {
13161316
return fmt.Errorf("error while extracting 'mode' from original YAML string: %v", err)
13171317
} else if mode != "" {
13181318
pipeline.Spec.Mode = mode
13191319
}
13201320

1321-
ff, err := datautil.Yq(".fail_fast", originalYamlString)
1321+
ff, err := datautil.Yq(".fail_fast", originalYamlString, "yaml")
13221322
if err != nil {
13231323
return fmt.Errorf("error while extracting 'mode' from original YAML string: %v", err)
13241324
} else if ff != "" {

Diff for: codefresh/resource_pipeline_test.go

+14-4
Original file line numberDiff line numberDiff line change
@@ -263,10 +263,16 @@ func TestAccCodefreshPipeline_OriginalYamlString_All(t *testing.T) {
263263
resourceName := "codefresh_pipeline.test"
264264
originalYamlString := `version: 1.0
265265
fail_fast: false
266+
indicators:
267+
- environment: &my_common_envs
268+
- MYSQL_HOST=mysql
269+
- MYSQL_USER=user
270+
- MYSQL_PASS=password
271+
- MYSQL_PORT=3351
266272
stages:
267273
- test
268274
mode: parallel
269-
hooks:
275+
hooks:
270276
on_finish:
271277
steps:
272278
secondmycleanup:
@@ -282,6 +288,7 @@ hooks:
282288
commands:
283289
- echo 'Creating an adhoc test environment'
284290
image: alpine:3.9
291+
environment: *my_common_envs
285292
annotations:
286293
set:
287294
- annotations:
@@ -292,23 +299,25 @@ steps:
292299
zz_firstStep:
293300
stage: test
294301
image: alpine
302+
environment: *my_common_envs
295303
commands:
296304
- echo Hello World First Step
297305
aa_secondStep:
298306
stage: test
299307
image: alpine
300308
commands:
301-
- echo Hello World Second Step`
309+
- echo Hello World Second Step
310+
`
302311

303312
expectedSpecAttributes := &cfclient.Spec{
304313
Steps: &cfclient.Steps{
305-
Steps: `{"zz_firstStep":{"stage":"test","image":"alpine","commands":["echo Hello World First Step"]},"aa_secondStep":{"stage":"test","image":"alpine","commands":["echo Hello World Second Step"]}}`,
314+
Steps: `{"zz_firstStep":{"stage":"test","image":"alpine","environment":["MYSQL_HOST=mysql","MYSQL_USER=user","MYSQL_PASS=password","MYSQL_PORT=3351"],"commands":["echo Hello World First Step"]},"aa_secondStep":{"stage":"test","image":"alpine","commands":["echo Hello World Second Step"]}}`,
306315
},
307316
Stages: &cfclient.Stages{
308317
Stages: `["test"]`,
309318
},
310319
Hooks: &cfclient.Hooks{
311-
Hooks: `{"on_finish":{"steps":{"secondmycleanup":{"commands":["echo echo cleanup step"],"image":"alpine:3.9"},"firstmynotification":{"commands":["echo Notify slack"],"image":"cloudposse/slack-notifier"}}},"on_elected":{"exec":{"commands":["echo 'Creating an adhoc test environment'"],"image":"alpine:3.9"},"annotations":{"set":[{"annotations":[{"my_annotation_example1":10.45},{"my_string_annotation":"Hello World"}],"entity_type":"build"}]}}}`,
320+
Hooks: `{"on_finish":{"steps":{"secondmycleanup":{"commands":["echo echo cleanup step"],"image":"alpine:3.9"},"firstmynotification":{"commands":["echo Notify slack"],"image":"cloudposse/slack-notifier"}}},"on_elected":{"exec":{"commands":["echo 'Creating an adhoc test environment'"],"image":"alpine:3.9","environment":["MYSQL_HOST=mysql","MYSQL_USER=user","MYSQL_PASS=password","MYSQL_PORT=3351"]},"annotations":{"set":[{"annotations":[{"my_annotation_example1":10.45},{"my_string_annotation":"Hello World"}],"entity_type":"build"}]}}}`,
312321
},
313322
}
314323

@@ -327,6 +336,7 @@ steps:
327336
resource.TestCheckResourceAttr(resourceName, "original_yaml_string", originalYamlString),
328337
testAccCheckCodefreshPipelineOriginalYamlStringAttributePropagation(resourceName, expectedSpecAttributes),
329338
),
339+
Destroy: false,
330340
},
331341
{
332342
ResourceName: resourceName,

Diff for: go.mod

+1-3
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ require (
1616
github.com/imdario/mergo v0.3.15
1717
github.com/mikefarah/yq/v4 v4.33.3
1818
github.com/robfig/cron v1.2.0
19-
github.com/sclevine/yj v0.0.0-20210612025309-737bdf40a5d1
2019
github.com/stretchr/objx v0.5.0
2120
github.com/thoas/go-funk v0.9.3
21+
golang.org/x/exp v0.0.0-20240318143956-a85f2c67cd81
2222
gopkg.in/op/go-logging.v1 v1.0.0-20160211212156-b2cb9fa56473
2323
gopkg.in/yaml.v2 v2.4.0
2424
)
@@ -164,7 +164,6 @@ require (
164164
github.com/nunnatsa/ginkgolinter v0.11.0 // indirect
165165
github.com/oklog/run v1.1.0 // indirect
166166
github.com/olekukonko/tablewriter v0.0.5 // indirect
167-
github.com/pelletier/go-toml v1.9.5 // indirect
168167
github.com/pelletier/go-toml/v2 v2.0.7 // indirect
169168
github.com/pmezard/go-difflib v1.0.0 // indirect
170169
github.com/polyfloyd/go-errorlint v1.4.0 // indirect
@@ -225,7 +224,6 @@ require (
225224
go.uber.org/multierr v1.11.0 // indirect
226225
go.uber.org/zap v1.24.0 // indirect
227226
golang.org/x/crypto v0.21.0 // indirect
228-
golang.org/x/exp v0.0.0-20240318143956-a85f2c67cd81 // indirect
229227
golang.org/x/exp/typeparams v0.0.0-20230321023759-10a507213a29 // indirect
230228
golang.org/x/mod v0.16.0 // indirect
231229
golang.org/x/net v0.22.0 // indirect

Diff for: go.sum

+1-22
Original file line numberDiff line numberDiff line change
@@ -626,9 +626,6 @@ github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJ
626626
github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs=
627627
github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo=
628628
github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc=
629-
github.com/pelletier/go-toml v1.9.2/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
630-
github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=
631-
github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
632629
github.com/pelletier/go-toml/v2 v2.0.7 h1:muncTPStnKRos5dpVKULv2FVd4bMOhNePj9CjgDb8Us=
633630
github.com/pelletier/go-toml/v2 v2.0.7/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek=
634631
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
@@ -698,8 +695,6 @@ github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tM
698695
github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ=
699696
github.com/sashamelentyev/usestdlibvars v1.23.0 h1:01h+/2Kd+NblNItNeux0veSL5cBF1jbEOPrEhDzGYq0=
700697
github.com/sashamelentyev/usestdlibvars v1.23.0/go.mod h1:YPwr/Y1LATzHI93CqoPUN/2BzGQ/6N/cl/KwgR0B/aU=
701-
github.com/sclevine/yj v0.0.0-20210612025309-737bdf40a5d1 h1:2cp8mZ+gRxIx/5GoLcQmmXzJuKdM1cSE2dmvFn3udJE=
702-
github.com/sclevine/yj v0.0.0-20210612025309-737bdf40a5d1/go.mod h1:PkEqqiiBYB87KgvpQj2r0wtRjDKEhhLRarGCubegp7E=
703698
github.com/securego/gosec/v2 v2.15.0 h1:v4Ym7FF58/jlykYmmhZ7mTm7FQvN/setNm++0fgIAtw=
704699
github.com/securego/gosec/v2 v2.15.0/go.mod h1:VOjTrZOkUtSDt2QLSJmQBMWnvwiQPEjg0l+5juIqGk8=
705700
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
@@ -865,8 +860,6 @@ golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0
865860
golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
866861
golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
867862
golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU=
868-
golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ=
869-
golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE=
870863
golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA=
871864
golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs=
872865
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -879,8 +872,6 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0
879872
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
880873
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
881874
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
882-
golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug=
883-
golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc=
884875
golang.org/x/exp v0.0.0-20240318143956-a85f2c67cd81 h1:6R2FC06FonbXQ8pK11/PDFY6N6LWlf9KlzibaCapmqc=
885876
golang.org/x/exp v0.0.0-20240318143956-a85f2c67cd81/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ=
886877
golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
@@ -917,8 +908,6 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91
917908
golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI=
918909
golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
919910
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
920-
golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk=
921-
golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
922911
golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic=
923912
golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
924913
golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -969,8 +958,6 @@ golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
969958
golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
970959
golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
971960
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
972-
golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM=
973-
golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
974961
golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc=
975962
golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
976963
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -995,7 +982,6 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ
995982
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
996983
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
997984
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
998-
golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o=
999985
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
1000986
golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
1001987
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
@@ -1071,8 +1057,6 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
10711057
golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
10721058
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
10731059
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1074-
golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU=
1075-
golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
10761060
golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4=
10771061
golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
10781062
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
@@ -1082,7 +1066,7 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
10821066
golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA=
10831067
golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ=
10841068
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
1085-
golang.org/x/term v0.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ=
1069+
golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8=
10861070
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
10871071
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
10881072
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -1096,8 +1080,6 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
10961080
golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
10971081
golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
10981082
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
1099-
golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
1100-
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
11011083
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
11021084
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
11031085
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -1175,8 +1157,6 @@ golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k=
11751157
golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ=
11761158
golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k=
11771159
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
1178-
golang.org/x/tools v0.8.0 h1:vSDcovVPld282ceKgDimkRSC8kpaH1dgyc9UMzlt84Y=
1179-
golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4=
11801160
golang.org/x/tools v0.19.0 h1:tfGCXNR1OsFG+sVdLAitlpjAvD/I6dHDKnYrpEZUHkw=
11811161
golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc=
11821162
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -1311,7 +1291,6 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
13111291
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
13121292
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
13131293
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
1314-
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
13151294
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
13161295
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
13171296
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

0 commit comments

Comments
 (0)