Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .go-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.21.13
1.25.3
81 changes: 45 additions & 36 deletions .golangci.yml
Original file line number Diff line number Diff line change
@@ -1,40 +1,49 @@
version: "2"
run:
deadline: 13m
skip-dirs:
- .git
- .tool
- vendor
- verify

linters-settings:
dupl:
threshold: 100
gocyclo:
min-complexity: 50
govet:
enable:
- nilness

timeout: 13m
linters:
default: none
# TODO: we should be enabling far more linters ...
enable:
- govet
- unused
- misspell
- ineffassign
- staticcheck
- gosimple
- exportloopref
disable-all: true

issues:
exclude-rules:
- linters:
- golint
text: ".*should not use dot dot imports"
- linters:
- govet
- unused
- misspell
- ineffassign
- staticcheck
text: "SA1019: fakectrlruntimeclient.NewFakeClient is deprecated"
- linters:
- staticcheck
# TODO: Is this really supposed to be deprecated? Ref https://github.com/kubernetes/test-infra/issues/14875
text: "SA1019: t.*.TrustedOrg is deprecated: TrustedOrg functionality is deprecated and will be removed in January 2020"
settings:
dupl:
threshold: 100
gocyclo:
min-complexity: 50
govet:
enable:
- nilness
staticcheck:
checks:
- all
# disable: could remove embedded field "field" from selector
# explicit selectors can be clearer
- '-QF1008'
# TODO: re-enable. We have a lot of packages without comments and the
# diff to upgrade go is already huge
- '-ST1000'
# We have a lot of legacy capitalized error strings that are really user
# Facing log messages
- '-ST1005'
exclusions:
paths:
- .git
- .tool
- vendor
- verify
rules:
- linters:
- golint
text: ".*should not use dot dot imports"
- linters:
- staticcheck
text: "SA1019: fakectrlruntimeclient.NewFakeClient is deprecated"
- linters:
- staticcheck
# TODO: Is this really supposed to be deprecated? Ref https://github.com/kubernetes/test-infra/issues/14875
text: "SA1019: t.*.TrustedOrg is deprecated: TrustedOrg functionality is deprecated and will be removed in January 2020"
32 changes: 16 additions & 16 deletions experiment/gerrit-onboarder/onboarder.go
Original file line number Diff line number Diff line change
Expand Up @@ -150,9 +150,9 @@ func ensureUUID(groupsFile, uuid, group string) (string, error) {
return "", fmt.Errorf("UUID, %s, already in use for group %s", uuid, value)
}
// Group name already in use with different UUID
for cur_id, groupName := range groupsMap {
for curID, groupName := range groupsMap {
if groupName == group {
return "", fmt.Errorf("%s already used as group name for %s", group, cur_id)
return "", fmt.Errorf("%s already used as group name for %s", group, curID)
}
}

Expand Down Expand Up @@ -282,12 +282,12 @@ func labelAccessExistsFunc(groupName string) func(map[string][]string) bool {
}
}

