Skip to content

Commit 6de121a

Browse files
authored
Merge pull request #5 from hashicorp/bendbennett/issues-4
Add Schema Mutation and Timeout Retrieval Functions
2 parents fc071d9 + adb6475 commit 6de121a

File tree

16 files changed

+1210
-38
lines changed

16 files changed

+1210
-38
lines changed

.changelog/5.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:feature
2+
Introduced `timeouts` package with `Block()`, `BlockAll()`, `Attributes()` and `AttributesAll()` schema mutation functions
3+
```

.github/workflows/add-content-to-project.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
runs-on: ubuntu-latest
2020
steps:
2121
- name: "Set Issue to 'Priority = Triage Next'"
22-
uses: leonsteinhaeuser/project-beta-automations@v1.2.1
22+
uses: leonsteinhaeuser/project-beta-automations@v2.0.0
2323
if: github.event_name == 'issues'
2424
with:
2525
gh_token: ${{ secrets.TF_DEVEX_PROJECT_GITHUB_TOKEN }}
@@ -29,7 +29,7 @@ jobs:
2929
operation_mode: custom_field
3030
custom_field_values: '[{\"name\":\"Priority\",\"type\":\"single_select\",\"value\":\"Triage Next\"}]'
3131
- name: "Set Pull Request to 'Priority = Triage Next'"
32-
uses: leonsteinhaeuser/project-beta-automations@v1.2.1
32+
uses: leonsteinhaeuser/project-beta-automations@v2.0.0
3333
if: github.event_name == 'pull_request_target'
3434
with:
3535
gh_token: ${{ secrets.TF_DEVEX_PROJECT_GITHUB_TOKEN }}

.github/workflows/ci-github-actions.yml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,8 @@ jobs:
1414
runs-on: ubuntu-latest
1515
steps:
1616
- uses: actions/checkout@v3
17-
- id: go-version
18-
# Reference: https://github.com/actions/setup-go/issues/23
19-
run: echo "::set-output name=version::$(cat ./.go-version)"
2017
- uses: actions/setup-go@v3
2118
with:
22-
go-version: ${{ steps.go-version.outputs.version }}
19+
go-version-file: 'go.mod'
2320
- run: go install github.com/rhysd/actionlint/cmd/actionlint@latest
2421
- run: actionlint

.github/workflows/ci-go.yml

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,32 +21,14 @@ jobs:
2121
with:
2222
go-version-file: 'go.mod'
2323
- run: go mod download
24-
- uses: golangci/golangci-lint-action@v3.2.0
25-
with:
26-
skip-go-installation: true
27-
terraform-provider-corner:
28-
defaults:
29-
run:
30-
working-directory: terraform-provider-corner
31-
runs-on: ubuntu-latest
32-
steps:
33-
- uses: actions/checkout@v3
34-
- uses: actions/checkout@v3
35-
with:
36-
path: terraform-provider-corner
37-
repository: hashicorp/terraform-provider-corner
38-
- uses: actions/setup-go@v3
39-
with:
40-
go-version-file: 'go.mod'
41-
- run: go mod edit -replace=github.com/hashicorp/terraform-plugin-framework-timeouts=../
42-
- run: go mod tidy
43-
- run: go test -v ./internal/frameworkprovider
24+
- uses: golangci/golangci-lint-action@v3
25+
4426
test:
4527
name: test (Go v${{ matrix.go-version }})
4628
runs-on: ubuntu-latest
4729
strategy:
4830
matrix:
49-
go-version: [ '1.18', '1.17' ]
31+
go-version: [ '1.19', '1.18' ]
5032
steps:
5133
- uses: actions/checkout@v3
5234
- uses: actions/setup-go@v3

.github/workflows/ci-goreleaser.yml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,9 @@ jobs:
1414
runs-on: ubuntu-latest
1515
steps:
1616
- uses: actions/checkout@v3
17-
- id: go-version
18-
# Reference: https://github.com/actions/setup-go/issues/23
19-
run: echo "::set-output name=version::$(cat ./.go-version)"
2017
- uses: actions/setup-go@v3
2118
with:
22-
go-version: ${{ steps.go-version.outputs.version }}
23-
- uses: goreleaser/goreleaser-action@v2
19+
go-version-file: 'go.mod'
20+
- uses: goreleaser/goreleaser-action@v3
2421
with:
2522
args: check

.github/workflows/release.yml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,13 @@ jobs:
1919
with:
2020
# Required for release notes
2121
fetch-depth: 0
22-
- id: go-version
23-
# Reference: https://github.com/actions/setup-go/issues/23
24-
run: echo "::set-output name=version::$(cat ./.go-version)"
2522
- uses: actions/setup-go@v3
2623
with:
27-
go-version: ${{ steps.go-version.outputs.version }}
24+
go-version-file: 'go.mod'
2825
- name: Generate Release Notes
2926
# Fetch CHANGELOG.md contents up to Git tag prior to this release, skipping top two lines
3027
run: sed -n -e "1{/# /d;}" -e "2{/^$/d;}" -e "/# $(git describe --abbrev=0 --exclude="$(git describe --abbrev=0 --match='v*.*.*' --tags)" --match='v*.*.*' --tags | tr -d v)/q;p" CHANGELOG.md > /tmp/release-notes.txt
31-
- uses: goreleaser/goreleaser-action@v2
28+
- uses: goreleaser/goreleaser-action@v3
3229
env:
3330
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
3431
with:

Makefile

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
default: build
2+
3+
build:
4+
go build -v ./...
5+
6+
lint:
7+
golangci-lint run
8+
9+
fmt:
10+
gofmt -s -w -e .
11+
12+
test:
13+
go test -v -cover -timeout=120s -parallel=4 ./...
14+
15+
.PHONY: build lint fmt test

README.md

Lines changed: 123 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,129 @@ This Go module is typically kept up to date with the latest `terraform-plugin-fr
1212

