├── .changelog
├── .gitkeep
├── 23.txt
├── 27.txt
├── 28.txt
├── 19.txt
├── 29.txt
├── 26.txt
├── 18.txt
├── 25.txt
├── 35.txt
├── 38.txt
├── 40.txt
├── 37.txt
├── 43.txt
├── 36.txt
├── 39.txt
├── 41.txt
└── 22.txt
├── .gitignore
├── examples
└── provider
│ └── provider.tf
├── terraform-registry-manifest.json
├── tools
├── tools.go
├── go.mod
├── cmd
│ └── changelog-check
│ │ └── main.go
└── go.sum
├── scripts
├── release-note.tmpl
├── generate-docs.sh
├── changelog.tmpl
└── generate-changelog.sh
├── docs
├── data-sources
│ ├── brand.md
│ └── countries.md
└── index.md
├── internal
└── sdkv2provider
│ ├── utils.go
│ ├── data_source_brands.go
│ ├── provider.go
│ └── data_source_countries.go
├── .github
├── dependabot.yml
└── workflows
│ ├── changelog-check.yml
│ ├── generate-changelog.yml
│ ├── dependabot-changelog.yml
│ └── release.yml
├── templates
└── index.md.tmpl
├── main.go
├── README.md
├── .goreleaser.yml
├── go.mod
├── CHANGELOG.md
├── GNUmakefile
├── contributing
└── changelog-process.md
└── go.sum
/.changelog/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | release-notes.txt
2 |
--------------------------------------------------------------------------------
/.changelog/23.txt:
--------------------------------------------------------------------------------
1 | ```release-note:note
2 | Update readme.md
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/27.txt:
--------------------------------------------------------------------------------
1 | ```release-note:note
2 | Update readme.md
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/28.txt:
--------------------------------------------------------------------------------
1 | ```release-note:note
2 | Update readme.md
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/19.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | feat: Updated token
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/29.txt:
--------------------------------------------------------------------------------
1 | ```release-note:breaking-change
2 | breaking-change
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/26.txt:
--------------------------------------------------------------------------------
1 | ```release-note:breaking-change
2 | Breaking change added
3 | ```
4 |
--------------------------------------------------------------------------------
/examples/provider/provider.tf:
--------------------------------------------------------------------------------
1 | provider "dodo" {
2 | # example configuration here
3 | }
4 |
--------------------------------------------------------------------------------
/.changelog/18.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | documentation: Updated README, updated info about tenv.
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/25.txt:
--------------------------------------------------------------------------------
1 | ```release-note:enhancement
2 | documentation: Updated README, updated info about tenv.
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/35.txt:
--------------------------------------------------------------------------------
1 | ```release-note:dependency
2 | provider: Bump the go_modules group across 1 directory with 2 updates
3 | ```
4 |
--------------------------------------------------------------------------------
/terraform-registry-manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "version": 1,
3 | "metadata": {
4 | "protocol_versions": ["5.0"]
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/.changelog/38.txt:
--------------------------------------------------------------------------------
1 | ```release-note:dependency
2 | provider: go: bump golang.org/x/net from 0.33.0 to 0.36.0 in the go_modules group
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/40.txt:
--------------------------------------------------------------------------------
1 | ```release-note:dependency
2 | provider: go: bump golang.org/x/net from 0.36.0 to 0.38.0 in the go_modules group
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/37.txt:
--------------------------------------------------------------------------------
1 | ```release-note:dependency
2 | provider: go: bump github.com/hashicorp/terraform-plugin-sdk/v2 from 2.35.0 to 2.36.0
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/43.txt:
--------------------------------------------------------------------------------
1 | ```release-note:dependency
2 | provider: go: bump golang.org/x/oauth2 from 0.26.0 to 0.27.0 in the go_modules group
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/36.txt:
--------------------------------------------------------------------------------
1 | ```release-note:dependency
2 | provider: go: bump github.com/go-git/go-git/v5 from 5.12.0 to 5.13.1 in the go_modules group
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/39.txt:
--------------------------------------------------------------------------------
1 | ```release-note:dependency
2 | provider: Bump golang.org/x/net from 0.33.0 to 0.36.0 in /tools in the go_modules group across 1 directory
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/41.txt:
--------------------------------------------------------------------------------
1 | ```release-note:dependency
2 | provider: Bump golang.org/x/net from 0.36.0 to 0.38.0 in /tools in the go_modules group across 1 directory
3 | ```
4 |
--------------------------------------------------------------------------------
/.changelog/22.txt:
--------------------------------------------------------------------------------
1 | ```release-note:dependency
2 | provider: Bump google.golang.org/protobuf from 1.28.0 to 1.33.0 in /tools in the go_modules group across 1 directory
3 | ```
4 |
--------------------------------------------------------------------------------
/tools/tools.go:
--------------------------------------------------------------------------------
1 | //go:build tools
2 |
3 | package tools
4 |
5 | import (
6 | _ "github.com/hashicorp/terraform-plugin-docs/cmd/tfplugindocs"
7 | _ "github.com/hashicorp/go-changelog/cmd/changelog-build"
8 | )
9 |
--------------------------------------------------------------------------------
/scripts/release-note.tmpl:
--------------------------------------------------------------------------------
1 | {{- define "note" -}}
2 | {{- if eq "new-guide" .Type -}}
3 | * **New Guide:** `{{.Body}}` ([#{{- .Issue -}}](https://github.com/Nmishin/terraform-provider-dodo/issues/{{- .Issue -}}))
4 | {{- else if eq "upgrade-guide" .Type -}}
5 | {{.Body}}
6 | {{- else -}}
7 | * {{.Body}} ([#{{- .Issue -}}](https://github.com/Nmishin/terraform-provider-dodo/issues/{{- .Issue -}}))
8 | {{- end -}}
9 | {{- end -}}
10 |
--------------------------------------------------------------------------------
/docs/data-sources/brand.md:
--------------------------------------------------------------------------------
1 | ---
2 | # generated by https://github.com/hashicorp/terraform-plugin-docs
3 | page_title: "dodo_brand Data Source - terraform-provider-dodo"
4 | subcategory: ""
5 | description: |-
6 |
7 | ---
8 |
9 | # dodo_brand (Data Source)
10 |
11 |
12 |
13 |
14 |
15 |
16 | ## Schema
17 |
18 | ### Read-Only
19 |
20 | - `id` (String) The ID of this resource.
21 | - `names` (Set of String) Generated.
22 |
23 |
24 |
--------------------------------------------------------------------------------
/internal/sdkv2provider/utils.go:
--------------------------------------------------------------------------------
1 | package sdkv2provider
2 |
3 | import (
4 | "crypto/md5"
5 | "fmt"
6 | "sort"
7 | "strings"
8 | )
9 |
10 | // stringChecksum takes a string and returns the checksum of the string.
11 | func stringChecksum(s string) string {
12 | h := md5.New()
13 | h.Write([]byte(s))
14 | bs := h.Sum(nil)
15 |
16 | return fmt.Sprintf("%x", bs)
17 | }
18 |
19 | func stringListChecksum(s []string) string {
20 | sort.Strings(s)
21 | return stringChecksum(strings.Join(s, ""))
22 | }
23 |
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | # To get started with Dependabot version updates, you'll need to specify which
2 | # package ecosystems to update and where the package manifests are located.
3 | # Please see the documentation for all configuration options:
4 | # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
5 |
6 | version: 2
7 | updates:
8 | - package-ecosystem: gomod
9 | directory: /
10 | schedule:
11 | interval: daily
12 | time: "09:00"
13 | commit-message:
14 | prefix: "go:"
15 |
--------------------------------------------------------------------------------
/templates/index.md.tmpl:
--------------------------------------------------------------------------------
1 | ---
2 | layout: ""
3 | page_title: "Dodo Provider"
4 | description: |-
5 | Get data from https://globalapi.dodopizza.com/ via OpenTofu/Terraform
6 | ---
7 |
8 | # Dodo Provider
9 |
10 | The Dodo provider provides resources for getting data from the Dodo Global API.
11 |
12 | ## Example Usage
13 |
14 | {{tffile "examples/provider/provider.tf"}}
15 |
16 | ### Configure provider with environment variables
17 | It is optionally possible to configure the provider by passing environment variables to terraform
18 | ```bash
19 | export DODO_BASE_URL=https://...
20 | ```
21 |
22 | {{ .SchemaMarkdown | trimspace }}
23 |
--------------------------------------------------------------------------------
/.github/workflows/changelog-check.yml:
--------------------------------------------------------------------------------
1 | name: Changelog check
2 | on: [pull_request_target]
3 |
4 | jobs:
5 | changelog-check:
6 | runs-on: ${{ matrix.os }}
7 | strategy:
8 | matrix:
9 | os: [ubuntu-latest]
10 | steps:
11 | - uses: actions/checkout@v4
12 | - name: Set up Go
13 | uses: actions/setup-go@v5
14 | with:
15 | go-version-file: 'tools/go.mod'
16 | - run: make tools
17 | - run: go run cmd/changelog-check/main.go ${{ github.event.pull_request.number }}
18 | working-directory: ./tools
19 | env:
20 | GITHUB_OWNER: Nmishin
21 | GITHUB_REPO: terraform-provider-dodo
22 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
23 |
--------------------------------------------------------------------------------
/main.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "flag"
5 |
6 | provider "github.com/Nmishin/terraform-provider-dodo/internal/sdkv2provider"
7 | "github.com/hashicorp/terraform-plugin-sdk/v2/plugin"
8 | "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
9 | )
10 |
11 | var (
12 | version string = "dev"
13 | commit string = ""
14 | )
15 |
16 | func main() {
17 | var debugMode bool
18 |
19 | flag.BoolVar(&debugMode, "debug", false, "set to true to run the provider with support for debuggers like delve")
20 | flag.Parse()
21 |
22 | opts := &plugin.ServeOpts{
23 | ProviderFunc: func() *schema.Provider {
24 | return provider.Provider(version, false)
25 | },
26 | Debug: debugMode,
27 | }
28 |
29 | plugin.Serve(opts)
30 | }
31 |
--------------------------------------------------------------------------------
/scripts/generate-docs.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | #
3 | # Generate the documentation using tfplugindocs and remove changes to files that
4 | # shouldn't change
5 |
6 | exclude_files=()
7 |
8 | # Check if manual changes were made to any excluded files and exit
9 | # otherwise these will be lost with `tfplugindocs`
10 | if [ "$(git status --porcelain "${exclude_files[@]}")" ]; then
11 | echo "Uncommitted changes were detected to the following files. These aren't autogenerated, please commit or stash these changes and try again"
12 | echo $(git status --porcelain "${exclude_files[@]}")
13 | exit 1
14 | fi
15 |
16 | $(go env GOPATH)/bin/tfplugindocs generate\
17 | -rendered-provider-name "Dodo"
18 |
19 | # Remove the changes to files we don't autogenerate
20 | git checkout HEAD -- "${exclude_files[@]}"
21 |
--------------------------------------------------------------------------------
/docs/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: ""
3 | page_title: "Dodo Provider"
4 | description: |-
5 | Get data from https://globalapi.dodopizza.com/ via OpenTofu/Terraform
6 | ---
7 |
8 | # Dodo Provider
9 |
10 | The Dodo provider provides resources for getting data from the Dodo Global API.
11 |
12 | ## Example Usage
13 |
14 | ```terraform
15 | provider "dodo" {
16 | # example configuration here
17 | }
18 | ```
19 |
20 | ### Configure provider with environment variables
21 | It is optionally possible to configure the provider by passing environment variables to terraform
22 | ```bash
23 | export DODO_BASE_URL=https://...
24 | ```
25 |
26 |
27 | ## Schema
28 |
29 | ### Optional
30 |
31 | - `url` (String) The Dodo Global API endpoint, can optionally be passed as `DODO_BASE_URL` environmental variable
32 |
--------------------------------------------------------------------------------
/docs/data-sources/countries.md:
--------------------------------------------------------------------------------
1 | ---
2 | # generated by https://github.com/hashicorp/terraform-plugin-docs
3 | page_title: "dodo_countries Data Source - terraform-provider-dodo"
4 | subcategory: ""
5 | description: |-
6 |
7 | ---
8 |
9 | # dodo_countries (Data Source)
10 |
11 |
12 |
13 |
14 |
15 |
16 | ## Schema
17 |
18 | ### Required
19 |
20 | - `brand` (String) A brand name to search for.
21 |
22 | ### Read-Only
23 |
24 | - `countries` (List of Object) A list of countries. Generated. (see [below for nested schema](#nestedatt--countries))
25 | - `id` (String) The ID of this resource.
26 |
27 |
28 | ### Nested Schema for `countries`
29 |
30 | Read-Only:
31 |
32 | - `code` (String)
33 | - `currency` (String)
34 | - `id` (Number)
35 | - `name` (String)
36 |
37 |
38 |
--------------------------------------------------------------------------------
/.github/workflows/generate-changelog.yml:
--------------------------------------------------------------------------------
1 | name: Generate CHANGELOG
2 | on:
3 | pull_request_target:
4 | types: [closed]
5 | workflow_run:
6 | workflows: [Generate registry documentation]
7 | types:
8 | - completed
9 | workflow_dispatch:
10 | jobs:
11 | generate-changelog:
12 | if: github.event.pull_request.merged || github.event_name == 'workflow_dispatch'
13 | runs-on: ubuntu-latest
14 | steps:
15 | - uses: actions/checkout@v4
16 | with:
17 | fetch-depth: 0
18 | token: ${{ secrets.GITHUB_TOKEN }}
19 | - run: cd tools && go install github.com/hashicorp/go-changelog/cmd/changelog-build
20 | - run: ./scripts/generate-changelog.sh
21 | - run: |
22 | if [[ `git status --porcelain` ]]; then
23 | if ${{github.event_name == 'workflow_dispatch'}}; then
24 | MSG="Update CHANGELOG.md (Manual Trigger)"
25 | else
26 | MSG="Update CHANGELOG.md for #${{ github.event.pull_request.number }}"
27 | fi
28 | git config --local user.email changelogbot@tofuutils.com
29 | git config --local user.name changelogbot
30 | git add CHANGELOG.md
31 | git commit -m "$MSG"
32 | git push
33 | fi
34 |
--------------------------------------------------------------------------------
/internal/sdkv2provider/data_source_brands.go:
--------------------------------------------------------------------------------
1 | package sdkv2provider
2 |
3 | import (
4 | "context"
5 | "fmt"
6 |
7 | "github.com/hashicorp/terraform-plugin-log/tflog"
8 | "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
9 | "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
10 | )
11 |
12 | func dataSourceDodoBrands() *schema.Resource {
13 | return &schema.Resource{
14 | ReadContext: dataSourceDodoBrandsRead,
15 |
16 | Schema: map[string]*schema.Schema{
17 | "names": {
18 | Type: schema.TypeSet,
19 | Elem: &schema.Schema{
20 | Type: schema.TypeString,
21 | },
22 | Computed: true,
23 | },
24 | },
25 | }
26 | }
27 |
28 | func dataSourceDodoBrandsRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
29 | tflog.Debug(ctx, fmt.Sprintf("Reading Brands"))
30 | var diags diag.Diagnostics
31 |
32 | c := meta.(*APIClient)
33 |
34 | brands, _, err := c.client.BrandsApi.ApiV2BrandsGet(ctx)
35 | if err != nil {
36 | return diag.FromErr(fmt.Errorf("error listing brands: %w", err))
37 | }
38 |
39 | brandNames := make([]string, 0)
40 | for _, brand := range brands {
41 | brandNames = append(brandNames, brand.Name)
42 | }
43 |
44 | if err = d.Set("names", brandNames); err != nil {
45 | return diag.FromErr(fmt.Errorf("error setting matched brands: %w", err))
46 | }
47 |
48 | d.SetId(stringListChecksum(brandNames))
49 |
50 | return diags
51 | }
52 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Terraform Provider Dodo Pizza
2 | =============================
3 |
4 | This repository contains a sample Terraform provider. Can be used for learning purposes.
5 | It is a fully working solution. Uses [dodo-go](https://github.com/Nmishin/dodo-go) client library to interact with the [Dodo Global API v2](https://globalapi.dodopizza.com/api/index.html?urls.primaryName=Dodo%20Global%20API%20v2).
6 |
7 |
8 | __For more information about how to write a custom terraform provider, please check out my article:
9 |
[My Path for Terraform Provider Creation](https://hackernoon.com/my-path-for-terraform-provider-creation)__
10 |
11 |
12 | This terraform provider is available for both repositories: terraform and opentofu.
13 |
14 | Using the Provider
15 | ------------------
16 | ```tcl
17 | cat provider.tf
18 |
19 | terraform {
20 | required_providers {
21 | dodo = {
22 | source = "Nmishin/dodo"
23 | version = "0.0.5"
24 | }
25 | }
26 | }
27 |
28 | provider "dodo" {}
29 | ```
30 |
31 | ```tcl
32 | cat main.tf
33 |
34 | data "dodo_brand" "test" {}
35 | ```
36 |
37 | ```tcl
38 | cat outputs.tf
39 |
40 | output "brands" {
41 | value = data.dodo_brand.test.names
42 | }
43 | ```
44 |
45 | ```tcl
46 | tofu plan
47 |
48 | data.dodo_brand.test: Reading...
49 | data.dodo_brand.test: Read complete after 1s [id=bf4b2096fab07279e4a6a9db5fb704b5]
50 |
51 | Changes to Outputs:
52 | + brands = [
53 | + "dodopizza",
54 | + "doner42",
55 | + "drinkit",
56 | ]
57 |
58 | You can apply this plan to save these new output values to the OpenTofu state, without changing any real infrastructure.
59 | ```
60 |
61 |
62 |
--------------------------------------------------------------------------------
/scripts/changelog.tmpl:
--------------------------------------------------------------------------------
1 | {{- if index .NotesByType "upgrade-guide" }}
2 | {{range index .NotesByType "upgrade-guide" -}}
3 | {{ template "note" .}}
4 | {{ end -}}
5 | {{- end -}}
6 |
7 | {{- if index .NotesByType "breaking-change" }}
8 | BREAKING CHANGES:
9 |
10 | {{range index .NotesByType "breaking-change" -}}
11 | {{ template "note" .}}
12 | {{ end -}}
13 | {{- end -}}
14 |
15 | {{- if .NotesByType.note }}
16 | NOTES:
17 |
18 | {{range .NotesByType.note -}}
19 | {{ template "note" .}}
20 | {{ end -}}
21 | {{- end -}}
22 |
23 | {{- $features := combineTypes .NotesByType.feature (index .NotesByType "new-resource" ) (index .NotesByType "new-data-source") (index .NotesByType "new-guide") }}
24 | {{- if $features }}
25 | FEATURES:
26 |
27 | {{range $features | sort -}}
28 | {{ template "note" . }}
29 | {{ end -}}
30 | {{- end -}}
31 |
32 | {{- if .NotesByType.enhancement }}
33 | ENHANCEMENTS:
34 |
35 | {{range .NotesByType.enhancement | sort -}}
36 | {{ template "note" .}}
37 | {{ end -}}
38 | {{- end -}}
39 |
40 | {{- if .NotesByType.bug }}
41 | BUG FIXES:
42 |
43 | {{range .NotesByType.bug | sort -}}
44 | {{ template "note" . }}
45 | {{ end -}}
46 | {{- end -}}
47 |
48 | {{- if .NotesByType.internal }}
49 | INTERNAL:
50 |
51 | {{range .NotesByType.internal | sort -}}
52 | {{ template "note" . }}
53 | {{ end -}}
54 | {{- end -}}
55 |
56 | {{- if .NotesByType.internal }}
57 | INTERNAL:
58 | {{range .NotesByType.internal | sort -}}
59 | {{ template "note" . }}
60 | {{ end -}}
61 | {{- end -}}
62 |
63 | {{- if .NotesByType.dependency }}
64 | DEPENDENCIES:
65 |
66 | {{range .NotesByType.dependency | sort -}}
67 | {{ template "note" . }}
68 | {{ end -}}
69 | {{- end -}}
70 |
--------------------------------------------------------------------------------
/scripts/generate-changelog.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | set -o errexit
4 | set -o nounset
5 |
6 | __dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
7 | __parent="$(dirname "$__dir")"
8 |
9 | CHANGELOG_FILE_NAME="CHANGELOG.md"
10 | CHANGELOG_TMP_FILE_NAME="CHANGELOG.tmp"
11 | TARGET_SHA=$(git rev-parse HEAD)
12 | PREVIOUS_RELEASE_SHA=$(git rev-list -n 1 $(git describe --abbrev=0 --match='v*.*.*' --tags))
13 |
14 | if [ $TARGET_SHA == $PREVIOUS_RELEASE_SHA ]; then
15 | echo "Nothing to do"
16 | exit 0
17 | fi
18 |
19 | PREVIOUS_CHANGELOG=$(sed -n -e "/## $(git describe --abbrev=0 --match='v*.*.*' --tags | tr -d v)/,\$p" $__parent/$CHANGELOG_FILE_NAME)
20 |
21 | if [ -z "$PREVIOUS_CHANGELOG" ]
22 | then
23 | echo "Unable to locate previous changelog contents."
24 | exit 1
25 | fi
26 |
27 | CHANGELOG=$($(go env GOPATH)/bin/changelog-build -this-release $TARGET_SHA \
28 | -last-release $PREVIOUS_RELEASE_SHA \
29 | -git-dir $__parent \
30 | -entries-dir .changelog \
31 | -changelog-template $__dir/changelog.tmpl \
32 | -note-template $__dir/release-note.tmpl)
33 |
34 | if [ -z "$CHANGELOG" ]
35 | then
36 | echo "No changelog generated."
37 | exit 0
38 | fi
39 |
40 | rm -f $CHANGELOG_TMP_FILE_NAME
41 |
42 | sed -n -e "1{/## /p;}" $__parent/$CHANGELOG_FILE_NAME > $CHANGELOG_TMP_FILE_NAME
43 | echo "$CHANGELOG" >> $CHANGELOG_TMP_FILE_NAME
44 | echo >> $CHANGELOG_TMP_FILE_NAME
45 | echo "$PREVIOUS_CHANGELOG" >> $CHANGELOG_TMP_FILE_NAME
46 |
47 | cp $CHANGELOG_TMP_FILE_NAME $CHANGELOG_FILE_NAME
48 |
49 | rm $CHANGELOG_TMP_FILE_NAME
50 |
51 | echo "Successfully generated changelog."
52 |
53 | exit 0
54 |
--------------------------------------------------------------------------------
/.github/workflows/dependabot-changelog.yml:
--------------------------------------------------------------------------------
1 | name: Add CHANGELOG for dependabot changes
2 | on: pull_request_target
3 | permissions:
4 | pull-requests: write
5 | issues: write
6 | repository-projects: write
7 | contents: write
8 | jobs:
9 | dependabot:
10 | runs-on: ubuntu-latest
11 | if: ${{ github.event.pull_request.user.login == 'dependabot[bot]' }}
12 | steps:
13 | - uses: actions/checkout@v4
14 | - run: |
15 | gh pr checkout $PR_URL
16 |
17 | title=$(gh pr view $PR_URL --json title | jq -r .title)
18 |
19 | # "group with" is the title used when dependabot has a grouped update.
20 | if [[ "$title" == *"group with"* ]]; then
21 | output=$(gh pr view $PR_URL | grep 'Updates')
22 | else
23 | # clean out the 'build(deps): ' prefix.
24 | output="${title//build(deps): /}"
25 | fi
26 |
27 | IFS=$'\n'
28 |
29 | while read -r line; do
30 | updates+=("$line")
31 | done <<< "$output"
32 |
33 | for value in ${updates[@]}; do
34 | value="${value//Updates/bump}"
35 | cat << EOF >> .changelog/$PR_NUMBER.txt
36 | \`\`\`release-note:dependency
37 | provider: $value
38 | \`\`\`
39 | EOF
40 | done
41 |
42 | git config user.name github-actions[bot]
43 | git config user.email github-actions[bot]@users.noreply.github.com
44 | git add .changelog/$PR_NUMBER.txt
45 | git commit -m "add CHANGELOG for #$PR_NUMBER"
46 | git push
47 | env:
48 | GH_TOKEN: ${{ secrets.DODO_GITHUB_TOKEN }}
49 | PR_URL: ${{ github.event.pull_request.html_url }}
50 | PR_NUMBER: ${{ github.event.pull_request.number }}
51 |
--------------------------------------------------------------------------------
/.goreleaser.yml:
--------------------------------------------------------------------------------
1 | version: 2
2 |
3 | before:
4 | hooks:
5 | # this is just an example and not a requirement for provider building/publishing
6 | - go mod tidy
7 | builds:
8 | - env:
9 | # goreleaser does not work with CGO, it could also complicate
10 | # usage by users in CI/CD systems like Terraform Cloud where
11 | # they are unable to install libraries.
12 | - CGO_ENABLED=0
13 | mod_timestamp: '{{ .CommitTimestamp }}'
14 | flags:
15 | - -trimpath
16 | ldflags:
17 | - '-s -w -X main.version={{.Version}} -X main.commit={{.Commit}}'
18 | goos:
19 | - freebsd
20 | - windows
21 | - linux
22 | - darwin
23 | goarch:
24 | - amd64
25 | - '386'
26 | - arm
27 | - arm64
28 | ignore:
29 | - goos: darwin
30 | goarch: '386'
31 | binary: '{{ .ProjectName }}_v{{ .Version }}'
32 | archives:
33 | - format: zip
34 | name_template: '{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}'
35 | checksum:
36 | extra_files:
37 | - glob: 'terraform-registry-manifest.json'
38 | name_template: '{{ .ProjectName }}_{{ .Version }}_manifest.json'
39 | name_template: '{{ .ProjectName }}_{{ .Version }}_SHA256SUMS'
40 | algorithm: sha256
41 | signs:
42 | - artifacts: checksum
43 | args:
44 | # if you are using this in a GitHub action or some other automated pipeline, you
45 | # need to pass the batch flag to indicate its not interactive.
46 | - "--batch"
47 | - "--local-user"
48 | - "{{ .Env.GPG_FINGERPRINT }}" # set this environment variable for your signing key
49 | - "--output"
50 | - "${signature}"
51 | - "--detach-sign"
52 | - "${artifact}"
53 | changelog:
54 | disable: "{{ .Env.DISABLE_CHANGELOG }}"
55 | release:
56 | discussion_category_name: Release
57 | prerelease: auto
58 | extra_files:
59 | - glob: 'terraform-registry-manifest.json'
60 | name_template: '{{ .ProjectName }}_{{ .Version }}_manifest.json'
61 | # If you want to manually examine the release before its live, uncomment this line:
62 | # draft: true
63 |
--------------------------------------------------------------------------------
/internal/sdkv2provider/provider.go:
--------------------------------------------------------------------------------
1 | package sdkv2provider
2 |
3 | import (
4 | "context"
5 | "fmt"
6 | "net/url"
7 | "strings"
8 |
9 | api "github.com/Nmishin/dodo-go"
10 | "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
11 | "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
12 | )
13 |
14 | func init() {
15 | schema.DescriptionKind = schema.StringMarkdown
16 |
17 | schema.SchemaDescriptionBuilder = func(s *schema.Schema) string {
18 | desc := s.Description
19 | if s.Default != nil {
20 | desc += fmt.Sprintf(" Defaults to `%v`.", s.Default)
21 | }
22 | if s.Computed {
23 | desc += " Generated."
24 | }
25 | return strings.TrimSpace(desc)
26 | }
27 | }
28 |
29 | func Provider(version string, testing bool) *schema.Provider {
30 | return &schema.Provider{
31 | Schema: map[string]*schema.Schema{
32 | "url": {
33 | Type: schema.TypeString,
34 | Required: true,
35 | Description: "The Dodo Global API endpoint, can optionally be passed as `DODO_BASE_URL` environmental variable",
36 | DefaultFunc: schema.EnvDefaultFunc("DODO_BASE_URL", "https://globalapi.dodopizza.com"),
37 | },
38 | },
39 | DataSourcesMap: map[string]*schema.Resource{
40 | "dodo_brand": dataSourceDodoBrands(),
41 | "dodo_countries": dataSourceDodoCountries(),
42 | },
43 | ResourcesMap: map[string]*schema.Resource{},
44 | ConfigureContextFunc: providerConfigure(version, testing),
45 | }
46 | }
47 |
48 | type APIClient struct {
49 | client *api.APIClient
50 | }
51 |
52 | func providerConfigure(version string, testing bool) schema.ConfigureContextFunc {
53 | return func(c context.Context, d *schema.ResourceData) (interface{}, diag.Diagnostics) {
54 | apiURL := d.Get("url").(string)
55 |
56 | // Warning or errors can be collected in a slice type
57 | var diags diag.Diagnostics
58 |
59 | dodoURL, err := url.Parse(apiURL)
60 | if err != nil {
61 | return nil, diag.FromErr(err)
62 | }
63 |
64 | config := api.NewConfiguration()
65 | config.Host = dodoURL.Host
66 | config.Scheme = dodoURL.Scheme
67 |
68 | apiClient := api.NewAPIClient(config)
69 |
70 | return &APIClient{
71 | client: apiClient,
72 | }, diags
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/internal/sdkv2provider/data_source_countries.go:
--------------------------------------------------------------------------------
1 | package sdkv2provider
2 |
3 | import (
4 | "context"
5 | "fmt"
6 | "strconv"
7 |
8 | "github.com/hashicorp/terraform-plugin-log/tflog"
9 | "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
10 | "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
11 | )
12 |
13 | func dataSourceDodoCountries() *schema.Resource {
14 | return &schema.Resource{
15 | ReadContext: dataSourceDodoCountriesRead,
16 |
17 | Schema: map[string]*schema.Schema{
18 | "brand": {
19 | Type: schema.TypeString,
20 | Required: true,
21 | Description: "A brand name to search for.",
22 | },
23 | "countries": {
24 | Type: schema.TypeList,
25 | Computed: true,
26 | Description: "A list of countries.",
27 | Elem: &schema.Resource{
28 | Schema: map[string]*schema.Schema{
29 | "id": {
30 | Type: schema.TypeInt,
31 | Computed: true,
32 | Description: "The country id.",
33 | },
34 | "code": {
35 | Type: schema.TypeString,
36 | Computed: true,
37 | Description: "The country code.",
38 | },
39 | "name": {
40 | Type: schema.TypeString,
41 | Computed: true,
42 | Description: "The country name.",
43 | },
44 | "currency": {
45 | Type: schema.TypeString,
46 | Computed: true,
47 | Description: "The country currency",
48 | },
49 | },
50 | },
51 | },
52 | },
53 | }
54 | }
55 |
56 | func dataSourceDodoCountriesRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
57 | tflog.Debug(ctx, fmt.Sprintf("Reading countries"))
58 |
59 | c := meta.(*APIClient)
60 |
61 | brand := d.Get("brand").(string)
62 |
63 | countries, _, err := c.client.CountriesApi.ApiV2BrandCountriesGet(ctx, brand)
64 | if err != nil {
65 | return diag.FromErr(fmt.Errorf("error listing countries: %w", err))
66 | }
67 |
68 | countriesIds := make([]string, 0)
69 | countriesDetails := make([]interface{}, 0)
70 | for _, c := range countries {
71 | countriesDetails = append(countriesDetails, map[string]interface{}{
72 | "id": c.Id,
73 | "code": c.Code,
74 | "name": c.Name,
75 | "currency": c.Currency,
76 | })
77 | countriesIds = append(countriesIds, strconv.Itoa(int(c.Id)))
78 | }
79 |
80 | if err = d.Set("countries", countriesDetails); err != nil {
81 | return diag.Errorf("error setting countries: %w", err)
82 | }
83 |
84 | d.SetId(stringListChecksum(countriesIds))
85 | return nil
86 | }
87 |
--------------------------------------------------------------------------------
/go.mod:
--------------------------------------------------------------------------------
1 | module github.com/Nmishin/terraform-provider-dodo
2 |
3 | go 1.23.0
4 |
5 | toolchain go1.24.1
6 |
7 | require (
8 | github.com/Nmishin/dodo-go v0.0.1
9 | github.com/agext/levenshtein v1.2.3 // indirect
10 | github.com/fatih/color v1.16.0 // indirect
11 | github.com/hashicorp/go-hclog v1.6.3 // indirect
12 | github.com/hashicorp/go-plugin v1.6.3 // indirect
13 | github.com/hashicorp/go-uuid v1.0.3 // indirect
14 | github.com/hashicorp/hcl/v2 v2.23.0 // indirect
15 | github.com/hashicorp/terraform-plugin-go v0.27.0 // indirect
16 | github.com/hashicorp/terraform-plugin-sdk/v2 v2.37.0
17 | github.com/hashicorp/yamux v0.1.1 // indirect
18 | github.com/mattn/go-isatty v0.0.20 // indirect
19 | github.com/mitchellh/go-testing-interface v1.14.1 // indirect
20 | github.com/mitchellh/go-wordwrap v1.0.1 // indirect
21 | github.com/mitchellh/mapstructure v1.5.0 // indirect
22 | github.com/oklog/run v1.1.0 // indirect
23 | github.com/zclconf/go-cty v1.16.2 // indirect
24 | golang.org/x/net v0.39.0 // indirect
25 | golang.org/x/sys v0.33.0 // indirect
26 | golang.org/x/text v0.25.0 // indirect
27 | )
28 |
29 | require github.com/hashicorp/terraform-plugin-log v0.9.0
30 |
31 | require (
32 | github.com/antihax/optional v1.0.0 // indirect
33 | github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
34 | github.com/golang/protobuf v1.5.4 // indirect
35 | github.com/google/go-cmp v0.7.0 // indirect
36 | github.com/hashicorp/go-cty v1.5.0 // indirect
37 | github.com/hashicorp/go-version v1.7.0 // indirect
38 | github.com/hashicorp/logutils v1.0.0 // indirect
39 | github.com/hashicorp/terraform-registry-address v0.2.5 // indirect
40 | github.com/hashicorp/terraform-svchost v0.1.1 // indirect
41 | github.com/kr/pretty v0.3.1 // indirect
42 | github.com/mattn/go-colorable v0.1.13 // indirect
43 | github.com/mitchellh/copystructure v1.2.0 // indirect
44 | github.com/mitchellh/reflectwalk v1.0.2 // indirect
45 | github.com/rogpeppe/go-internal v1.13.1 // indirect
46 | github.com/stretchr/testify v1.10.0 // indirect
47 | github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect
48 | github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect
49 | github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
50 | golang.org/x/mod v0.24.0 // indirect
51 | golang.org/x/oauth2 v0.27.0 // indirect
52 | golang.org/x/sync v0.14.0 // indirect
53 | golang.org/x/tools v0.23.0 // indirect
54 | google.golang.org/appengine v1.6.8 // indirect
55 | google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a // indirect
56 | google.golang.org/grpc v1.72.1 // indirect
57 | google.golang.org/protobuf v1.36.6 // indirect
58 | gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
59 | )
60 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ## 0.1.0 (Unreleased)
2 | ## 0.1.0 (December 29, 2024)
3 | ## 0.1.0 (December 29, 2024)
4 | ## 0.1.0 (December 29, 2024)
5 | BREAKING CHANGES:
6 | * test
7 |
8 | NOTES:
9 |
10 | * Update readme.md
11 | ## 0.0.11-beta4 (December 29, 2024)
12 | BREAKING CHANGES:
13 |
14 | * Breaking change added ([#26](https://github.com/Nmishin/terraform-provider-dodo/issues/26))
15 | ## 0.0.11 (December 29, 2024)
16 | BREAKING CHANGES:
17 |
18 | * Breaking change added ([#26](https://github.com/Nmishin/terraform-provider-dodo/issues/26))
19 |
20 | NOTES:
21 |
22 | * Update readme.md ([#27](https://github.com/Nmishin/terraform-provider-dodo/issues/27))
23 |
24 | ENHANCEMENTS:
25 |
26 | * documentation: Updated README, updated info about tenv. ([#25](https://github.com/Nmishin/terraform-provider-dodo/issues/25))
27 | ## 0.0.10 (December 29, 2024)
28 | BREAKING CHANGES:
29 |
30 | * Breaking change added ([#26](https://github.com/Nmishin/terraform-provider-dodo/issues/26))
31 |
32 | NOTES:
33 |
34 | * Update readme.md ([#27](https://github.com/Nmishin/terraform-provider-dodo/issues/27))
35 |
36 | ENHANCEMENTS:
37 |
38 | * documentation: Updated README, updated info about tenv. ([#25](https://github.com/Nmishin/terraform-provider-dodo/issues/25))
39 | ## 0.0.9 (Dec 29th, 2024)
40 | BREAKING CHANGES:
41 |
42 | * breaking-change ([#29](https://github.com/Nmishin/terraform-provider-dodo/issues/29))
43 |
44 | NOTES:
45 |
46 | * Update readme.md ([#28](https://github.com/Nmishin/terraform-provider-dodo/issues/28))
47 |
48 | ## 0.0.8 (Dec 28th, 2024)
49 |
50 | BREAKING CHANGES:
51 |
52 | * breaking-change ([#29](https://github.com/Nmishin/terraform-provider-dodo/issues/29))
53 |
54 | NOTES:
55 |
56 | * Update readme.md ([#28](https://github.com/Nmishin/terraform-provider-dodo/issues/28))
57 |
58 | ## 0.0.7 (Dec 28th, 2024)
59 |
60 | BREAKING CHANGES:
61 |
62 | * Breaking change added ([#26](https://github.com/Nmishin/terraform-provider-dodo/issues/26))
63 |
64 | NOTES:
65 |
66 | * Update readme.md ([#27](https://github.com/Nmishin/terraform-provider-dodo/issues/27))
67 |
68 | ENHANCEMENTS:
69 |
70 | * documentation: Updated README, updated info about tenv. ([#25](https://github.com/Nmishin/terraform-provider-dodo/issues/25))
71 |
72 | ## 0.0.6 (Dec 28th, 2024)
73 |
74 | NOTES:
75 |
76 | * Update readme.md ([#23](https://github.com/Nmishin/terraform-provider-dodo/issues/23))
77 |
78 | ENHANCEMENTS:
79 |
80 | * documentation: Updated README, updated info about tenv. ([#18](https://github.com/Nmishin/terraform-provider-dodo/issues/18))
81 | * feat: Updated token ([#19](https://github.com/Nmishin/terraform-provider-dodo/issues/19))
82 |
83 | DEPENDENCIES:
84 |
85 | * provider: Bump google.golang.org/protobuf from 1.28.0 to 1.33.0 in /tools in the go_modules group across 1 directory ([#22](https://github.com/Nmishin/terraform-provider-dodo/issues/22))
86 |
87 | ## 0.0.5 (Dec 28th, 2024)
88 |
--------------------------------------------------------------------------------
/GNUmakefile:
--------------------------------------------------------------------------------
1 | TEST?=$$(go list ./...)
2 | GOFMT_FILES?=$$(find . -name '*.go')
3 | PKG_NAME=dodo
4 | VERSION?=$(shell git describe --tags --always)
5 | DEV_VERSION=99.0.0
6 | DODO_GO_VERSION?=master
7 | INCLUDE_VERSION_IN_FILENAME?=false
8 |
9 | default: build
10 |
11 | install: vet fmtcheck
12 | go install -ldflags="-X github.com/Nmishin/terraform-provider-dodo/main.version=$(VERSION)"
13 |
14 | build: vet fmtcheck
15 | @if $(INCLUDE_VERSION_IN_FILENAME); then \
16 | go build -ldflags="-X github.com/Nmishin/terraform-provider-dodo/main.version=$(VERSION)" -o terraform-provider-dodo_$(VERSION); \
17 | echo "==> Successfully built terraform-provider-dodo_$(VERSION)"; \
18 | else \
19 | go build -ldflags="-X github.com/Nmishin/terraform-provider-dodo/main.version=$(VERSION)" -o terraform-provider-dodo; \
20 | echo "==> Successfully built terraform-provider-dodo"; \
21 | fi
22 |
23 | sweep:
24 | @echo "WARNING: This will destroy infrastructure. Use only in development accounts."
25 | go test $(TEST) -v -sweep=$(SWEEP) $(SWEEPARGS)
26 |
27 | test: fmtcheck
28 | go test -i $(TEST) || exit 1
29 | echo $(TEST) | \
30 | xargs -t -n4 go test $(TESTARGS) -timeout=30s -parallel=4 -race
31 |
32 | testacc: fmtcheck
33 | TF_ACC=1 go test $(TEST) -v $(TESTARGS) -timeout 120m -parallel 1
34 |
35 | lint: tools terraform-provider-lint golangci-lint
36 |
37 | terraform-provider-lint: tools
38 | $$(go env GOPATH)/bin/tfproviderlintx \
39 | -R001=false \
40 | -R003=false \
41 | -R012=false \
42 | -S006=false \
43 | -S014=false \
44 | -S020=false \
45 | -S022=false \
46 | -S023=false \
47 | -AT001=false \
48 | -AT002=false \
49 | -AT003=false \
50 | -AT006=false \
51 | -AT012=false \
52 | -R013=false \
53 | -XAT001=false \
54 | -XR001=false \
55 | -XR003=false \
56 | -XR004=false \
57 | -XS001=false \
58 | -XS002=false \
59 | ./...
60 |
61 | vet:
62 | @echo "==> Running go vet ."
63 | @go vet ./... ; if [ $$? -ne 0 ]; then \
64 | echo ""; \
65 | echo "Vet found suspicious constructs. Please check the reported constructs"; \
66 | echo "and fix them if necessary before submitting the code for review."; \
67 | exit 1; \
68 | fi
69 |
70 | fmt:
71 | gofmt -w $(GOFMT_FILES)
72 |
73 | test-compile:
74 | @if [ "$(TEST)" = "./..." ]; then \
75 | echo "ERROR: Set TEST to a specific package. For example,"; \
76 | echo " make test-compile TEST=./$(PKG_NAME)"; \
77 | exit 1; \
78 | fi
79 | go test -c $(TEST) $(TESTARGS)
80 |
81 | clean-dev:
82 | @echo "==> Removing development version ($(DEV_VERSION))"
83 | @rm -f terraform-provider-dodo_$(DEV_VERSION)
84 |
85 | build-dev: clean-dev
86 | @echo "==> Building development version ($(DEV_VERSION))"
87 | go build -gcflags="all=-N -l" -o terraform-provider-dodo_$(DEV_VERSION)
88 |
89 | generate-changelog:
90 | @echo "==> Generating changelog..."
91 | @sh -c "'$(CURDIR)/scripts/generate-changelog.sh'"
92 |
93 | golangci-lint:
94 | @golangci-lint run ./internal/... --config .golintci.yml
95 |
96 | tools:
97 | @echo "==> Installing development tooling..."
98 | go generate -tags tools tools/tools.go
99 |
100 | update-go-client:
101 | @echo "==> Updating the dodo-go client to $(DODO_GO_VERSION)"
102 | go get github.com/Nmishin/dodo-go@$(CLOUDFLARE_GO_VERSION)
103 | go mod tidy
104 |
105 | docs: tools
106 | @sh -c "'$(CURDIR)/scripts/generate-docs.sh'"
107 |
108 | .PHONY: build install test sweep testacc lint terraform-provider-lint vet fmt fmtcheck errcheck test-compilebuild-dev clean-dev generate-changelog golangci-lint tools update-go-client docs
109 |
--------------------------------------------------------------------------------
/tools/go.mod:
--------------------------------------------------------------------------------
1 | module github.com/nmishin/terraform-provider-dodo/tools
2 |
3 | go 1.23.3
4 |
5 | require (
6 | github.com/cloudflare/cloudflare-go v0.112.0
7 | github.com/google/go-github v17.0.0+incompatible
8 | github.com/hashicorp/go-changelog v0.0.0-20241111140550-beb7aaabfbd1
9 | github.com/hashicorp/terraform-plugin-docs v0.20.1
10 | golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
11 | )
12 |
13 | require (
14 | dario.cat/mergo v1.0.0 // indirect
15 | github.com/BurntSushi/toml v1.2.1 // indirect
16 | github.com/Kunde21/markdownfmt/v3 v3.1.0 // indirect
17 | github.com/Masterminds/goutils v1.1.1 // indirect
18 | github.com/Masterminds/semver/v3 v3.2.0 // indirect
19 | github.com/Masterminds/sprig/v3 v3.2.3 // indirect
20 | github.com/Microsoft/go-winio v0.6.1 // indirect
21 | github.com/ProtonMail/go-crypto v1.1.3 // indirect
22 | github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
23 | github.com/armon/go-radix v1.0.0 // indirect
24 | github.com/bgentry/speakeasy v0.1.0 // indirect
25 | github.com/bmatcuk/doublestar/v4 v4.7.1 // indirect
26 | github.com/cloudflare/circl v1.3.7 // indirect
27 | github.com/cyphar/filepath-securejoin v0.3.6 // indirect
28 | github.com/emirpasic/gods v1.18.1 // indirect
29 | github.com/fatih/color v1.16.0 // indirect
30 | github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
31 | github.com/go-git/go-billy/v5 v5.6.1 // indirect
32 | github.com/go-git/go-git/v5 v5.13.1 // indirect
33 | github.com/goccy/go-json v0.10.4 // indirect
34 | github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
35 | github.com/golang/protobuf v1.5.3 // indirect
36 | github.com/google/go-querystring v1.1.0 // indirect
37 | github.com/google/uuid v1.3.0 // indirect
38 | github.com/hashicorp/cli v1.1.6 // indirect
39 | github.com/hashicorp/errwrap v1.1.0 // indirect
40 | github.com/hashicorp/go-checkpoint v0.5.0 // indirect
41 | github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
42 | github.com/hashicorp/go-multierror v1.1.1 // indirect
43 | github.com/hashicorp/go-retryablehttp v0.7.7 // indirect
44 | github.com/hashicorp/go-uuid v1.0.3 // indirect
45 | github.com/hashicorp/go-version v1.7.0 // indirect
46 | github.com/hashicorp/hc-install v0.9.0 // indirect
47 | github.com/hashicorp/terraform-exec v0.21.0 // indirect
48 | github.com/hashicorp/terraform-json v0.23.0 // indirect
49 | github.com/huandu/xstrings v1.3.3 // indirect
50 | github.com/imdario/mergo v0.3.15 // indirect
51 | github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
52 | github.com/kevinburke/ssh_config v1.2.0 // indirect
53 | github.com/mattn/go-colorable v0.1.13 // indirect
54 | github.com/mattn/go-isatty v0.0.20 // indirect
55 | github.com/mattn/go-runewidth v0.0.13 // indirect
56 | github.com/mitchellh/copystructure v1.2.0 // indirect
57 | github.com/mitchellh/reflectwalk v1.0.2 // indirect
58 | github.com/pjbgf/sha1cd v0.3.0 // indirect
59 | github.com/posener/complete v1.2.3 // indirect
60 | github.com/rivo/uniseg v0.2.0 // indirect
61 | github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect
62 | github.com/shopspring/decimal v1.3.1 // indirect
63 | github.com/skeema/knownhosts v1.3.0 // indirect
64 | github.com/spf13/cast v1.5.0 // indirect
65 | github.com/xanzy/ssh-agent v0.3.3 // indirect
66 | github.com/yuin/goldmark v1.7.7 // indirect
67 | github.com/yuin/goldmark-meta v1.1.0 // indirect
68 | github.com/zclconf/go-cty v1.15.0 // indirect
69 | go.abhg.dev/goldmark/frontmatter v0.2.0 // indirect
70 | golang.org/x/crypto v0.36.0 // indirect
71 | golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
72 | golang.org/x/mod v0.21.0 // indirect
73 | golang.org/x/net v0.38.0 // indirect
74 | golang.org/x/sync v0.12.0 // indirect
75 | golang.org/x/sys v0.31.0 // indirect
76 | golang.org/x/text v0.23.0 // indirect
77 | golang.org/x/time v0.8.0 // indirect
78 | golang.org/x/tools v0.23.0 // indirect
79 | google.golang.org/appengine v1.4.0 // indirect
80 | google.golang.org/protobuf v1.33.0 // indirect
81 | gopkg.in/warnings.v0 v0.1.2 // indirect
82 | gopkg.in/yaml.v2 v2.4.0 // indirect
83 | gopkg.in/yaml.v3 v3.0.1 // indirect
84 | )
85 |
--------------------------------------------------------------------------------
/tools/cmd/changelog-check/main.go:
--------------------------------------------------------------------------------
1 | package main
2 |
3 | import (
4 | "context"
5 | "fmt"
6 | "log"
7 | "os"
8 | "strconv"
9 | "strings"
10 |
11 | "github.com/cloudflare/cloudflare-go"
12 | "github.com/google/go-github/github"
13 | "golang.org/x/oauth2"
14 | )
15 |
16 | const (
17 | changelogEntryFileFormat = ".changelog/%d.txt"
18 | changelogProcessDocumentation = "https://github.com/cloudflare/terraform-provider-cloudflare/blob/master/contributing/changelog-process.md"
19 | changelogDetectedMessage = "changelog detected :white_check_mark:"
20 | )
21 |
22 | var (
23 | changelogEntryPresent = false
24 | successMessageAlreadyPresent = false
25 | )
26 |
27 | func getSkipLabels() []string {
28 | return []string{"workflow/skip-changelog-entry", "dependencies"}
29 | }
30 |
31 | func main() {
32 | ctx := context.Background()
33 | if len(os.Args) < 2 {
34 | log.Fatalf("Usage: changelog-check PR#\n")
35 | }
36 | pr := os.Args[1]
37 | prNo, err := strconv.Atoi(pr)
38 | if err != nil {
39 | log.Fatalf("error parsing PR %q as a number: %s", pr, err)
40 | }
41 |
42 | owner := os.Getenv("GITHUB_OWNER")
43 | repo := os.Getenv("GITHUB_REPO")
44 | token := os.Getenv("GITHUB_TOKEN")
45 |
46 | if owner == "" {
47 | log.Fatalf("GITHUB_OWNER not set")
48 | }
49 |
50 | if repo == "" {
51 | log.Fatalf("GITHUB_REPO not set")
52 | }
53 |
54 | if token == "" {
55 | log.Fatalf("GITHUB_TOKEN not set")
56 | }
57 |
58 | ts := oauth2.StaticTokenSource(
59 | &oauth2.Token{AccessToken: token},
60 | )
61 | tc := oauth2.NewClient(ctx, ts)
62 |
63 | client := github.NewClient(tc)
64 |
65 | pullRequest, _, err := client.PullRequests.Get(ctx, owner, repo, prNo)
66 | if err != nil {
67 | log.Fatalf("error retrieving pull request %s/%s#%d: %s", owner, repo, prNo, err)
68 | }
69 |
70 | for _, label := range pullRequest.Labels {
71 | for _, skipLabel := range getSkipLabels() {
72 | if label.GetName() == skipLabel {
73 | log.Printf("%s label found, exiting as changelog is not required\n", label.GetName())
74 | os.Exit(0)
75 | }
76 | }
77 | }
78 |
79 | files, _, _ := client.PullRequests.ListFiles(ctx, owner, repo, prNo, &github.ListOptions{})
80 | if err != nil {
81 | log.Fatalf("error retrieving files on pull request %s/%s#%d: %s", owner, repo, prNo, err)
82 | }
83 |
84 | for _, file := range files {
85 | if file.GetFilename() == fmt.Sprintf(changelogEntryFileFormat, prNo) {
86 | changelogEntryPresent = true
87 | }
88 | }
89 |
90 | comments, _, _ := client.Issues.ListComments(ctx, owner, repo, prNo, &github.IssueListCommentsOptions{})
91 | for _, comment := range comments {
92 | if strings.Contains(comment.GetBody(), "no changelog entry is attached to") {
93 | if changelogEntryPresent {
94 | client.Issues.EditComment(ctx, owner, repo, *comment.ID, &github.IssueComment{
95 | Body: cloudflare.StringPtr(changelogDetectedMessage),
96 | })
97 | os.Exit(0)
98 | }
99 | log.Println("no change in status of changelog checks; exiting")
100 | os.Exit(1)
101 | }
102 |
103 | if strings.Contains(comment.GetBody(), changelogDetectedMessage) {
104 | successMessageAlreadyPresent = true
105 | }
106 | }
107 |
108 | if changelogEntryPresent {
109 | if !successMessageAlreadyPresent {
110 | _, _, _ = client.Issues.CreateComment(ctx, owner, repo, prNo, &github.IssueComment{
111 | Body: cloudflare.StringPtr(changelogDetectedMessage),
112 | })
113 | }
114 | log.Printf("changelog found for %d, skipping remainder of checks\n", prNo)
115 | os.Exit(0)
116 | }
117 |
118 | body := "Oops! It looks like no changelog entry is attached to" +
119 | " this PR. Please include a release note as described in " +
120 | changelogProcessDocumentation + ".\n\nExample: " +
121 | "\n\n~~~\n```release-note:TYPE\nRelease note" +
122 | "\n```\n~~~\n\n" +
123 | "If you do not require a release note to be included and you have permission, please add the `workflow/skip-changelog-entry` label. Otherwise, a maintainer will add the label or ask you for one when they review the PR."
124 |
125 | _, _, err = client.Issues.CreateComment(ctx, owner, repo, prNo, &github.IssueComment{
126 | Body: &body,
127 | })
128 |
129 | if err != nil {
130 | log.Fatalf("failed to comment on pull request %s/%s#%d: %s", owner, repo, prNo, err)
131 | }
132 |
133 | os.Exit(1)
134 | }
135 |
--------------------------------------------------------------------------------
/.github/workflows/release.yml:
--------------------------------------------------------------------------------
1 | # Terraform Provider release workflow.
2 | name: Release
3 |
4 | # This GitHub action creates a release when a tag that matches the pattern
5 | # "v*" (e.g. v0.1.0) is created.
6 | on:
7 | push:
8 | tags:
9 | - 'v[0-9]+.[0-9]+.[0-9]+*'
10 |
11 | # Releases need permissions to read and write the repository contents.
12 | # GitHub considers creating releases and uploading assets as writing contents.
13 | permissions:
14 | contents: write
15 |
16 | jobs:
17 | goreleaser:
18 | runs-on: ubuntu-latest
19 | steps:
20 | - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
21 | with:
22 | # Allow goreleaser to access older tag information.
23 | fetch-depth: 0
24 | - name: Generate Release Notes
25 | run: |
26 | PREV_TAG=$(git describe --abbrev=0 --exclude="$(git describe --abbrev=0 --match='v*.*.*' --tags)" --match='v*.*.*' --tags | tr -d v)
27 | if grep -q $PREV_TAG CHANGELOG.md; then
28 | sed -n -e "1{/# /d;}" -e "2{/^$/d;}" -e "/# $PREV_TAG/q;p" CHANGELOG.md > release-notes.txt
29 | else
30 | echo "Previous release tag not found in CHANGELOG.md" > release-notes.txt
31 | fi
32 | - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0
33 | with:
34 | go-version-file: 'go.mod'
35 | cache: true
36 | - name: Import GPG key
37 | uses: crazy-max/ghaction-import-gpg@01dd5d3ca463c7f10f7f4f7b4f177225ac661ee4 # v6.1.0
38 | id: import_gpg
39 | with:
40 | gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
41 | passphrase: ${{ secrets.PASSPHRASE }}
42 | - name: Run GoReleaser
43 | uses: goreleaser/goreleaser-action@v6
44 | with:
45 | distribution: goreleaser-pro
46 | version: "~> v2"
47 | args: release --clean -f ${{ vars.GORELEASER_CONFIG_PATH }} --release-notes=release-notes.txt
48 | env:
49 | # GitHub sets the GITHUB_TOKEN secret automatically.
50 | DISABLE_CHANGELOG: ${{ vars.DISABLE_CHANGELOG}}
51 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
52 | GPG_FINGERPRINT: ${{ steps.import_gpg.outputs.fingerprint }}
53 | GORELEASER_KEY: ${{ secrets.GORELEASER_KEY }}
54 | highest-version-tag:
55 | needs: [goreleaser]
56 | runs-on: ubuntu-latest
57 | outputs:
58 | tag: ${{ steps.highest-version-tag.outputs.tag }}
59 | steps:
60 | - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
61 | with:
62 | fetch-depth: 0
63 | - name: Output highest version tag
64 | id: highest-version-tag
65 | run: |
66 | HIGHEST=$(git tag | sort -V | tail -1)
67 | echo "tag=$HIGHEST" >> "$GITHUB_OUTPUT"
68 | changelog-newversion:
69 | needs: [goreleaser, highest-version-tag]
70 | # write new changelog header only if release tag is the $HIGHEST i.e. exists on main
71 | # and not a backport release branch (e.g. release/3.x). This results in
72 | # manually updating the CHANGELOG header if releasing from the non-default branch.
73 | # TODO: find a more deterministic way to determine release branch from tag commit
74 | if: github.ref_name == needs.highest-version-tag.outputs.tag
75 | runs-on: macos-latest
76 | steps:
77 | - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
78 | with:
79 | fetch-depth: 0
80 | ref: main
81 | - name: Update Changelog Header
82 | run: |
83 | CHANGELOG_FILE_NAME="CHANGELOG.md"
84 | PREVIOUS_RELEASE_TAG=${{ github.ref_name }}
85 |
86 | # Add Release Date
87 | RELEASE_DATE=`date +%B' '%e', '%Y`
88 | sed -i -e "1 s/Unreleased/$RELEASE_DATE/" $CHANGELOG_FILE_NAME
89 |
90 | # Prepend next release line
91 | echo Previous release is: $PREVIOUS_RELEASE_TAG
92 |
93 | NEW_RELEASE_LINE=$(echo $PREVIOUS_RELEASE_TAG | awk -F. '{
94 | $1 = substr($1,2)
95 | $2 += 1
96 | printf("%s.%01d.0\n\n", $1, $2);
97 | }')
98 |
99 | echo New minor version is: v$NEW_RELEASE_LINE
100 |
101 | echo -e "## $NEW_RELEASE_LINE (Unreleased)\n$(cat $CHANGELOG_FILE_NAME)" > $CHANGELOG_FILE_NAME
102 | - run: |
103 | git config --local user.email changelogbot@tofuutils.com
104 | git config --local user.name changelogbot
105 | git add CHANGELOG.md
106 | git commit -m "Update CHANGELOG.md after ${{ github.ref_name }}"
107 | git push
108 |
--------------------------------------------------------------------------------
/contributing/changelog-process.md:
--------------------------------------------------------------------------------
1 | ## Changelog Process
2 |
3 | We use the [go-changelog](https://github.com/hashicorp/go-changelog) to generate and update the changelog from files created in the `.changelog/` directory. It is important that when you raise your Pull Request, there is a changelog entry which describes the changes your contribution makes. Not all changes require an entry in the CHANGELOG, guidance follows on what changes do.
4 |
5 | ### Changelog Format
6 |
7 | The changelog format requires an entry in the following format, where HEADER corresponds to the changelog category, and the entry is the changelog entry itself. The entry should be included in a file in the `.changelog` directory with the naming convention `{PR-NUMBER}.txt`. For example, to create a changelog entry for pull request 1234, there should be a file named `.changelog/1234.txt`.
8 |
9 | ``````markdown
10 | ```release-note:{HEADER}
11 | {ENTRY}
12 | ```
13 | ``````
14 |
15 | If a pull request should contain multiple changelog entries, then multiple blocks can be added to the same changelog file. For example:
16 |
17 | ``````markdown
18 | ```release-note:note
19 | The `broken` attribute has been deprecated. All configurations using `broken` should be updated to use the new `not_broken` attribute instead.
20 | ```
21 |
22 | ```release-note:enhancement
23 | Add `not_broken` attribute
24 | ```
25 | ``````
26 |
27 | ### Skipping changelog entries
28 |
29 | In order to skip/pass the automated checks where a CHANGELOG entry is not required, apply the `workflow/skip-changelog-entry` label.
30 |
31 | ### Pull Request Types to CHANGELOG
32 |
33 | The CHANGELOG is intended to show operator-impacting changes to the codebase for a particular version. If every change or commit to the code resulted in an entry, the CHANGELOG would become less useful for operators. The lists below are general guidelines and examples for when a decision needs to be made to decide whether a change should have an entry.
34 |
35 | #### Changes that should have a CHANGELOG entry
36 |
37 | ##### New full-length documentation guides (e.g. Getting Started Guide)
38 |
39 | A new full length documentation entry gives the title of the documentation added, using the `release-note:new-guide` header.
40 |
41 | ``````markdown
42 | ```release-note:new-guide
43 | How To Get Started With Tool X
44 | ```
45 | ``````
46 |
47 | ##### Resource and provider bug fixes
48 |
49 | A new bug entry should use the `release-note:bug` header and have a prefix indicating the resource or datasource it corresponds to, a colon, then followed by a brief summary. Use a `provider` prefix for provider level fixes.
50 |
51 | ``````markdown
52 | ```release-note:bug
53 | Fix 'thing' being optional
54 | ```
55 | ``````
56 |
57 | ##### Resource and provider enhancements
58 |
59 | A new enhancement entry should use the `release-note:enhancement` header and have a prefix indicating the resource or datasource it corresponds to, a colon, then followed by a brief summary. Use a `provider` prefix for provider level enhancements.
60 |
61 | ``````markdown
62 | ```release-note:enhancement
63 | Add new capability
64 | ```
65 | ``````
66 |
67 | ##### Deprecations
68 |
69 | A breaking-change entry should use the `release-note:note` header and have a prefix indicating the resource or datasource it corresponds to, a colon, then followed by a brief summary. Use a `provider` prefix for provider level changes.
70 |
71 | ``````markdown
72 | ```release-note:note
73 | X attribute is being deprecated in favor of the new Y attribute
74 | ```
75 | ``````
76 |
77 | ##### Breaking Changes and Removals
78 |
79 | A breaking-change entry should use the `release-note:breaking-change` header and have a prefix indicating the resource or datasource it corresponds to, a colon, then followed by a brief summary. Use a `provider` prefix for provider level changes.
80 |
81 | ``````markdown
82 | ```release-note:breaking-change
83 | Resource no longer works for 'EXAMPLE' parameters
84 | ```
85 | ``````
86 |
87 | #### Changes that may have a CHANGELOG entry
88 |
89 | Dependency updates: If the update contains relevant bug fixes or enhancements that affect operators, those should be called out.
90 | Any changes which do not fit into the above categories but warrant highlighting.
91 | Use resource/datasource/provider prefixes where appropriate.
92 |
93 | ``````markdown
94 | ```release-note:note
95 | Example resource now does X slightly differently
96 | ```
97 |
98 | ```release-note:dependency
99 | `go-changelog` v0.1.0 => v0.1.1
100 | ```
101 | ``````
102 |
103 | #### Changes that should _not_ have a CHANGELOG entry
104 |
105 | - Resource and provider documentation updates
106 | - Testing updates
107 | - Code refactoring (context dependent)
108 |
--------------------------------------------------------------------------------
/go.sum:
--------------------------------------------------------------------------------
1 | github.com/Nmishin/dodo-go v0.0.1 h1:K+ucd8ZpFzmSuqncNqKxGgQbGu+bsFCY+efSYVSpMog=
2 | github.com/Nmishin/dodo-go v0.0.1/go.mod h1:3Hm5M9hsoyJ+mvUo2aCEUF4XDDnNlBWei+Rf7ZabfIA=
3 | github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo=
4 | github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
5 | github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg=
6 | github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY=
7 | github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec=
8 | github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY=
9 | github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4=
10 | github.com/bufbuild/protocompile v0.4.0 h1:LbFKd2XowZvQ/kajzguUp2DC9UEIQhIq77fZZlaQsNA=
11 | github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8=
12 | github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
13 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
14 | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
15 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
16 | github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
17 | github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
18 | github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
19 | github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
20 | github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
21 | github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
22 | github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
23 | github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68=
24 | github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
25 | github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
26 | github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
27 | github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
28 | github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
29 | github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
30 | github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
31 | github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
32 | github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
33 | github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
34 | github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
35 | github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
36 | github.com/hashicorp/go-cty v1.5.0 h1:EkQ/v+dDNUqnuVpmS5fPqyY71NXVgT5gf32+57xY8g0=
37 | github.com/hashicorp/go-cty v1.5.0/go.mod h1:lFUCG5kd8exDobgSfyj4ONE/dc822kiYMguVKdHGMLM=
38 | github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k=
39 | github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
40 | github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg=
41 | github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0=
42 | github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
43 | github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
44 | github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY=
45 | github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
46 | github.com/hashicorp/hcl/v2 v2.23.0 h1:Fphj1/gCylPxHutVSEOf2fBOh1VE4AuLV7+kbJf3qos=
47 | github.com/hashicorp/hcl/v2 v2.23.0/go.mod h1:62ZYHrXgPoX8xBnzl8QzbWq4dyDsDtfCRgIq1rbJEvA=
48 | github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y=
49 | github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
50 | github.com/hashicorp/terraform-plugin-go v0.27.0 h1:ujykws/fWIdsi6oTUT5Or4ukvEan4aN9lY+LOxVP8EE=
51 | github.com/hashicorp/terraform-plugin-go v0.27.0/go.mod h1:FDa2Bb3uumkTGSkTFpWSOwWJDwA7bf3vdP3ltLDTH6o=
52 | github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0=
53 | github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow=
54 | github.com/hashicorp/terraform-plugin-sdk/v2 v2.37.0 h1:NFPMacTrY/IdcIcnUB+7hsore1ZaRWU9cnB6jFoBnIM=
55 | github.com/hashicorp/terraform-plugin-sdk/v2 v2.37.0/go.mod h1:QYmYnLfsosrxjCnGY1p9c7Zj6n9thnEE+7RObeYs3fA=
56 | github.com/hashicorp/terraform-registry-address v0.2.5 h1:2GTftHqmUhVOeuu9CW3kwDkRe4pcBDq0uuK5VJngU1M=
57 | github.com/hashicorp/terraform-registry-address v0.2.5/go.mod h1:PpzXWINwB5kuVS5CA7m1+eO2f1jKb5ZDIxrOPfpnGkg=
58 | github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ=
59 | github.com/hashicorp/terraform-svchost v0.1.1/go.mod h1:mNsjQfZyf/Jhz35v6/0LWcv26+X7JPS+buii2c9/ctc=
60 | github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE=
61 | github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ=
62 | github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c=
63 | github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo=
64 | github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
65 | github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
66 | github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
67 | github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
68 | github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
69 | github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
70 | github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
71 | github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
72 | github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
73 | github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
74 | github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
75 | github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
76 | github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
77 | github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
78 | github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
79 | github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
80 | github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
81 | github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
82 | github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
83 | github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU=
84 | github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8=
85 | github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0=
86 | github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0=
87 | github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
88 | github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
89 | github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
90 | github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
91 | github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA=
92 | github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU=
93 | github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
94 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
95 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
96 | github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
97 | github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
98 | github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
99 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
100 | github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
101 | github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
102 | github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
103 | github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
104 | github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI=
105 | github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
106 | github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IUPn0Bjt8=
107 | github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok=
108 | github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g=
109 | github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
110 | github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
111 | github.com/zclconf/go-cty v1.16.2 h1:LAJSwc3v81IRBZyUVQDUdZ7hs3SYs9jv0eZJDWHD/70=
112 | github.com/zclconf/go-cty v1.16.2/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=
113 | github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940 h1:4r45xpDWB6ZMSMNJFMOjqrGHynW3DIBuR2H9j0ug+Mo=
114 | github.com/zclconf/go-cty-debug v0.0.0-20240509010212-0d6042c53940/go.mod h1:CmBdvvj3nqzfzJ6nTCIwDTPZ56aVGvDrmztiO5g3qrM=
115 | go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
116 | go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
117 | go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY=
118 | go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI=
119 | go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ=
120 | go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE=
121 | go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A=
122 | go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU=
123 | go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk=
124 | go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w=
125 | go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k=
126 | go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE=
127 | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
128 | golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
129 | golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
130 | golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU=
131 | golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
132 | golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
133 | golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
134 | golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
135 | golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
136 | golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY=
137 | golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E=
138 | golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M=
139 | golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
140 | golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
141 | golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
142 | golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
143 | golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ=
144 | golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
145 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
146 | golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
147 | golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
148 | golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
149 | golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
150 | golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
151 | golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
152 | golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
153 | golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
154 | golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
155 | golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
156 | golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
157 | golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
158 | golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
159 | golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
160 | golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
161 | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
162 | golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
163 | golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
164 | golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ=
165 | golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4=
166 | golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA=
167 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
168 | golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
169 | golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
170 | golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg=
171 | golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI=
172 | golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
173 | golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
174 | google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
175 | google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM=
176 | google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds=
177 | google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a h1:51aaUVRocpvUOSQKM6Q7VuoaktNIaMCLuhZB6DKksq4=
178 | google.golang.org/genproto/googleapis/rpc v0.0.0-20250218202821-56aae31c358a/go.mod h1:uRxBH1mhmO8PGhU89cMcHaXKZqO+OfakD8QQO0oYwlQ=
179 | google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA=
180 | google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM=
181 | google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
182 | google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
183 | google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
184 | google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
185 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
186 | gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
187 | gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
188 | gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
189 | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
190 | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
191 |
--------------------------------------------------------------------------------
/tools/go.sum:
--------------------------------------------------------------------------------
1 | cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
2 | dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk=
3 | dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
4 | github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
5 | github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
6 | github.com/Kunde21/markdownfmt/v3 v3.1.0 h1:KiZu9LKs+wFFBQKhrZJrFZwtLnCCWJahL+S+E/3VnM0=
7 | github.com/Kunde21/markdownfmt/v3 v3.1.0/go.mod h1:tPXN1RTyOzJwhfHoon9wUr4HGYmWgVxSQN6VBJDkrVc=
8 | github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
9 | github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
10 | github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7YgDP83g=
11 | github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ=
12 | github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj9n6YA=
13 | github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM=
14 | github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY=
15 | github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow=
16 | github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM=
17 | github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
18 | github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk=
19 | github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
20 | github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
21 | github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
22 | github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY=
23 | github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4=
24 | github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI=
25 | github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
26 | github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
27 | github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
28 | github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY=
29 | github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
30 | github.com/bmatcuk/doublestar/v4 v4.7.1 h1:fdDeAqgT47acgwd9bd9HxJRDmc9UAmPpc+2m0CXv75Q=
31 | github.com/bmatcuk/doublestar/v4 v4.7.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc=
32 | github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
33 | github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
34 | github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
35 | github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
36 | github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
37 | github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU=
38 | github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA=
39 | github.com/cloudflare/cloudflare-go v0.112.0 h1:caFwqXdGJCl3rjVMgbPEn8iCYAg9JsRYV3dIVQE5d7g=
40 | github.com/cloudflare/cloudflare-go v0.112.0/go.mod h1:QB55kuJ5ZTeLNFcLJePfMuBilhu/LDKpLBmKFQIoSZ0=
41 | github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
42 | github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
43 | github.com/cyphar/filepath-securejoin v0.3.6 h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM=
44 | github.com/cyphar/filepath-securejoin v0.3.6/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI=
45 | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
46 | github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
47 | github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
48 | github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM=
49 | github.com/elazarl/goproxy v1.2.3 h1:xwIyKHbaP5yfT6O9KIeYJR5549MXRQkoQMRXGztz8YQ=
50 | github.com/elazarl/goproxy v1.2.3/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64=
51 | github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8=
52 | github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
53 | github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
54 | github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
55 | github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
56 | github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE=
57 | github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps=
58 | github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
59 | github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
60 | github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4=
61 | github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c=
62 | github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU=
63 | github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
64 | github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
65 | github.com/go-git/go-billy/v5 v5.4.1/go.mod h1:vjbugF6Fz7JIflbVpl1hJsGjSHNltrSw45YK/ukIvQg=
66 | github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow=
67 | github.com/go-git/go-billy/v5 v5.6.1 h1:u+dcrgaguSSkbjzHwelEjc0Yj300NUevrrPphk/SoRA=
68 | github.com/go-git/go-billy/v5 v5.6.1/go.mod h1:0AsLr1z2+Uksi4NlElmMblP5rPcDZNRCD8ujZCRR2BE=
69 | github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=
70 | github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=
71 | github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY=
72 | github.com/go-git/go-git/v5 v5.13.1 h1:DAQ9APonnlvSWpvolXWIuV6Q6zXy2wHbN4cVlNR5Q+M=
73 | github.com/go-git/go-git/v5 v5.13.1/go.mod h1:qryJB4cSBoq3FRoBRf5A77joojuBcmPJ0qu3XXXVixc=
74 | github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
75 | github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
76 | github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
77 | github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls=
78 | github.com/goccy/go-json v0.10.4 h1:JSwxQzIqKfmFX1swYPpUThQZp/Ka4wzJdK0LWVytLPM=
79 | github.com/goccy/go-json v0.10.4/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
80 | github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
81 | github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
82 | github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
83 | github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
84 | github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
85 | github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
86 | github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
87 | github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
88 | github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
89 | github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
90 | github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
91 | github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg=
92 | github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY=
93 | github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
94 | github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
95 | github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
96 | github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
97 | github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
98 | github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
99 | github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
100 | github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
101 | github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
102 | github.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY=
103 | github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ=
104 | github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
105 | github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
106 | github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
107 | github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
108 | github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
109 | github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
110 | github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
111 | github.com/hashicorp/cli v1.1.6 h1:CMOV+/LJfL1tXCOKrgAX0uRKnzjj/mpmqNXloRSy2K8=
112 | github.com/hashicorp/cli v1.1.6/go.mod h1:MPon5QYlgjjo0BSoAiN0ESeT5fRzDjVRp+uioJ0piz4=
113 | github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
114 | github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I=
115 | github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
116 | github.com/hashicorp/go-changelog v0.0.0-20241111140550-beb7aaabfbd1 h1:qhIkEscT1bt/SCbM+Art2unS2ObjsDixfLHSsfxO+74=
117 | github.com/hashicorp/go-changelog v0.0.0-20241111140550-beb7aaabfbd1/go.mod h1:4LzBC5lU2q1oSTbU/ve0aTbQxvTDh2CjtF2UZjJ20F0=
118 | github.com/hashicorp/go-checkpoint v0.5.0 h1:MFYpPZCnQqQTE18jFwSII6eUQrD/oxMFp3mlgcqk5mU=
119 | github.com/hashicorp/go-checkpoint v0.5.0/go.mod h1:7nfLNL10NsxqO4iWuW6tWW0HjZuDrwkBuEQsVcpCOgg=
120 | github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
121 | github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
122 | github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
123 | github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k=
124 | github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
125 | github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
126 | github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
127 | github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
128 | github.com/hashicorp/go-retryablehttp v0.7.7 h1:C8hUCYzor8PIfXHa4UrZkU4VvK8o9ISHxT2Q8+VepXU=
129 | github.com/hashicorp/go-retryablehttp v0.7.7/go.mod h1:pkQpWZeYWskR+D1tR2O5OcBFOxfA7DoAO6xtkuQnHTk=
130 | github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
131 | github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
132 | github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
133 | github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY=
134 | github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
135 | github.com/hashicorp/hc-install v0.9.0 h1:2dIk8LcvANwtv3QZLckxcjyF5w8KVtiMxu6G6eLhghE=
136 | github.com/hashicorp/hc-install v0.9.0/go.mod h1:+6vOP+mf3tuGgMApVYtmsnDoKWMDcFXeTxCACYZ8SFg=
137 | github.com/hashicorp/terraform-exec v0.21.0 h1:uNkLAe95ey5Uux6KJdua6+cv8asgILFVWkd/RG0D2XQ=
138 | github.com/hashicorp/terraform-exec v0.21.0/go.mod h1:1PPeMYou+KDUSSeRE9szMZ/oHf4fYUmB923Wzbq1ICg=
139 | github.com/hashicorp/terraform-json v0.23.0 h1:sniCkExU4iKtTADReHzACkk8fnpQXrdD2xoR+lppBkI=
140 | github.com/hashicorp/terraform-json v0.23.0/go.mod h1:MHdXbBAbSg0GvzuWazEGKAn/cyNfIB7mN6y7KJN6y2c=
141 | github.com/hashicorp/terraform-plugin-docs v0.20.1 h1:Fq7E/HrU8kuZu3hNliZGwloFWSYfWEOWnylFhYQIoys=
142 | github.com/hashicorp/terraform-plugin-docs v0.20.1/go.mod h1:Yz6HoK7/EgzSrHPB9J/lWFzwl9/xep2OPnc5jaJDV90=
143 | github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
144 | github.com/huandu/xstrings v1.3.3 h1:/Gcsuc1x8JVbJ9/rlye4xZnVAbEkGauT8lbebqcQws4=
145 | github.com/huandu/xstrings v1.3.3/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
146 | github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
147 | github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
148 | github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM=
149 | github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY=
150 | github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
151 | github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
152 | github.com/juju/ansiterm v0.0.0-20180109212912-720a0952cc2a/go.mod h1:UJSiEoRfvx3hP73CvoARgeLjaIOjybY9vj8PUPPFGeU=
153 | github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
154 | github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
155 | github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
156 | github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
157 | github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
158 | github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
159 | github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
160 | github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
161 | github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
162 | github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
163 | github.com/lunixbochs/vtclean v0.0.0-20180621232353-2d01aacdc34a/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI=
164 | github.com/manifoldco/promptui v0.8.0/go.mod h1:n4zTdgP0vr0S3w7/O/g98U+e0gwLScEXGwov2nIKuGQ=
165 | github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
166 | github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
167 | github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
168 | github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
169 | github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
170 | github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
171 | github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
172 | github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU=
173 | github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
174 | github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
175 | github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
176 | github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
177 | github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
178 | github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
179 | github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
180 | github.com/mmcloughlin/avo v0.5.0/go.mod h1:ChHFdoV7ql95Wi7vuq2YT1bwCJqiWdZrQ1im3VujLYM=
181 | github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
182 | github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
183 | github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
184 | github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
185 | github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
186 | github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0=
187 | github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c=
188 | github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU=
189 | github.com/onsi/ginkgo/v2 v2.1.6/go.mod h1:MEH45j8TBi6u9BMogfbp0stKC5cdGjumZj5Y7AG4VIk=
190 | github.com/onsi/ginkgo/v2 v2.3.0/go.mod h1:Eew0uilEqZmIEZr8JrvYlvOM7Rr6xzTmMV8AyFNU9d0=
191 | github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo=
192 | github.com/onsi/ginkgo/v2 v2.5.0/go.mod h1:Luc4sArBICYCS8THh8v3i3i5CuSZO+RaQRaJoeNwomw=
193 | github.com/onsi/ginkgo/v2 v2.7.0/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo=
194 | github.com/onsi/ginkgo/v2 v2.8.1/go.mod h1:N1/NbDngAFcSLdyZ+/aYTYGSlq9qMCS/cNKGJjy+csc=
195 | github.com/onsi/ginkgo/v2 v2.9.0/go.mod h1:4xkjoL/tZv4SMWeww56BU5kAt19mVB47gTWxmrTcxyk=
196 | github.com/onsi/ginkgo/v2 v2.9.1/go.mod h1:FEcmzVcCHl+4o9bQZVab+4dC9+j+91t2FHSzmGAPfuo=
197 | github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts=
198 | github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k=
199 | github.com/onsi/ginkgo/v2 v2.9.7/go.mod h1:cxrmXWykAwTwhQsJOPfdIDiJ+l2RYq7U8hFU+M/1uw0=
200 | github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM=
201 | github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
202 | github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
203 | github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY=
204 | github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro=
205 | github.com/onsi/gomega v1.20.1/go.mod h1:DtrZpjmvpn2mPm4YWQa0/ALMDj9v4YxLgojwPeREyVo=
206 | github.com/onsi/gomega v1.21.1/go.mod h1:iYAIXgPSaDHak0LCMA+AWBpIKBr8WZicMxnE8luStNc=
207 | github.com/onsi/gomega v1.22.1/go.mod h1:x6n7VNe4hw0vkyYUM4mjIXx3JbLiPaBPNgB7PRQ1tuM=
208 | github.com/onsi/gomega v1.24.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg=
209 | github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM=
210 | github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM=
211 | github.com/onsi/gomega v1.27.1/go.mod h1:aHX5xOykVYzWOV4WqQy0sy8BQptgukenXpCXfadcIAw=
212 | github.com/onsi/gomega v1.27.3/go.mod h1:5vG284IBtfDAmDyrK+eGyZmUgUlmi+Wngqo557cZ6Gw=
213 | github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ=
214 | github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg=
215 | github.com/onsi/gomega v1.27.7/go.mod h1:1p8OOlwo2iUUDsHnOrjE5UKYJ+e3W8eQ3qSlRahPmr4=
216 | github.com/onsi/gomega v1.27.8/go.mod h1:2J8vzI/s+2shY9XHRApDkdgPo1TKT7P2u6fXeJKFnNQ=
217 | github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M=
218 | github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=
219 | github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY=
220 | github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=
221 | github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI=
222 | github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
223 | github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
224 | github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
225 | github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
226 | github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
227 | github.com/posener/complete v1.2.3 h1:NP0eAhjcjImqslEwo/1hq7gpajME0fTLTezBKDqfXqo=
228 | github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s=
229 | github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY=
230 | github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
231 | github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYeAmZ5ZIpBWTGllZSQnw97Dj+woV0toclVaRGI8pc=
232 | github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
233 | github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA=
234 | github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
235 | github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
236 | github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
237 | github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=
238 | github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
239 | github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
240 | github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8=
241 | github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
242 | github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
243 | github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
244 | github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo=
245 | github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY=
246 | github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M=
247 | github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
248 | github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=
249 | github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=
250 | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
251 | github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
252 | github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
253 | github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
254 | github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
255 | github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
256 | github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
257 | github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
258 | github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
259 | github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
260 | github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
261 | github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
262 | github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
263 | github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=
264 | github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw=
265 | github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
266 | github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
267 | github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
268 | github.com/yuin/goldmark v1.7.7 h1:5m9rrB1sW3JUMToKFQfb+FGt1U7r57IHu5GrYrG2nqU=
269 | github.com/yuin/goldmark v1.7.7/go.mod h1:uzxRWxtg69N339t3louHJ7+O03ezfj6PlliRlaOzY1E=
270 | github.com/yuin/goldmark-meta v1.1.0 h1:pWw+JLHGZe8Rk0EGsMVssiNb/AaPMHfSRszZeUeiOUc=
271 | github.com/yuin/goldmark-meta v1.1.0/go.mod h1:U4spWENafuA7Zyg+Lj5RqK/MF+ovMYtBvXi1lBb2VP0=
272 | github.com/zclconf/go-cty v1.15.0 h1:tTCRWxsexYUmtt/wVxgDClUe+uQusuI443uL6e+5sXQ=
273 | github.com/zclconf/go-cty v1.15.0/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE=
274 | go.abhg.dev/goldmark/frontmatter v0.2.0 h1:P8kPG0YkL12+aYk2yU3xHv4tcXzeVnN+gU0tJ5JnxRw=
275 | go.abhg.dev/goldmark/frontmatter v0.2.0/go.mod h1:XqrEkZuM57djk7zrlRUB02x8I5J0px76YjkOzhB4YlU=
276 | golang.org/x/arch v0.1.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
277 | golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
278 | golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
279 | golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
280 | golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
281 | golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
282 | golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
283 | golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
284 | golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
285 | golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
286 | golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
287 | golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio=
288 | golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
289 | golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
290 | golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
291 | golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
292 | golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
293 | golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
294 | golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
295 | golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
296 | golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
297 | golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI=
298 | golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
299 | golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
300 | golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
301 | golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
302 | golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
303 | golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0=
304 | golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
305 | golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
306 | golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
307 | golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
308 | golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
309 | golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
310 | golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
311 | golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
312 | golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
313 | golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
314 | golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
315 | golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
316 | golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
317 | golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
318 | golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
319 | golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
320 | golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
321 | golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY=
322 | golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE=
323 | golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
324 | golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
325 | golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
326 | golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
327 | golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
328 | golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
329 | golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
330 | golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
331 | golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
332 | golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
333 | golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw=
334 | golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
335 | golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
336 | golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
337 | golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
338 | golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
339 | golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
340 | golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
341 | golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
342 | golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
343 | golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
344 | golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=
345 | golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
346 | golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
347 | golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
348 | golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
349 | golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
350 | golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
351 | golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
352 | golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
353 | golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
354 | golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
355 | golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
356 | golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
357 | golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
358 | golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
359 | golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
360 | golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
361 | golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
362 | golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
363 | golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
364 | golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
365 | golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
366 | golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
367 | golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
368 | golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
369 | golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
370 | golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
371 | golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
372 | golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
373 | golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
374 | golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
375 | golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
376 | golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
377 | golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
378 | golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
379 | golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
380 | golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
381 | golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
382 | golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
383 | golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
384 | golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
385 | golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
386 | golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
387 | golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
388 | golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
389 | golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
390 | golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
391 | golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA=
392 | golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ=
393 | golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
394 | golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U=
395 | golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
396 | golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o=
397 | golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
398 | golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
399 | golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y=
400 | golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g=
401 | golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
402 | golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
403 | golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
404 | golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
405 | golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
406 | golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
407 | golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
408 | golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
409 | golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
410 | golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
411 | golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
412 | golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
413 | golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
414 | golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
415 | golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
416 | golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg=
417 | golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
418 | golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
419 | golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
420 | golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
421 | golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E=
422 | golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
423 | golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA=
424 | golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ=
425 | golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
426 | golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
427 | golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
428 | golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc=
429 | golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
430 | golang.org/x/tools v0.23.0 h1:SGsXPZ+2l4JsgaCKkx+FQ9YZ5XEtA1GZYuoDjenLjvg=
431 | golang.org/x/tools v0.23.0/go.mod h1:pnu6ufv6vQkll6szChhK3C3L/ruaIv5eBeztNG8wtsI=
432 | golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
433 | golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
434 | golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
435 | golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
436 | google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508=
437 | google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
438 | google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
439 | google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
440 | google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
441 | google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
442 | google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
443 | google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
444 | google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
445 | google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
446 | google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
447 | google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
448 | google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
449 | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
450 | gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
451 | gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
452 | gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
453 | gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
454 | gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
455 | gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
456 | gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
457 | gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
458 | gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
459 | gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
460 | gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
461 | gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
462 | gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
463 | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
464 | gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
465 | gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
466 | rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=
467 |
--------------------------------------------------------------------------------