func verifyInTree(workDir, host, cur_branch string, configMap map[string][]string, verify func(map[string][]string) bool) (bool, error) {
func verifyInTree(workDir, host, curBranch string, configMap map[string][]string, verify func(map[string][]string) bool) (bool, error) {
if verify(configMap) {
return true, nil
} else if inheritance := getInheritedRepo(configMap); inheritance != "" {
parent_branch := cur_branch + "_parent"
if err := fetchMetaConfig(host, inheritance, parent_branch, workDir); err != nil {
parentBranch := curBranch + "_parent"
if err := fetchMetaConfig(host, inheritance, parentBranch, workDir); err != nil {
// This likely won't happen, but if the fail is due to switching branches, we want to fail
if strings.Contains(err.Error(), "failed to switch") {
return false, fmt.Errorf("unable to fetch refs/meta/config for %s: %w", inheritance, err)
Expand All @@ -300,28 +300,28 @@ func verifyInTree(workDir, host, cur_branch string, configMap map[string][]strin
return false, fmt.Errorf("failed to read project.config file: %w", err)
}
newConfig, _ := configToMap(string(data))
ret, err := verifyInTree(workDir, host, parent_branch, newConfig, verify)
ret, err := verifyInTree(workDir, host, parentBranch, newConfig, verify)
if err != nil {
return false, fmt.Errorf("failed to check if lines in config for %s/%s: %w", host, inheritance, err)
}
if err := execInDir(os.Stdout, os.Stderr, workDir, "git", "checkout", cur_branch); err != nil {
return false, fmt.Errorf("failed to checkout %s, %w", cur_branch, err)
if err := execInDir(os.Stdout, os.Stderr, workDir, "git", "checkout", curBranch); err != nil {
return false, fmt.Errorf("failed to checkout %s, %w", curBranch, err)
}
if err := execInDir(os.Stdout, os.Stderr, workDir, "git", "branch", "-D", parent_branch); err != nil {
return false, fmt.Errorf("failed to delete %s branch, %w", parent_branch, err)
if err := execInDir(os.Stdout, os.Stderr, workDir, "git", "branch", "-D", parentBranch); err != nil {
return false, fmt.Errorf("failed to delete %s branch, %w", parentBranch, err)
}
return ret, nil
}
return false, nil
}

func ensureProjectConfig(workDir, config, host, cur_branch, groupName string) (string, error) {
func ensureProjectConfig(workDir, config, host, curBranch, groupName string) (string, error) {
configMap, orderedKeys := configToMap(config)

// Check that prow automation robot has access to refs/*
accessLines := []string{}
readAccessLine := fmt.Sprintf(prowReadAccessFormat, groupName)
prowReadAccess, err := verifyInTree(workDir, host, cur_branch, configMap, lineInMatchingHeaderFunc(accessRefsRegex, readAccessLine))
prowReadAccess, err := verifyInTree(workDir, host, curBranch, configMap, lineInMatchingHeaderFunc(accessRefsRegex, readAccessLine))
if err != nil {
return "", fmt.Errorf("failed to check if needed lines in config: %w", err)
}
Expand All @@ -331,7 +331,7 @@ func ensureProjectConfig(workDir, config, host, cur_branch, groupName string) (s

// Check that the line "label-verified" = ... group GROUPNAME exists under ANY header
labelAccessLine := fmt.Sprintf(prowLabelAccessFormat, groupName)
prowLabelAccess, err := verifyInTree(workDir, host, cur_branch, configMap, labelAccessExistsFunc(groupName))
prowLabelAccess, err := verifyInTree(workDir, host, curBranch, configMap, labelAccessExistsFunc(groupName))
if err != nil {
return "", fmt.Errorf("failed to check if needed lines in config: %w", err)
}
Expand All @@ -341,7 +341,7 @@ func ensureProjectConfig(workDir, config, host, cur_branch, groupName string) (s
configMap, orderedKeys = addSection(accessHeader, configMap, orderedKeys, accessLines)

// We need to be less exact with the Label-Verified header so we are just checking if it exists anywhere:
labelExists, err := verifyInTree(workDir, host, cur_branch, configMap, labelExists)
labelExists, err := verifyInTree(workDir, host, curBranch, configMap, labelExists)
if err != nil {
return "", fmt.Errorf("failed to check if needed lines in config: %w", err)
}
Expand All @@ -352,13 +352,13 @@ func ensureProjectConfig(workDir, config, host, cur_branch, groupName string) (s

}

func updatePojectConfig(workDir, host, cur_branch, groupName string) error {
func updatePojectConfig(workDir, host, curBranch, groupName string) error {
data, err := os.ReadFile(path.Join(workDir, projectConfigFile))
if err != nil {
return fmt.Errorf("failed to read project.config file: %w", err)
}

newData, err := ensureProjectConfig(workDir, string(data), host, cur_branch, groupName)
newData, err := ensureProjectConfig(workDir, string(data), host, curBranch, groupName)
if err != nil {
return fmt.Errorf("failed to ensure updated project config: %w", err)
}
Expand Down
4 changes: 2 additions & 2 deletions experiment/prowjob-report/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ func ScaledValue(q resource.Quantity, s resource.Scale) int64 {

// Testgrid dashboard utils

// Primary dashboard aka which is most likely to have more viewers
// PrimaryDashboard aka which is most likely to have more viewers
// Choose from: sig-release-.*, or sig-.*, or first in list
func PrimaryDashboard(job cfg.JobBase) string {
dashboardsAnnotation, ok := job.Annotations["testgrid-dashboards"]
Expand All @@ -193,7 +193,7 @@ func PrimaryDashboard(job cfg.JobBase) string {
return dashboards[0]
}

// Owner dashboard aka who is responsible for maintaining the job
// OwnerDashboard aka who is responsible for maintaining the job
// Choose from: sig-(not-release)-*, or sig-release, or first in list
func OwnerDashboard(job cfg.JobBase) string {
dashboardsAnnotation, ok := job.Annotations["testgrid-dashboards"]
Expand Down
18 changes: 9 additions & 9 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ require (
github.com/go-openapi/spec v0.20.4
github.com/golang/glog v1.1.0
github.com/gomodule/redigo v1.8.5 // indirect
github.com/google/go-cmp v0.5.9
github.com/google/go-cmp v0.6.0
github.com/google/go-github v17.0.0+incompatible
github.com/google/gofuzz v1.2.1-0.20210504230335-f78f29fc09ea // indirect
github.com/google/uuid v1.3.0
Expand All @@ -58,13 +58,13 @@ require (
go.yaml.in/yaml/v2 v2.4.2
go4.org v0.0.0-20201209231011-d4a079459e60 // indirect
gocloud.dev v0.19.0 // indirect
golang.org/x/crypto v0.9.0
golang.org/x/net v0.10.0 // indirect
golang.org/x/crypto v0.43.0
golang.org/x/net v0.46.0 // indirect
golang.org/x/oauth2 v0.8.0
golang.org/x/sync v0.2.0 // indirect
golang.org/x/text v0.9.0 // indirect
golang.org/x/sync v0.17.0 // indirect
golang.org/x/text v0.30.0 // indirect
golang.org/x/time v0.3.0 // indirect
golang.org/x/tools v0.8.0
golang.org/x/tools v0.38.0
gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect
google.golang.org/api v0.121.0
google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1
Expand Down Expand Up @@ -171,8 +171,8 @@ require (
go.opencensus.io v0.24.0 // indirect
go.uber.org/atomic v1.10.0 // indirect
go.uber.org/multierr v1.8.0 // indirect
golang.org/x/sys v0.8.0 // indirect
golang.org/x/term v0.8.0 // indirect
golang.org/x/sys v0.37.0 // indirect
golang.org/x/term v0.36.0 // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
google.golang.org/appengine v1.6.7 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
Expand All @@ -182,4 +182,4 @@ require (
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
)

go 1.21
go 1.24.0
35 changes: 18 additions & 17 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -353,8 +353,9 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-containerregistry v0.15.2 h1:MMkSh+tjSdnmJZO7ljvEqV1DjfekB6VUEAZgy3a+TQE=
github.com/google/go-containerregistry v0.15.2/go.mod h1:wWK+LnOv4jXMM23IT/F1wdYftGWGr47Is8CG+pmHK1Q=
github.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY=
Expand Down Expand Up @@ -675,8 +676,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y
golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g=
golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0=
golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04=
golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
Expand Down Expand Up @@ -712,8 +713,8 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk=
golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA=
golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
Expand Down Expand Up @@ -762,8 +763,8 @@ golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4=
golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
Expand All @@ -789,8 +790,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI=
golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug=
golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
Expand Down Expand Up @@ -848,14 +849,14 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ=
golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q=
golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
Expand All @@ -867,8 +868,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k=
golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
Expand Down Expand Up @@ -929,8 +930,8 @@ golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4f
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
golang.org/x/tools v0.8.0 h1:vSDcovVPld282ceKgDimkRSC8kpaH1dgyc9UMzlt84Y=
golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4=
golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ=
golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
Expand Down
Loading