1313
This Go module follows `terraform-plugin-framework` Go compatibility.
1414

15-
Currently that means Go **1.18** must be used when developing and testing code.
15+
Currently, that means Go **1.18** must be used when developing and testing code.
16+
17+
## Usage
18+
19+
Usage of this module requires the following changes in the provider code:
20+
21+
- [Schema Mutation](#schema-mutation)
22+
- [Updating Models](#updating-models)
23+
- [Accessing Timeouts in CRUD Functions](#accessing-timeouts-in-crud-functions)
24+
25+
### Schema Mutation
26+
27+
Timeouts can be defined using either nested blocks or nested attributes.
28+
29+
If you are writing a new provider using [terraform-plugin-framework](https://github.com/hashicorp/terraform-plugin-framework)
30+
then we recommend using nested attributes.
31+
32+
If you are [migrating a provider from SDKv2 to the Framework](https://www.terraform.io/plugin/framework/migrating) and
33+
you are already using timeouts you can either continue to use block syntax, or switch to using nested attributes.
34+
However, switching to using nested attributes will require that practitioners that are using your provider update their
35+
Terraform configuration.
36+
37+
#### Block
38+
39+
If your configuration is using a nested block to define timeouts, such as the following:
40+
41+
```terraform
42+
resource "timeouts_example" "example" {
43+
/* ... */
44+
45+
timeouts {
46+
create = "60m"
47+
}
48+
}
49+
```
50+
51+
You can use this module to mutate the `tfsdk.Schema` as follows:
52+
53+
```go
54+
func (t *exampleResource) GetSchema(ctx context.Context) (tfsdk.Schema, diag.Diagnostics) {
55+
return tfsdk.Schema{
56+
/* ... */
57+
58+
Blocks: map[string]tfsdk.Block{
59+
"timeouts": timeouts.Block(ctx, timeouts.Opts{
60+
Create: true,
61+
}),
62+
},
63+
```
64+
65+
#### Attribute
66+
67+
If your configuration is using nested attributes to define timeouts, such as the following:
68+
69+
```terraform
70+
resource "timeouts_example" "example" {
71+
/* ... */
72+
73+
timeouts = {
74+
create = "60m"
75+
}
76+
}
77+
```
78+
79+
You can use this module to mutate the `tfsdk.Schema` as follows:
80+
81+
```go
82+
func (t *exampleResource) GetSchema(ctx context.Context) (tfsdk.Schema, diag.Diagnostics) {
83+
return tfsdk.Schema{
84+
Attributes: map[string]tfsdk.Attribute{
85+
/* ... */
86+
"timeouts": timeouts.Attributes(ctx, timeouts.Opts{
87+
Create: true,
88+
}),
89+
},
90+
```
91+
92+
### Updating Models
93+
94+
In functions in which the config, state or plan is being unmarshalled, for instance, the `Create` function:
95+
96+
```go
97+
func (r exampleResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) {
98+
var data exampleResourceData
99+
100+
diags := req.Plan.Get(ctx, &data)
101+
resp.Diagnostics.Append(diags...)
102+
```
103+
104+
The model that is being used, `exampleResourceData` in this example, will need to be modified to include a field for
105+
timeouts which is of `types.Object`. For example:
106+
107+
```go
108+
type exampleResourceData struct {
109+
/* ... */
110+
Timeouts types.Object `tfsdk:"timeouts"`
111+
```
112+
113+
### Accessing Timeouts in CRUD Functions
114+
115+
Once the model has been populated with the config, state or plan the duration of the timeout can be accessed by calling
116+
the appropriate helper function and then used to configure timeout behaviour, for instance:
117+
118+
```go
119+
func (r exampleResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) {
120+
var data exampleResourceData
121+
122+
diags := req.Plan.Get(ctx, &data)
123+
resp.Diagnostics.Append(diags...)
124+
if resp.Diagnostics.HasError() {
125+
return
126+
}
127+
128+
defaultCreateTimeout := 20 * time.Minutes
129+
130+
createTimeout := timeouts.Create(ctx, data.Timeouts, defaultCreateTimeout)
131+
132+
ctx, cancel := context.WithTimeout(ctx, createTimeout)
133+
defer cancel()
134+
135+
/* ... */
136+
}
137+
```
16138
17139
## Contributing
18140

go.mod

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,25 @@
11
module github.com/hashicorp/terraform-plugin-framework-timeouts
22

33
go 1.18
4+
5+
require (
6+
github.com/google/go-cmp v0.5.9
7+
github.com/hashicorp/terraform-plugin-framework v0.13.0
8+
)
9+
10+
require (
11+
github.com/fatih/color v1.13.0 // indirect
12+
github.com/golang/protobuf v1.5.2 // indirect
13+
github.com/hashicorp/go-hclog v1.2.1 // indirect
14+
github.com/hashicorp/terraform-plugin-go v0.14.0 // indirect
15+
github.com/hashicorp/terraform-plugin-log v0.7.0 // indirect
16+
github.com/mattn/go-colorable v0.1.12 // indirect
17+
github.com/mattn/go-isatty v0.0.14 // indirect
18+
github.com/mitchellh/go-testing-interface v1.14.1 // indirect
19+
github.com/vmihailenco/msgpack/v4 v4.3.12 // indirect
20+
github.com/vmihailenco/tagparser v0.1.1 // indirect
21+
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 // indirect
22+
golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6 // indirect
23+
google.golang.org/appengine v1.6.5 // indirect
24+
google.golang.org/protobuf v1.28.1 // indirect
25+
)

go.sum

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
2+
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
3+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
4+
github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
5+
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
6+
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
7+
github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
8+
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
9+
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
10+
github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
11+
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
12+
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
13+
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
14+
github.com/hashicorp/go-hclog v1.2.1 h1:YQsLlGDJgwhXFpucSPyVbCBviQtjlHv3jLTlp8YmtEw=
15+
github.com/hashicorp/go-hclog v1.2.1/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
16+
github.com/hashicorp/terraform-plugin-framework v0.13.0 h1:tGnqttzZwU3FKc+HasHr2Yi5L81FcQbdc8zQhbBD9jQ=
17+
github.com/hashicorp/terraform-plugin-framework v0.13.0/go.mod h1:wcZdk4+Uef6Ng+BiBJjGAcIPlIs5bhlEV/TA1k6Xkq8=
18+
github.com/hashicorp/terraform-plugin-go v0.14.0 h1:ttnSlS8bz3ZPYbMb84DpcPhY4F5DsQtcAS7cHo8uvP4=
19+
github.com/hashicorp/terraform-plugin-go v0.14.0/go.mod h1:2nNCBeRLaenyQEi78xrGrs9hMbulveqG/zDMQSvVJTE=
20+
github.com/hashicorp/terraform-plugin-log v0.7.0 h1:SDxJUyT8TwN4l5b5/VkiTIaQgY6R+Y2BQ0sRZftGKQs=
21+
github.com/hashicorp/terraform-plugin-log v0.7.0/go.mod h1:p4R1jWBXRTvL4odmEkFfDdhUjHf9zcs/BCoNHAc7IK4=
22+
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
23+
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
24+
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
25+
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
26+
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
27+
github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
28+
github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40=
29+
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
30+
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
31+
github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
32+
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
33+
github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU=
34+
github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8=
35+
github.com/nsf/jsondiff v0.0.0-20200515183724-f29ed568f4ce h1:RPclfga2SEJmgMmz2k+Mg7cowZ8yv4Trqw9UsJby758=
36+
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
37+
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
38+
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
39+
github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s=
40+
github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
41+
github.com/vmihailenco/msgpack/v4 v4.3.12 h1:07s4sz9IReOgdikxLTKNbBdqDMLsjPKXwvCazn8G65U=
42+
github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4=
43+
github.com/vmihailenco/tagparser v0.1.1 h1:quXMXlA39OCbd2wAdTsGDlK9RkOk6Wuw+x37wVyIuWY=
44+
github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI=
45+
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
46+
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
47+
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
48+
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE=
49+
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
50+
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
51+
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
52+
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
53+
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
54+
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
55+
golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6 h1:nonptSpoQ4vQjyraW20DXPAglgQfVnM9ZC6MmNLMR60=
56+
golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
57+
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
58+
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
59+
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
60+
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
61+
google.golang.org/appengine v1.6.5 h1:tycE03LOZYQNhDpS27tcQdAzLCVMaj7QT2SXxebnpCM=
62+
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
63+
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
64+
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
65+
google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w=
66+
google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
67+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
68+
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
69+
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
70+
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
71+
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

0 commit comments

Comments
 (0)