From 020f9818c338ca508087210d57ebcf23dc24d3ed Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 13 Dec 2022 11:32:45 -0500 Subject: [PATCH 001/381] Update CHANGELOG.md Fix version for vSphere plugin --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c5a4873cd1d..f87b764a3e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,7 +21,7 @@ The following external plugins have been updated and pinned to address open * alicloud@v1.0.5 - [CHANGELOG](https://github.com/hashicorp/packer-plugin-alicloud/releases/tag/v1.0.5) * amazon@v1.1.6 - [CHANGELOG](https://github.com/hashicorp/packer-plugin-amazon/releases/tag/v1.1.6) * proxmox@v1.1.0 - [CHANGELOG](https://github.com/hashicorp/packer-plugin-proxmox/releases/tag/v1.1.0) -* vsphere@v1.0.7 - [CHANGELOG](https://github.com/hashicorp/packer-plugin-vsphere/releases/tag/v1.0.7) +* vsphere@v1.1.1 - [CHANGELOG](https://github.com/hashicorp/packer-plugin-vsphere/releases/tag/v1.1.1) * qemu@v1.0.8 - [CHANGELOG](https://github.com/hashicorp/packer-plugin-qemu/releases/tag/v1.0.8) ### IMPROVEMENTS: From 82bcc9e671059d3807e9f0b86c000c1693e93974 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 13 Dec 2022 14:29:25 -0500 Subject: [PATCH 002/381] Reset to dev mode --- CHANGELOG.md | 3 +++ version/version.go | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f87b764a3e9..bb403a13282 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +## 1.8.6 (Upcoming) + + ## 1.8.5 (December 12, 2022) ### NOTES: diff --git a/version/version.go b/version/version.go index 0a5cc8e7ce5..192d87d6f3a 100644 --- a/version/version.go +++ b/version/version.go @@ -14,11 +14,11 @@ var ( CgoEnabled bool // The main version number that is being run at the moment. - Version = "1.8.5" + Version = "1.8.6" // A pre-release marker for the version. If this is "" (empty string) // then it means that it is a final release. Otherwise, this is a pre-release // such as "dev" (in development), "beta", "rc1", etc. - VersionPrerelease = "" + VersionPrerelease = "dev" VersionMetadata = "" ) From a6e7635d0566d89a578c33f9527e5d760d087a2d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 15 Dec 2022 12:43:55 -0500 Subject: [PATCH 003/381] build(deps): bump github.com/hashicorp/hcp-sdk-go from 0.28.0 to 0.29.0 (#12163) Bumps [github.com/hashicorp/hcp-sdk-go](https://github.com/hashicorp/hcp-sdk-go) from 0.28.0 to 0.29.0. - [Release notes](https://github.com/hashicorp/hcp-sdk-go/releases) - [Changelog](https://github.com/hashicorp/hcp-sdk-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/hcp-sdk-go/compare/v0.28.0...v0.29.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/hcp-sdk-go dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 9a7407d444a..51aedaf9bdf 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/hashicorp/go-uuid v1.0.2 github.com/hashicorp/go-version v1.4.0 github.com/hashicorp/hcl/v2 v2.14.1 - github.com/hashicorp/hcp-sdk-go v0.28.0 + github.com/hashicorp/hcp-sdk-go v0.29.0 github.com/hashicorp/packer-plugin-amazon v1.1.6 github.com/hashicorp/packer-plugin-sdk v0.3.2 github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 diff --git a/go.sum b/go.sum index 9b27ce1dcc5..c47fa918ddd 100644 --- a/go.sum +++ b/go.sum @@ -680,8 +680,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.14.1 h1:x0BpjfZ+CYdbiz+8yZTQ+gdLO7IXvOut7Da+XJayx34= github.com/hashicorp/hcl/v2 v2.14.1/go.mod h1:e4z5nxYlWNPdDSNYX+ph14EvWYMFm3eP0zIUqPc2jr0= -github.com/hashicorp/hcp-sdk-go v0.28.0 h1:QO03avWHSp2wkZMYR0ma7kjMkHC70eziz75qJGiuSNU= -github.com/hashicorp/hcp-sdk-go v0.28.0/go.mod h1:BRtYrm9RwAAtnuGU/rwTeAyzKTNH/d4WlHa6eNvcEHQ= +github.com/hashicorp/hcp-sdk-go v0.29.0 h1:Pk2oQ3H42UTV5is8IHvAJ029Aj5qYbMg9EwyA6Mh5SM= +github.com/hashicorp/hcp-sdk-go v0.29.0/go.mod h1:BRtYrm9RwAAtnuGU/rwTeAyzKTNH/d4WlHa6eNvcEHQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= github.com/hashicorp/memberlist v0.2.2 h1:5+RffWKwqJ71YPu9mWsF7ZOscZmwfasdA8kbdC7AO2g= From 50a356529afda17e98d8ea882a22c33077088f1a Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 16 Dec 2022 11:35:41 -0500 Subject: [PATCH 004/381] Update Go checks to run on pull_requests (#12166) Currently go-test and go-validate only run for users who have push access to the Packer repo. We want to ensure tests and validation run for all opened pull requests including public forks. --- .github/workflows/go-test.yml | 6 +++++- .github/workflows/go-validate.yml | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/go-test.yml b/.github/workflows/go-test.yml index 89ea8f2a1a0..04d8159ae1d 100644 --- a/.github/workflows/go-test.yml +++ b/.github/workflows/go-test.yml @@ -5,7 +5,11 @@ name: "Go Test" -on: [ workflow_dispatch, push ] +on: + push: + branches: + - 'main' + pull_request: env: PACKER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/go-validate.yml b/.github/workflows/go-validate.yml index bacc02dae47..878f7a2238a 100644 --- a/.github/workflows/go-validate.yml +++ b/.github/workflows/go-validate.yml @@ -4,7 +4,11 @@ name: "Go Validate" -on: [ workflow_dispatch, push ] +on: + push: + branches: + - 'main' + pull_request: permissions: contents: read From 9002ac263fe98f1972684244eda5ae44b2f231c3 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 20 Dec 2022 15:37:59 -0500 Subject: [PATCH 005/381] Update BuildBlock with valid HCL2Ref (#12167) While looking into #11932 I found that Packer will throw an error when an unknown source is referenced from within the sources attribute for a build block. The hcl.Diagnostics error includes a Subject, which should highlight where in the HCL2 configuration file the unknown source resides. But when creating the BuildBlock no HCL2Ref data is copied over, thus the Subject is displayed with with zero value for an hcl.Range type. This change updates the build creation logic to copy the HCL2Ref data from the build block at decode time so that it can be properly referenced downstream. Closes #11932 Failure due to change in output ``` --- FAIL: TestValidateCommand_ShowLineNumForMissing (0.00s) --- FAIL: TestValidateCommand_ShowLineNumForMissing/test-fixtures/validate-invalid/missing_build_block.pkr.hcl (0.00s) validate_test.go:377: Unexpected output: ( """ Error: Unknown source file.cho - on line 0: + on test-fixtures/validate-invalid/missing_build_block.pkr.hcl line 6: (source code not available) ... // 4 identical lines """ ) validate_test.go:379: FAIL FAIL github.com/hashicorp/packer/command 1.002s ``` --- command/validate_test.go | 40 +++++++++++++++++++++++++++++++++++++ hcl2template/types.build.go | 10 +++++++--- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/command/validate_test.go b/command/validate_test.go index 3a2c6b20abf..d4188c49780 100644 --- a/command/validate_test.go +++ b/command/validate_test.go @@ -1,6 +1,7 @@ package command import ( + "fmt" "path/filepath" "testing" @@ -341,3 +342,42 @@ func TestValidateCommand_VarFilesDisableWarnOnUndeclared(t *testing.T) { }) } } + +func TestValidateCommand_ShowLineNumForMissing(t *testing.T) { + tt := []struct { + path string + exitCode int + extraArgs []string + }{ + {path: filepath.Join(testFixture("validate-invalid"), "missing_build_block.pkr.hcl"), exitCode: 1}, + } + + for _, tc := range tt { + t.Run(tc.path, func(t *testing.T) { + c := &ValidateCommand{ + Meta: TestMetaFile(t), + } + tc := tc + args := tc.extraArgs + args = append(args, tc.path) + if code := c.Run(args); code != tc.exitCode { + fatalCommand(t, c.Meta) + } + + stdout, stderr := GetStdoutAndErrFromTestMeta(t, c.Meta) + expected := fmt.Sprintf(`Error: Unknown source file.cho + + on %s line 6: + (source code not available) + +Known: [file.chocolate] + + +`, tc.path) + if diff := cmp.Diff(expected, stderr); diff != "" { + t.Errorf("Unexpected output: %s", diff) + } + t.Log(stdout) + }) + } +} diff --git a/hcl2template/types.build.go b/hcl2template/types.build.go index 3bb54b20c4b..73ae957d3ae 100644 --- a/hcl2template/types.build.go +++ b/hcl2template/types.build.go @@ -87,22 +87,26 @@ type Builds []*BuildBlock // decodeBuildConfig is called when a 'build' block has been detected. It will // load the references to the contents of the build block. func (p *Parser) decodeBuildConfig(block *hcl.Block, cfg *PackerConfig) (*BuildBlock, hcl.Diagnostics) { - build := &BuildBlock{} - body := block.Body - var b struct { Name string `hcl:"name,optional"` Description string `hcl:"description,optional"` FromSources []string `hcl:"sources,optional"` Config hcl.Body `hcl:",remain"` } + + body := block.Body diags := gohcl.DecodeBody(body, cfg.EvalContext(LocalContext, nil), &b) if diags.HasErrors() { return nil, diags } + build := &BuildBlock{ + HCL2Ref: newHCL2Ref(block, b.Config), + } + build.Name = b.Name build.Description = b.Description + build.HCL2Ref.DefRange = block.DefRange // Expose build.name during parsing of pps and provisioners ectx := cfg.EvalContext(BuildContext, nil) From 56f784ae95fcfb4763178b937f9d0777286b56e0 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 20 Dec 2022 15:38:12 -0500 Subject: [PATCH 006/381] Bump github.com/hashicorp/go-getter/v2 (#12161) The latest version of Go-Getter contains a SMBClient timeout option, along with an updated AWS SDK to improve S3 support. ``` go get github.com/hashicorp/go-getter/v2 go get github.com/hashicorp/go-getter/s3/v2 go get github.com/hashicorp/go-getter/gcs/v2 go mod tidy ``` --- go.mod | 35 ++++--- go.sum | 321 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 315 insertions(+), 41 deletions(-) diff --git a/go.mod b/go.mod index 51aedaf9bdf..52c8d125c2c 100644 --- a/go.mod +++ b/go.mod @@ -1,7 +1,7 @@ module github.com/hashicorp/packer require ( - cloud.google.com/go v0.104.0 // indirect + cloud.google.com/go v0.105.0 // indirect github.com/biogo/hts v1.4.3 github.com/cheggaaa/pb v1.0.27 github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e @@ -11,16 +11,16 @@ require ( github.com/gobwas/glob v0.2.3 github.com/gofrs/flock v0.8.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/google/go-cmp v0.5.8 + github.com/google/go-cmp v0.5.9 github.com/google/go-github/v33 v33.0.1-0.20210113204525-9318e629ec69 github.com/google/go-querystring v1.1.0 // indirect github.com/hako/durafmt v0.0.0-20200710122514-c0fb7b4da026 github.com/hashicorp/go-checkpoint v0.0.0-20171009173528-1545e56e46de github.com/hashicorp/go-cty-funcs v0.0.0-20200930094925-2721b1e36840 - github.com/hashicorp/go-getter/v2 v2.1.0 + github.com/hashicorp/go-getter/v2 v2.1.1 github.com/hashicorp/go-multierror v1.1.1 github.com/hashicorp/go-uuid v1.0.2 - github.com/hashicorp/go-version v1.4.0 + github.com/hashicorp/go-version v1.6.0 github.com/hashicorp/hcl/v2 v2.14.1 github.com/hashicorp/hcp-sdk-go v0.29.0 github.com/hashicorp/packer-plugin-amazon v1.1.6 @@ -49,14 +49,14 @@ require ( golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 golang.org/x/net v0.4.0 - golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1 - golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 + golang.org/x/oauth2 v0.1.0 + golang.org/x/sync v0.1.0 golang.org/x/sys v0.3.0 // indirect golang.org/x/term v0.3.0 // indirect golang.org/x/text v0.5.0 // indirect golang.org/x/tools v0.1.12 - google.golang.org/api v0.97.0 // indirect - google.golang.org/grpc v1.49.0 + google.golang.org/api v0.101.0 // indirect + google.golang.org/grpc v1.50.1 ) require ( @@ -97,8 +97,9 @@ require ( ) require ( - cloud.google.com/go/compute v1.7.0 // indirect - cloud.google.com/go/iam v0.3.0 // indirect + cloud.google.com/go/compute v1.12.1 // indirect + cloud.google.com/go/compute/metadata v0.1.1 // indirect + cloud.google.com/go/iam v0.6.0 // indirect cloud.google.com/go/storage v1.27.0 // indirect github.com/1and1/oneandone-cloudserver-sdk-go v1.0.1 // indirect github.com/Azure/azure-sdk-for-go v64.0.0+incompatible // indirect @@ -134,7 +135,7 @@ require ( github.com/armon/go-metrics v0.3.9 // indirect github.com/armon/go-radix v1.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect - github.com/aws/aws-sdk-go v1.44.110 // indirect + github.com/aws/aws-sdk-go v1.44.114 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.1.0 // indirect github.com/bmatcuk/doublestar v1.1.5 // indirect @@ -172,8 +173,8 @@ require ( github.com/google/btree v1.0.1 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/google/uuid v1.3.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.1.0 // indirect - github.com/googleapis/gax-go/v2 v2.5.1 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.0 // indirect + github.com/googleapis/gax-go/v2 v2.6.0 // indirect github.com/gophercloud/gophercloud v0.12.0 // indirect github.com/gophercloud/utils v0.0.0-20200508015959-b0167b94122c // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.2.2 // indirect @@ -182,8 +183,8 @@ require ( github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-azure-helpers v0.16.5 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter/gcs/v2 v2.1.0 // indirect - github.com/hashicorp/go-getter/s3/v2 v2.1.0 // indirect + github.com/hashicorp/go-getter/gcs/v2 v2.1.1 // indirect + github.com/hashicorp/go-getter/s3/v2 v2.1.1 // indirect github.com/hashicorp/go-hclog v0.16.2 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-retryablehttp v0.7.0 // indirect @@ -252,9 +253,9 @@ require ( go.opencensus.io v0.23.0 // indirect golang.org/x/mobile v0.0.0-20210901025245-1fde1d6c3ca1 // indirect golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect - golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f // indirect + golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006 // indirect + google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c // indirect google.golang.org/protobuf v1.28.1 // indirect gopkg.in/cheggaaa/pb.v1 v1.0.28 // indirect gopkg.in/ini.v1 v1.62.0 // indirect diff --git a/go.sum b/go.sum index c47fa918ddd..a19899a8b6c 100644 --- a/go.sum +++ b/go.sum @@ -29,37 +29,252 @@ cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Ud cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= -cloud.google.com/go v0.104.0 h1:gSmWO7DY1vOm0MVU6DNXM11BWHHsTUmsC5cv1fuW5X8= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= +cloud.google.com/go v0.105.0 h1:DNtEKRBAAzeS4KyIory52wWHuClNaXJ5x1F7xa4q+5Y= +cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= +cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= +cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= +cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= +cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= +cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= +cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= +cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno= +cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= +cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= +cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= +cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= +cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= +cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ= +cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= +cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= +cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= +cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= +cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= +cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= +cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= +cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= +cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= +cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= +cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= +cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= +cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= +cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= +cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= +cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= +cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= +cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= -cloud.google.com/go/compute v1.7.0 h1:v/k9Eueb8aAJ0vZuxKMrgm6kPhCLZU9HxFU+AFDs9Uk= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= +cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute v1.12.1 h1:gKVJMEyqV5c/UnpzjjQbo3Rjvvqpr9B1DFSbJC4OXr0= +cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= +cloud.google.com/go/compute/metadata v0.1.1 h1:/sxEbyrm6cw+XOUw1YxBHlatV71z4vpnmO7z2IZ0h3I= +cloud.google.com/go/compute/metadata v0.1.1/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= +cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= +cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= +cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= +cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= +cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= +cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE= +cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= +cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= +cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= +cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= +cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= +cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= +cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= +cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/iam v0.3.0 h1:exkAomrVUuzx9kWFI1wm3KI0uoDeUFPB4kKGzx6x+Gc= +cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= +cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= +cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= +cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= +cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= +cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek= +cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= +cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= +cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= +cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= +cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= +cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= +cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= +cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= +cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= +cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= +cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= +cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= +cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= +cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= +cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= +cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= +cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= +cloud.google.com/go/iam v0.6.0 h1:nsqQC88kT5Iwlm4MeNGTpfMWddp6NB/UOLFTH6m1QfQ= +cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= +cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= +cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= +cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= +cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= +cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= +cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= +cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= +cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/longrunning v0.1.1 h1:y50CXG4j0+qvEukslYFBCrzaXX0qpFbBzc3PchSu/LE= +cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= +cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= +cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= +cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= +cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= +cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= +cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= +cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= +cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= +cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= +cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= +cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= +cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= +cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= +cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= +cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= +cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= +cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= +cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= +cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= +cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= +cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= +cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= +cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= +cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= +cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= +cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= +cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE= +cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= +cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= +cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= +cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= +cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= +cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= +cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= +cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= +cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= +cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= +cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= +cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= +cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= +cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q= +cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= +cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= +cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= +cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4= +cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= +cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E= +cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= +cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= +cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= +cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0 h1:YOO045NZI9RKfCj1c5A/ZtuuENUc8OAW+gHdGnDgyMQ= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= +cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= +cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= +cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= +cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= +cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= +cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= +cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= +cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= +cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= +cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= +cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= +cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY= +cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= +cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= +cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= +cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= +cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= +cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/1and1/oneandone-cloudserver-sdk-go v1.0.1 h1:RMTyvS5bjvSWiUcfqfr/E2pxHEMrALvU+E12n6biymg= github.com/1and1/oneandone-cloudserver-sdk-go v1.0.1/go.mod h1:61apmbkVJH4kg+38ftT+/l0XxdUCVnHggqcOTqZRSEE= @@ -190,12 +405,11 @@ github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:W github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/aws/aws-sdk-go v1.25.37/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.30.8/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.30.27/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.31.9/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= -github.com/aws/aws-sdk-go v1.44.110 h1:unno3l2FYQo6p0wYCp9gUk8YNzhOxqSktM0Y1vukl9k= -github.com/aws/aws-sdk-go v1.44.110/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.44.114 h1:plIkWc/RsHr3DXBj4MEw9sEW4CcL/e2ryokc+CKyq1I= +github.com/aws/aws-sdk-go v1.44.114/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f h1:ZNv7On9kyUzm7fvRZumSyy/IUiSC7AzL0I1jKKtwooA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -538,8 +752,9 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github/v33 v33.0.1-0.20210113204525-9318e629ec69 h1:zL0/Ug5CMhV0XRb3A6vnK1SQ9kJM3VIyRxPQ5t9w8Bg= github.com/google/go-github/v33 v33.0.1-0.20210113204525-9318e629ec69/go.mod h1:GMdDnVZY/2TsWgp/lkYnpSAh6TrzhANBBwm6k6TTEXg= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= @@ -575,8 +790,9 @@ github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.1.0 h1:zO8WHNx/MYiAKJ3d5spxZXZE6KHmIQGQcAzwUzV7qQw= github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.2.0 h1:y8Yozv7SZtlU//QXbezB6QkpuE6jMD2/gfzk4AftXjs= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= @@ -584,8 +800,9 @@ github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0 github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= -github.com/googleapis/gax-go/v2 v2.5.1 h1:kBRZU0PSuI7PspsSb/ChWoVResUcwNVIdpB049pKTiw= github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= +github.com/googleapis/gax-go/v2 v2.6.0 h1:SXk3ABtQYDT/OH8jAyvEOQ58mgawq5C4o/4/89qN2ZU= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/gophercloud/gophercloud v0.6.1-0.20191122030953-d8ac278c1c9d/go.mod h1:ozGNgr9KYOVATV5jsgHl/ceCDXGuguqOZAzoQ/2vcNM= github.com/gophercloud/gophercloud v0.12.0 h1:mZrie07npp6ODiwHZolTicr5jV8Ogn43AvAsSMm6Ork= @@ -623,12 +840,12 @@ github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9n github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-cty-funcs v0.0.0-20200930094925-2721b1e36840 h1:kgvybwEeu0SXktbB2y3uLHX9lklLo+nzUwh59A3jzQc= github.com/hashicorp/go-cty-funcs v0.0.0-20200930094925-2721b1e36840/go.mod h1:Abjk0jbRkDaNCzsRhOv2iDCofYpX1eVsjozoiK63qLA= -github.com/hashicorp/go-getter/gcs/v2 v2.1.0 h1:1S1hvWgHrhUihP/Y4FVbjCWwE7EwxpksKoRcC7g+Hgs= -github.com/hashicorp/go-getter/gcs/v2 v2.1.0/go.mod h1:dVyTnX1BynHAjbumB4Pk14GoJ+v3VbDUJtbI7G0oOlU= -github.com/hashicorp/go-getter/s3/v2 v2.1.0 h1:8uwuP97zEQ7y7H4bLzRqiN4T8vmpXeJthigqSEjX+08= -github.com/hashicorp/go-getter/s3/v2 v2.1.0/go.mod h1:rwzJPQaBuc5riYOucPx84DOE74xIhKENOWgBjK3XVEs= -github.com/hashicorp/go-getter/v2 v2.1.0 h1:MsLbi7yFKGFPVmpK+un4/k5HFry0tqvo9JppsCmIutU= -github.com/hashicorp/go-getter/v2 v2.1.0/go.mod h1:w65fE5glbccYjndAuj1kA5lnVBGZYEaH0e5qA1kpIks= +github.com/hashicorp/go-getter/gcs/v2 v2.1.1 h1:avdlHkb/EMnFN1UwLSNaiyzfKBMJ20cVp5TEjwlcmt0= +github.com/hashicorp/go-getter/gcs/v2 v2.1.1/go.mod h1:TnBlrQbjB/ZYgZD2ep7j7hAE3CunUnujgiv+efLvQgM= +github.com/hashicorp/go-getter/s3/v2 v2.1.1 h1:gUi9i3DMVgCAhYmZ69lvMlgzjc5nAiYFhczKokYdDKc= +github.com/hashicorp/go-getter/s3/v2 v2.1.1/go.mod h1:n/SQItXL7oz4n1hDaP/IU8VIZEuqxrOfcC15YFxDDE4= +github.com/hashicorp/go-getter/v2 v2.1.1 h1:lrJijcgvu3TYQXwXjqJ4idoXMySj67It5NzcUf0kQi4= +github.com/hashicorp/go-getter/v2 v2.1.1/go.mod h1:w65fE5glbccYjndAuj1kA5lnVBGZYEaH0e5qA1kpIks= github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= @@ -669,8 +886,8 @@ github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.4.0 h1:aAQzgqIrRKRa7w75CKpbBxYsmUoPjzVm1W59ca1L0J4= -github.com/hashicorp/go-version v1.4.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= @@ -1128,6 +1345,7 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/zclconf/go-cty v1.0.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= @@ -1293,8 +1511,13 @@ golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.4.0 h1:Q5QPcMlvfxFTAPV0+07Xz/MpK9NTXu2VDUuy0FeMfaU= golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1317,9 +1540,13 @@ golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1 h1:lxqLZaMad/dJHMFZH0NiNpiEZI/nhgWhe4wgzpE+MuA= golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.1.0 h1:isLCZuhj4v+tYv7eskaN4v/TM+A1begWWgyVJDdl1+Y= +golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1333,8 +1560,10 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1423,12 +1652,17 @@ golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.3.0 h1:qoo4akIqOcDME5bhc/NgxUdovd6BSS2uMsVjB56q1xI= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1440,6 +1674,8 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1522,8 +1758,9 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f h1:uF6paiQQebLeSXkrTqHqz0MXhXXS1KgF41eUdBNvxK0= golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -1535,7 +1772,6 @@ google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/ google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.21.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= @@ -1561,11 +1797,21 @@ google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/S google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= -google.golang.org/api v0.97.0 h1:x/vEL1XDF/2V4xzdNgFPaKHluRESo2aTsL7QzHnBtGQ= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= +google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08= +google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= +google.golang.org/api v0.101.0 h1:lJPPeEBIRxGpGLwnBTam1NPEM8Z2BmmXEd3z812pjwM= +google.golang.org/api v0.101.0/go.mod h1:CjxAAWWt3A3VrUE2IGDY2bgK5qhoG/OkyWVlYcP05MY= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1649,14 +1895,38 @@ google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006 h1:mmbq5q8M1t7dhkLw320YK4PsOXm6jdnUAkErImaIqOg= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= +google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= +google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= +google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221018160656-63c7b68cfc55/go.mod h1:45EK0dUbEZ2NHjCeAd2LXmyjAgGUGrpGROgjhC3ADck= +google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c h1:QgY/XxIAIeccR+Ca/rDdKubLIU9rcJ3xfy1DC/Wd2Oo= +google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -1693,8 +1963,11 @@ google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11 google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.49.0 h1:WTLtQzmQori5FUH25Pq4WT22oCsv8USpQ+F6rqtsmxw= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.1 h1:DS/BukOZWp8s6p4Dt/tOaJaTQyPyOoCcrjroHuCeLzY= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From ea1d32e4561c59aad8b05dfae1127106a06e7e98 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 21 Dec 2022 16:02:21 -0500 Subject: [PATCH 007/381] Update CHANGELOG --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index bb403a13282..f69148195b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ ## 1.8.6 (Upcoming) +### IMPROVEMENTS: +* bump github.com/hashicorp/hcp-sdk-go from 0.28.0 to 0.29.0. + [GH-12163](https://github.com/hashicorp/packer/pull/12163) + +### BUG FIXES: +* core/hcl2: Templates with build blocks referencing an unknown source block + would display an empty string for the template filename at line 0, which made + it difficult to identify the broken build block. Packer has been updated to + display the proper filename and line number where the unknown reference + resides. [GH-12167](https://github.com/hashicorp/packer/pull/12167) ## 1.8.5 (December 12, 2022) From f8bc240b02f7fcdec0a4604d4b9a45955c9ff2b4 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 21 Dec 2022 16:16:43 -0500 Subject: [PATCH 008/381] core: CoreBuild.Run error on cancelled builds When a build is cancelled by a user, the current implementation of CoreBuild.Run does not return an error signifying that there was a problem with the build. This in turn causes the HCP code to attempt to update the status of the build to DONE, but fails because there are no artifacts to push. This commit changes this behaviour by returning the error provoked by the cancellation to the caller, so it can be taken into account when setting the status of the build. --- packer/build.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packer/build.go b/packer/build.go index c5f2b13834f..e5ff54b7271 100644 --- a/packer/build.go +++ b/packer/build.go @@ -238,7 +238,7 @@ func (b *CoreBuild) Run(ctx context.Context, originalUi packersdk.Ui) ([]packers select { case <-ctx.Done(): log.Println("Build was cancelled. Skipping post-processors.") - return nil, nil + return nil, ctx.Err() default: } From 2200cb14ce8c957334c2b429c084e08a5afac638 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 21 Dec 2022 16:19:23 -0500 Subject: [PATCH 009/381] hcp: set the status to CANCELLED when a build is Related to the previous behaviour problem, this changes how the status of a build is set on HCP Packer, as a cancelled build is different from a failed one, we can set it to the appropriate state on cancellation. --- internal/hcp/registry/types.bucket.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/internal/hcp/registry/types.bucket.go b/internal/hcp/registry/types.bucket.go index e3f3895f295..597128dac07 100644 --- a/internal/hcp/registry/types.bucket.go +++ b/internal/hcp/registry/types.bucket.go @@ -569,7 +569,11 @@ func (b *Bucket) completeBuild( } if buildErr != nil { - err := b.UpdateBuildStatus(ctx, buildName, models.HashicorpCloudPackerBuildStatusFAILED) + status := models.HashicorpCloudPackerBuildStatusFAILED + if ctx.Err() != nil { + status = models.HashicorpCloudPackerBuildStatusCANCELLED + } + err := b.UpdateBuildStatus(context.Background(), buildName, status) if err != nil { log.Printf("[ERROR] failed to update build %q status to FAILED: %s", buildName, err) } From ca197afe9b70398bc0e9ee6f27fd6e6cc6ef7f83 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Mon, 5 Dec 2022 16:06:07 -0500 Subject: [PATCH 010/381] hcp: remove superfluous return value on GetBuilds This commit irons out one of the pain points of the HCP rework by introducing a HCPPublisher interface, implemented both by the JSON Core, and the HCL2 PackerConfig, which keeps a map of the build names used by Packer to the build names pushed on HCP. This in turn lets us go back to the old implementation of the GetBuilds function, which returns a list of (filtered) builds, and eventually an error if something went wrong while processing. --- CHANGELOG.md | 8 ++ command/build.go | 6 +- command/build_test.go | 131 ++++++++++++++++++ .../provisioners/provisioner-only-except.json | 37 +++++ .../provisioner-only-except.pkr.hcl | 31 +++++ command/validate.go | 2 +- hcl2template/common_test.go | 2 +- hcl2template/types.packer_config.go | 15 +- internal/hcp/registry/hcl.go | 19 ++- internal/hcp/registry/json.go | 20 ++- internal/hcp/registry/null_registry.go | 4 +- internal/hcp/registry/registry.go | 4 +- packer/core.go | 37 ++--- packer/run_interfaces.go | 2 +- 14 files changed, 263 insertions(+), 55 deletions(-) create mode 100644 command/test-fixtures/provisioners/provisioner-only-except.json create mode 100644 command/test-fixtures/provisioners/provisioner-only-except.pkr.hcl diff --git a/CHANGELOG.md b/CHANGELOG.md index f69148195b3..b5bc6a55b24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,14 @@ display the proper filename and line number where the unknown reference resides. [GH-12167](https://github.com/hashicorp/packer/pull/12167) +### NOTES: +* core: Users will see some changes in how names are displayed during a Packer + build for JSON templates. Previously only the builder type or the builder + name, if it was set, would be displayed. Now for named builders + (`"name":"mybuilder"`) the builder'ss type and name will be displayed (i.e + ".mybuilder". This does not impact the behavior of options such as + only or except, they will continue to work as they did before.) + ## 1.8.5 (December 12, 2022) ### NOTES: diff --git a/command/build.go b/command/build.go index 1cf9cdd61cc..66a2ec4c90f 100644 --- a/command/build.go +++ b/command/build.go @@ -107,7 +107,7 @@ func (c *BuildCommand) RunContext(buildCtx context.Context, cla *BuildArgs) int }) } - builds, hcpMap, diags := packerStarter.GetBuilds(packer.GetBuildsOptions{ + builds, diags := packerStarter.GetBuilds(packer.GetBuildsOptions{ Only: cla.Only, Except: cla.Except, Debug: cla.Debug, @@ -219,7 +219,7 @@ func (c *BuildCommand) RunContext(buildCtx context.Context, cla *BuildArgs) int defer limitParallel.Release(1) - err := hcpRegistry.StartBuild(buildCtx, hcpMap[name]) + err := hcpRegistry.StartBuild(buildCtx, b) // Seems odd to require this error check here. Now that it is an error we can just exit with diag if err != nil { // If the build is already done, we skip without a warning @@ -249,7 +249,7 @@ func (c *BuildCommand) RunContext(buildCtx context.Context, cla *BuildArgs) int runArtifacts, hcperr := hcpRegistry.CompleteBuild( buildCtx, - hcpMap[name], + b, runArtifacts, err) if hcperr != nil { diff --git a/command/build_test.go b/command/build_test.go index a306fbde252..8aa30c72039 100644 --- a/command/build_test.go +++ b/command/build_test.go @@ -1113,6 +1113,137 @@ func TestBuildCommand_ParseArgs(t *testing.T) { } } +// TestProvisionerOnlyExcept checks that only/except blocks in provisioners/post-processors behave as expected +func TestProvisionerAndPostProcessorOnlyExcept(t *testing.T) { + tests := []struct { + name string + args []string + expectedCode int + outputCheck func(string, string) error + }{ + { + "json - only named build", + []string{ + "-only", "packer", + testFixture("provisioners", "provisioner-only-except.json"), + }, + 0, + func(out, _ string) error { + if !strings.Contains(out, "packer provisioner packer and null") { + return fmt.Errorf("missing expected provisioner output") + } + + if !strings.Contains(out, "packer post-processor packer and null") { + return fmt.Errorf("missing expected post-processor output") + } + + if strings.Contains(out, "null post-processor") || strings.Contains(out, "null provisioner") { + return fmt.Errorf("found traces of unnamed provisioner/post-processor, should not") + } + + return nil + }, + }, + { + "json - only unnamed build", + []string{ + "-only", "null", + testFixture("provisioners", "provisioner-only-except.json"), + }, + 0, + func(out, _ string) error { + if !strings.Contains(out, "null provisioner null and null") { + return fmt.Errorf("missing expected provisioner output") + } + + if !strings.Contains(out, "null post-processor null and null") { + return fmt.Errorf("missing expected post-processor output") + } + + if strings.Contains(out, "packer post-processor") || strings.Contains(out, "packer provisioner") { + return fmt.Errorf("found traces of named provisioner/post-processor, should not") + } + + return nil + }, + }, + { + "hcl - only one source build", + []string{ + "-only", "null.packer", + testFixture("provisioners", "provisioner-only-except.pkr.hcl"), + }, + 0, + func(out, _ string) error { + if !strings.Contains(out, "packer provisioner packer and null") { + return fmt.Errorf("missing expected provisioner output") + } + + if !strings.Contains(out, "packer post-processor packer and null") { + return fmt.Errorf("missing expected post-processor output") + } + + if strings.Contains(out, "other post-processor") || strings.Contains(out, "other provisioner") { + return fmt.Errorf("found traces of other provisioner/post-processor, should not") + } + + return nil + }, + }, + { + "hcl - only other build", + []string{ + "-only", "null.other", + testFixture("provisioners", "provisioner-only-except.pkr.hcl"), + }, + 0, + func(out, _ string) error { + if !strings.Contains(out, "other provisioner other and null") { + return fmt.Errorf("missing expected provisioner output") + } + + if !strings.Contains(out, "other post-processor other and null") { + return fmt.Errorf("missing expected post-processor output") + } + + if strings.Contains(out, "packer post-processor") || strings.Contains(out, "packer provisioner") { + return fmt.Errorf("found traces of \"packer\" source provisioner/post-processor, should not") + } + + return nil + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + c := &BuildCommand{ + Meta: TestMetaFile(t), + } + + exitCode := c.Run(tt.args) + if exitCode != tt.expectedCode { + t.Errorf("process exit code mismatch: expected %d, got %d", + tt.expectedCode, + exitCode) + } + + out, stderr := GetStdoutAndErrFromTestMeta(t, c.Meta) + err := tt.outputCheck(out, stderr) + if err != nil { + if len(out) != 0 { + t.Logf("command stdout: %q", out) + } + + if len(stderr) != 0 { + t.Logf("command stderr: %q", stderr) + } + t.Error(err.Error()) + } + }) + } +} + // TestBuildCmd aims to test the build command, with output validation func TestBuildCmd(t *testing.T) { tests := []struct { diff --git a/command/test-fixtures/provisioners/provisioner-only-except.json b/command/test-fixtures/provisioners/provisioner-only-except.json new file mode 100644 index 00000000000..6eee4238795 --- /dev/null +++ b/command/test-fixtures/provisioners/provisioner-only-except.json @@ -0,0 +1,37 @@ +{ + "builders": [ + { + "type": "null", + "communicator": "none" + }, + { + "type": "null", + "name": "packer", + "communicator": "none" + } + ], + "provisioners": [ + { + "type": "shell-local", + "inline": ["echo packer provisioner {{build_name}} and {{build_type}}"], + "only": ["packer"] + }, + { + "type": "shell-local", + "inline": ["echo null provisioner {{build_name}} and {{build_type}}"], + "except": ["packer"] + } + ], + "post-processors": [ + { + "type": "shell-local", + "inline": ["echo packer post-processor {{build_name}} and {{build_type}}"], + "only": ["packer"] + }, + { + "type": "shell-local", + "inline": ["echo null post-processor {{build_name}} and {{build_type}}"], + "except": ["packer"] + } + ] +} diff --git a/command/test-fixtures/provisioners/provisioner-only-except.pkr.hcl b/command/test-fixtures/provisioners/provisioner-only-except.pkr.hcl new file mode 100644 index 00000000000..81189653877 --- /dev/null +++ b/command/test-fixtures/provisioners/provisioner-only-except.pkr.hcl @@ -0,0 +1,31 @@ +source "null" "packer" { + communicator = "none" +} + +source "null" "other" { + communicator = "none" +} + +build { + sources = ["sources.null.packer", "null.other"] + + provisioner "shell-local" { + inline = ["echo packer provisioner {{build_name}} and {{build_type}}"] + only = ["null.packer"] + } + + provisioner "shell-local" { + inline = ["echo other provisioner {{build_name}} and {{build_type}}"] + except = ["null.packer"] + } + + post-processor "shell-local" { + inline = ["echo packer post-processor {{build_name}} and {{build_type}}"] + only = ["null.packer"] + } + + post-processor "shell-local" { + inline = ["echo other post-processor {{build_name}} and {{build_type}}"] + except = ["null.packer"] + } +} diff --git a/command/validate.go b/command/validate.go index 657d71ebc7d..08eced959d1 100644 --- a/command/validate.go +++ b/command/validate.go @@ -70,7 +70,7 @@ func (c *ValidateCommand) RunContext(ctx context.Context, cla *ValidateArgs) int return ret } - _, _, diags = packerStarter.GetBuilds(packer.GetBuildsOptions{ + _, diags = packerStarter.GetBuilds(packer.GetBuildsOptions{ Only: cla.Only, Except: cla.Except, }) diff --git a/hcl2template/common_test.go b/hcl2template/common_test.go index d94cf945a25..5b1c68fbdc0 100644 --- a/hcl2template/common_test.go +++ b/hcl2template/common_test.go @@ -106,7 +106,7 @@ func testParse(t *testing.T, tests []parseTest) { return } - gotBuilds, _, gotDiags := gotCfg.GetBuilds(packer.GetBuildsOptions{}) + gotBuilds, gotDiags := gotCfg.GetBuilds(packer.GetBuildsOptions{}) if tt.getBuildsWantDiags == (gotDiags == nil) { t.Fatalf("Parser.getBuilds() unexpected diagnostics. %s", gotDiags) } diff --git a/hcl2template/types.packer_config.go b/hcl2template/types.packer_config.go index 8325d0e908b..ef67f33e73d 100644 --- a/hcl2template/types.packer_config.go +++ b/hcl2template/types.packer_config.go @@ -564,20 +564,17 @@ func (cfg *PackerConfig) getCoreBuildPostProcessors(source SourceUseBlock, block // GetBuilds returns a list of packer Build based on the HCL2 parsed build // blocks. All Builders, Provisioners and Post Processors will be started and // configured. -func (cfg *PackerConfig) GetBuilds(opts packer.GetBuildsOptions) ([]packersdk.Build, map[string]string, hcl.Diagnostics) { +func (cfg *PackerConfig) GetBuilds(opts packer.GetBuildsOptions) ([]packersdk.Build, hcl.Diagnostics) { res := []packersdk.Build{} var diags hcl.Diagnostics possibleBuildNames := []string{} - // hcpTranslationMap maps the local name of a Corebuild to its HCP name - hcpTranslationMap := map[string]string{} - cfg.debug = opts.Debug cfg.force = opts.Force cfg.onError = opts.OnError if len(cfg.Builds) == 0 { - return res, hcpTranslationMap, append(diags, &hcl.Diagnostic{ + return res, append(diags, &hcl.Diagnostic{ Summary: "Missing build block", Detail: "A build block with one or more sources is required for executing a build.", Severity: hcl.DiagError, @@ -602,8 +599,6 @@ func (cfg *PackerConfig) GetBuilds(opts packer.GetBuildsOptions) ([]packersdk.Bu Type: srcUsage.String(), } - hcpTranslationMap[pcb.Name()] = srcUsage.String() - pcb.SetDebug(cfg.debug) pcb.SetForce(cfg.force) pcb.SetOnError(cfg.onError) @@ -615,7 +610,7 @@ func (cfg *PackerConfig) GetBuilds(opts packer.GetBuildsOptions) ([]packersdk.Bu if len(opts.Only) > 0 { onlyGlobs, diags := convertFilterOption(opts.Only, "only") if diags.HasErrors() { - return nil, nil, diags + return nil, diags } cfg.only = onlyGlobs include := false @@ -635,7 +630,7 @@ func (cfg *PackerConfig) GetBuilds(opts packer.GetBuildsOptions) ([]packersdk.Bu if len(opts.Except) > 0 { exceptGlobs, diags := convertFilterOption(opts.Except, "except") if diags.HasErrors() { - return nil, nil, diags + return nil, diags } cfg.except = exceptGlobs exclude := false @@ -732,7 +727,7 @@ func (cfg *PackerConfig) GetBuilds(opts packer.GetBuildsOptions) ([]packersdk.Bu "These could also be matched with a glob pattern like: 'happycloud.*'", possibleBuildNames), }) } - return res, hcpTranslationMap, diags + return res, diags } var PackerConsoleHelp = strings.TrimSpace(` diff --git a/internal/hcp/registry/hcl.go b/internal/hcp/registry/hcl.go index ccbc1f577a3..baa2b5cb29a 100644 --- a/internal/hcp/registry/hcl.go +++ b/internal/hcp/registry/hcl.go @@ -8,6 +8,7 @@ import ( "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/models" sdkpacker "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer/hcl2template" + "github.com/hashicorp/packer/packer" "github.com/zclconf/go-cty/cty" "github.com/zclconf/go-cty/cty/gocty" ) @@ -45,18 +46,28 @@ func (h *HCLMetadataRegistry) PopulateIteration(ctx context.Context) error { } // StartBuild is invoked when one build for the configuration is starting to be processed -func (h *HCLMetadataRegistry) StartBuild(ctx context.Context, buildName string) error { - return h.bucket.startBuild(ctx, buildName) +func (h *HCLMetadataRegistry) StartBuild(ctx context.Context, build sdkpacker.Build) error { + name := build.Name() + cb, ok := build.(*packer.CoreBuild) + if ok { + name = cb.Type + } + return h.bucket.startBuild(ctx, name) } // CompleteBuild is invoked when one build for the configuration has finished func (h *HCLMetadataRegistry) CompleteBuild( ctx context.Context, - buildName string, + build sdkpacker.Build, artifacts []sdkpacker.Artifact, buildErr error, ) ([]sdkpacker.Artifact, error) { - return h.bucket.completeBuild(ctx, buildName, artifacts, buildErr) + name := build.Name() + cb, ok := build.(*packer.CoreBuild) + if ok { + name = cb.Type + } + return h.bucket.completeBuild(ctx, name, artifacts, buildErr) } func NewHCLMetadataRegistry(config *hcl2template.PackerConfig) (*HCLMetadataRegistry, hcl.Diagnostics) { diff --git a/internal/hcp/registry/json.go b/internal/hcp/registry/json.go index 20e1f808e47..f15c79aede1 100644 --- a/internal/hcp/registry/json.go +++ b/internal/hcp/registry/json.go @@ -2,6 +2,7 @@ package registry import ( "context" + "fmt" "path/filepath" "github.com/hashicorp/hcl/v2" @@ -27,8 +28,17 @@ func NewJSONMetadataRegistry(config *packer.Core) (*JSONMetadataRegistry, hcl.Di } for _, b := range config.Template.Builders { + buildName := b.Name + + // By default, if the name is unspecified, it will be assigned the type + // + // If the two are different, we can compose the HCP build name from both + if b.Name != b.Type { + buildName = fmt.Sprintf("%s.%s", b.Type, b.Name) + } + // Get all builds slated within config ignoring any only or exclude flags. - bucket.RegisterBuildForComponent(packer.HCPName(b)) + bucket.RegisterBuildForComponent(buildName) } return &JSONMetadataRegistry{ @@ -57,16 +67,16 @@ func (h *JSONMetadataRegistry) PopulateIteration(ctx context.Context) error { } // StartBuild is invoked when one build for the configuration is starting to be processed -func (h *JSONMetadataRegistry) StartBuild(ctx context.Context, buildName string) error { - return h.bucket.startBuild(ctx, buildName) +func (h *JSONMetadataRegistry) StartBuild(ctx context.Context, build sdkpacker.Build) error { + return h.bucket.startBuild(ctx, build.Name()) } // CompleteBuild is invoked when one build for the configuration has finished func (h *JSONMetadataRegistry) CompleteBuild( ctx context.Context, - buildName string, + build sdkpacker.Build, artifacts []sdkpacker.Artifact, buildErr error, ) ([]sdkpacker.Artifact, error) { - return h.bucket.completeBuild(ctx, buildName, artifacts, buildErr) + return h.bucket.completeBuild(ctx, build.Name(), artifacts, buildErr) } diff --git a/internal/hcp/registry/null_registry.go b/internal/hcp/registry/null_registry.go index fba9db4be91..dbab4197ded 100644 --- a/internal/hcp/registry/null_registry.go +++ b/internal/hcp/registry/null_registry.go @@ -13,13 +13,13 @@ func (r nullRegistry) PopulateIteration(context.Context) error { return nil } -func (r nullRegistry) StartBuild(context.Context, string) error { +func (r nullRegistry) StartBuild(context.Context, sdkpacker.Build) error { return nil } func (r nullRegistry) CompleteBuild( ctx context.Context, - buildName string, + build sdkpacker.Build, artifacts []sdkpacker.Artifact, buildErr error, ) ([]sdkpacker.Artifact, error) { diff --git a/internal/hcp/registry/registry.go b/internal/hcp/registry/registry.go index e9aa3f9f129..16e82eb7f50 100644 --- a/internal/hcp/registry/registry.go +++ b/internal/hcp/registry/registry.go @@ -14,8 +14,8 @@ import ( type Registry interface { //Configure(packer.Handler) PopulateIteration(context.Context) error - StartBuild(context.Context, string) error - CompleteBuild(ctx context.Context, buildName string, artifacts []sdkpacker.Artifact, buildErr error) ([]sdkpacker.Artifact, error) + StartBuild(context.Context, sdkpacker.Build) error + CompleteBuild(ctx context.Context, build sdkpacker.Build, artifacts []sdkpacker.Artifact, buildErr error) ([]sdkpacker.Artifact, error) } // New instanciates the appropriate registry for the Packer configuration template type. diff --git a/packer/core.go b/packer/core.go index 40b6560eddd..e8da2b2eefd 100644 --- a/packer/core.go +++ b/packer/core.go @@ -268,10 +268,9 @@ func (c *Core) generateCoreBuildProvisioner(rawP *template.Provisioner, rawName // This is used for json templates to launch the build plugins. // They will be prepared via b.Prepare() later. -func (c *Core) GetBuilds(opts GetBuildsOptions) ([]packersdk.Build, map[string]string, hcl.Diagnostics) { +func (c *Core) GetBuilds(opts GetBuildsOptions) ([]packersdk.Build, hcl.Diagnostics) { buildNames := c.BuildNames(opts.Only, opts.Except) builds := []packersdk.Build{} - hcpTranslationMap := map[string]string{} diags := hcl.Diagnostics{} for _, n := range buildNames { b, err := c.Build(n) @@ -284,8 +283,6 @@ func (c *Core) GetBuilds(opts GetBuildsOptions) ([]packersdk.Build, map[string]s continue } - hcpTranslationMap[n] = HCPName(c.builds[n]) - // Now that build plugin has been launched, call Prepare() log.Printf("Preparing build: %s", b.Name()) b.SetDebug(opts.Debug) @@ -315,25 +312,7 @@ func (c *Core) GetBuilds(opts GetBuildsOptions) ([]packersdk.Build, map[string]s } } } - return builds, hcpTranslationMap, diags -} - -// HCPName is a helper to get a curated HCP name for a legacy JSON builder. -// -// In order to make the naming scheme between HCL2 and JSON more consistent, -// we implement a similar kind of logic on both template types. -// -// This means that when for HCL2 templates we have a build name formed of -// the source type and the source name, we will do the name here for JSON. -func HCPName(builder *template.Builder) string { - // By default, if the name is unspecified, it will be assigned the type - // - // No need to repeat ourselves here, so we can keep the current behaviour - if builder.Name == builder.Type { - return builder.Name - } - - return fmt.Sprintf("%s.%s", builder.Type, builder.Name) + return builds, diags } // Build returns the Build object for the given name. @@ -441,8 +420,8 @@ func (c *Core) Build(n string) (packersdk.Build, error) { // Return a structure that contains the plugins, their types, variables, and // the raw builder config loaded from the json template - return &CoreBuild{ - Type: n, + cb := &CoreBuild{ + Type: configBuilder.Name, Builder: builder, BuilderConfig: configBuilder.Config, BuilderType: configBuilder.Type, @@ -451,7 +430,13 @@ func (c *Core) Build(n string) (packersdk.Build, error) { CleanupProvisioner: cleanupProvisioner, TemplatePath: c.Template.Path, Variables: c.variables, - }, nil + } + + if configBuilder.Type != configBuilder.Name { + cb.BuildName = configBuilder.Type + } + + return cb, nil } // Context returns an interpolation context. diff --git a/packer/run_interfaces.go b/packer/run_interfaces.go index 0eff3fa4c34..418da184ca0 100644 --- a/packer/run_interfaces.go +++ b/packer/run_interfaces.go @@ -21,7 +21,7 @@ type BuildGetter interface { // GetBuilds return all possible builds for a config. It also starts all // builders. // TODO(azr): rename to builder starter ? - GetBuilds(GetBuildsOptions) ([]packersdk.Build, map[string]string, hcl.Diagnostics) + GetBuilds(GetBuildsOptions) ([]packersdk.Build, hcl.Diagnostics) } type Evaluator interface { From 4d559e23b7d3d8a8b9db3165a6b933b6647e818f Mon Sep 17 00:00:00 2001 From: Lucas Bajolet <105649352+lbajolet-hashicorp@users.noreply.github.com> Date: Wed, 11 Jan 2023 14:30:02 -0500 Subject: [PATCH 011/381] hcl2: don't warn on excluded post-processor (#12187) * hcl2template: use && for chaining conditions For deciding if we need to run an error provisioner block, we checked using a nested if that we didn't need to avoid running it. This is unnecessary, and adds a superfluous level of inbrication to the code, so we chain both conditions with &&. * hcl2: don't warn on excluded post-processor When a post-processor is excluded through the -except command-line argument for packer build, we used to print a warning on HCL2 templates if this except statement did not match a build. However, since we can use the except option to avoid running post-processors, we should account for this as well when printing out a warning that there were no matches. This commit adds this counter to the except checks for the post-processors as well. --- command/build_test.go | 21 +++++++++++++++++++ .../hcl/test_except_manifest.pkr.hcl | 9 ++++++++ hcl2template/types.packer_config.go | 20 +++++++++--------- 3 files changed, 40 insertions(+), 10 deletions(-) create mode 100644 command/test-fixtures/hcl/test_except_manifest.pkr.hcl diff --git a/command/build_test.go b/command/build_test.go index 8aa30c72039..21a032d6eb3 100644 --- a/command/build_test.go +++ b/command/build_test.go @@ -1318,6 +1318,27 @@ func TestBuildCmd(t *testing.T) { return fmt.Errorf("error: missing context for error message") } + return nil + }, + }, + { + name: "hcl - exclude post-processor, expect no warning", + args: []string{ + "-except", "manifest", + testFixture("hcl", "test_except_manifest.pkr.hcl"), + }, + expectedCode: 0, + outputCheck: func(out, err string) error { + for _, stream := range []string{out, err} { + if strings.Contains(stream, "Warning: an 'except' option was passed, but did not match any build") { + return fmt.Errorf("Unexpected warning for build no match with except") + } + + if strings.Contains(stream, "Running post-processor:") { + return fmt.Errorf("Should not run post-processors, but found one") + } + } + return nil }, }, diff --git a/command/test-fixtures/hcl/test_except_manifest.pkr.hcl b/command/test-fixtures/hcl/test_except_manifest.pkr.hcl new file mode 100644 index 00000000000..bf9f7ad29ad --- /dev/null +++ b/command/test-fixtures/hcl/test_except_manifest.pkr.hcl @@ -0,0 +1,9 @@ +source "null" "test" { + communicator = "none" +} + +build { + sources = ["null.test"] + + post-processor "manifest" {} +} diff --git a/hcl2template/types.packer_config.go b/hcl2template/types.packer_config.go index ef67f33e73d..3ac4b0c5145 100644 --- a/hcl2template/types.packer_config.go +++ b/hcl2template/types.packer_config.go @@ -514,7 +514,7 @@ func (cfg *PackerConfig) getCoreBuildProvisioner(source SourceUseBlock, pb *Prov // getCoreBuildProvisioners takes a list of post processor block, starts // according provisioners and sends parsed HCL2 over to it. -func (cfg *PackerConfig) getCoreBuildPostProcessors(source SourceUseBlock, blocksList [][]*PostProcessorBlock, ectx *hcl.EvalContext) ([][]packer.CoreBuildPostProcessor, hcl.Diagnostics) { +func (cfg *PackerConfig) getCoreBuildPostProcessors(source SourceUseBlock, blocksList [][]*PostProcessorBlock, ectx *hcl.EvalContext, exceptMatches *int) ([][]packer.CoreBuildPostProcessor, hcl.Diagnostics) { var diags hcl.Diagnostics res := [][]packer.CoreBuildPostProcessor{} for _, blocks := range blocksList { @@ -533,6 +533,7 @@ func (cfg *PackerConfig) getCoreBuildPostProcessors(source SourceUseBlock, block for _, exceptGlob := range cfg.except { if exceptGlob.Match(name) { exclude = true + *exceptMatches = *exceptMatches + 1 break } } @@ -673,21 +674,20 @@ func (cfg *PackerConfig) GetBuilds(opts packer.GetBuildsOptions) ([]packersdk.Bu if moreDiags.HasErrors() { continue } - pps, moreDiags := cfg.getCoreBuildPostProcessors(srcUsage, build.PostProcessorsLists, cfg.EvalContext(BuildContext, variables)) + pps, moreDiags := cfg.getCoreBuildPostProcessors(srcUsage, build.PostProcessorsLists, cfg.EvalContext(BuildContext, variables), &opts.ExceptMatches) diags = append(diags, moreDiags...) if moreDiags.HasErrors() { continue } - if build.ErrorCleanupProvisionerBlock != nil { - if !build.ErrorCleanupProvisionerBlock.OnlyExcept.Skip(srcUsage.String()) { - errorCleanupProv, moreDiags := cfg.getCoreBuildProvisioner(srcUsage, build.ErrorCleanupProvisionerBlock, cfg.EvalContext(BuildContext, variables)) - diags = append(diags, moreDiags...) - if moreDiags.HasErrors() { - continue - } - pcb.CleanupProvisioner = errorCleanupProv + if build.ErrorCleanupProvisionerBlock != nil && + !build.ErrorCleanupProvisionerBlock.OnlyExcept.Skip(srcUsage.String()) { + errorCleanupProv, moreDiags := cfg.getCoreBuildProvisioner(srcUsage, build.ErrorCleanupProvisionerBlock, cfg.EvalContext(BuildContext, variables)) + diags = append(diags, moreDiags...) + if moreDiags.HasErrors() { + continue } + pcb.CleanupProvisioner = errorCleanupProv } pcb.Builder = builder From 09ec2fc5bf740322ea24a85d71713718d0a19474 Mon Sep 17 00:00:00 2001 From: Ashlee Boyer Date: Fri, 13 Jan 2023 19:01:09 -0500 Subject: [PATCH 012/381] Updating link to use cases docs page --- website/content/docs/partnerships.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/partnerships.mdx b/website/content/docs/partnerships.mdx index d39268e57ae..1eefff7e359 100644 --- a/website/content/docs/partnerships.mdx +++ b/website/content/docs/partnerships.mdx @@ -18,7 +18,7 @@ This program is intended to be largely a self-service process with links and gui Packer is an open source tool for creating identical machine images for multiple platforms from a single source configuration. Packer is lightweight, runs on every major operating system, and is highly performant, creating machine images for multiple platforms in parallel. Packer does not replace configuration management like Chef or Puppet. In fact, when building images, Packer is able to use tools like Chef or Puppet to install software onto the image. -A machine image is a single static unit that contains a pre-configured operating system and installed software which is used to quickly create new running machines. Machine image formats change for each platform. Some examples include AMIs for EC2, VMDK/VMX files for VMware, OVF exports for VirtualBox, etc. To know more about use cases of Packer click ([Use Cases - Introduction | Packer by HashiCorp](/#features)) +A machine image is a single static unit that contains a pre-configured operating system and installed software which is used to quickly create new running machines. Machine image formats change for each platform. Some examples include AMIs for EC2, VMDK/VMX files for VMware, OVF exports for VirtualBox, etc. To know more about use cases of Packer click ([Use Cases - Introduction | Packer by HashiCorp](/packer/docs/intro/use-cases)) The diagram below depicts the key Packer integration categories and types. From b46fafe8712964fa029589784f7b67f6c59115dc Mon Sep 17 00:00:00 2001 From: Ashlee Boyer Date: Fri, 13 Jan 2023 19:02:11 -0500 Subject: [PATCH 013/381] Updating old learn link --- website/content/docs/install.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/install.mdx b/website/content/docs/install.mdx index d2982f024cf..548049dc7a1 100644 --- a/website/content/docs/install.mdx +++ b/website/content/docs/install.mdx @@ -10,4 +10,4 @@ page_title: Install For detailed instructions on how to install Packer, see [this Getting Started guide][install]. -[install]: https://learn.hashicorp.com/packer/getting-started/install 'Install Packer' +[install]: /packer/tutorials/docker-get-started/get-started-install-cli 'Install Packer' From ab55430b17b59cdf55b69da184fa40adc931f0ec Mon Sep 17 00:00:00 2001 From: Mariano Asselborn Date: Fri, 13 Jan 2023 15:40:13 -0500 Subject: [PATCH 014/381] RELENG-305: add VBA automation to create new release branches --- .github/workflows/create-release-branch.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .github/workflows/create-release-branch.yml diff --git a/.github/workflows/create-release-branch.yml b/.github/workflows/create-release-branch.yml new file mode 100644 index 00000000000..12f67225365 --- /dev/null +++ b/.github/workflows/create-release-branch.yml @@ -0,0 +1,10 @@ +name: create a release branch +on: [workflow_dispatch] +jobs: + create-branch: + runs-on: [linux, small] + steps: + - uses: actions/checkout@v3 + - uses: hashicorp/actions-create-release-branch@v1 + with: + token: ${{ secrets.ELEVATED_GITHUB_TOKEN }} From bafe915b9e2b94d39565e7a99a2991dad7b071ba Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 19 Jan 2023 12:33:41 -0500 Subject: [PATCH 015/381] Add PACKER_GITHUB_API_TOKEN to fix failures due to API rate limiting In response to https://github.com/hashicorp/packer/actions/runs/3954018806/jobs/6770905412 --- .github/workflows/acceptance-test.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/acceptance-test.yml b/.github/workflows/acceptance-test.yml index df1f620a82a..69179d89f80 100644 --- a/.github/workflows/acceptance-test.yml +++ b/.github/workflows/acceptance-test.yml @@ -37,6 +37,8 @@ jobs: AWS_ACCESS_KEY_ID: ${{ secrets.TESTACC_AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.TESTACC_AWS_SECRET_ACCESS_KEY }} AWS_REGION: ${{ secrets.TESTACC_AWS_REGION }} + # Packer GH Token for API Rate Limiting + PACKER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - uses: actions/checkout@v2 - uses: actions/setup-go@v2 @@ -90,4 +92,4 @@ jobs: } env: SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} - SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK \ No newline at end of file + SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK From 7ae61cbe43036cf6188b929398fa366e5e9e7202 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Jan 2023 19:02:24 +0000 Subject: [PATCH 016/381] build(deps): bump tomhjp/gh-action-jira-search from 0.2.1 to 0.2.2 Bumps [tomhjp/gh-action-jira-search](https://github.com/tomhjp/gh-action-jira-search) from 0.2.1 to 0.2.2. - [Release notes](https://github.com/tomhjp/gh-action-jira-search/releases) - [Commits](https://github.com/tomhjp/gh-action-jira-search/compare/v0.2.1...v0.2.2) --- updated-dependencies: - dependency-name: tomhjp/gh-action-jira-search dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/jira.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/jira.yml b/.github/workflows/jira.yml index 9ce02890f08..2307ec4df8d 100644 --- a/.github/workflows/jira.yml +++ b/.github/workflows/jira.yml @@ -24,7 +24,7 @@ jobs: - name: Search if: github.event.action == 'labeled' id: search - uses: tomhjp/gh-action-jira-search@v0.2.1 + uses: tomhjp/gh-action-jira-search@v0.2.2 with: # cf[10089] is Issue Link (use JIRA API to retrieve) jql: 'project = "HPR" AND cf[10089] = "${{ github.event.issue.html_url }}"' From 86a60445772132ee15da13362b395bcb02cf0196 Mon Sep 17 00:00:00 2001 From: Gary McDonald Date: Thu, 19 Jan 2023 14:00:45 -0500 Subject: [PATCH 017/381] Fix the spelling of several words within the README.md stored in the website/ project directory. (#12197) Signed-off-by: Gary McDonald Signed-off-by: Gary McDonald --- website/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/README.md b/website/README.md index 5bba4f52e2f..bec714a4ed8 100644 --- a/website/README.md +++ b/website/README.md @@ -126,7 +126,7 @@ The `Tabs` component creates tabbed content of any type, but is often used for c ![Tabs Component](https://p176.p0.n0.cdn.getcloudapp.com/items/WnubALZ4/Screen%20Recording%202020-06-11%20at%2006.03%20PM.gif?v=1de81ea720a8cc8ade83ca64fb0b9edd) -> Please refer to the [Swingset](https://react-components.vercel.app/?component=Tabs) documention for the latest examples and API reference. +> Please refer to the [Swingset](https://react-components.vercel.app/?component=Tabs) documentation for the latest examples and API reference. It can be used as such within a markdown file: @@ -150,7 +150,7 @@ $ curl ... -Contined normal markdown content +Continued normal markdown content ```` The intentionally skipped line is a limitation of the mdx parser which is being actively worked on. All tabs must have a heading, and there is no limit to the number of tabs, though it is recommended to go for a maximum of three or four. @@ -451,7 +451,7 @@ This configuration would display something like the following text on the websit A {{ release candidate }} for {{ v1.0.0 }} is available! The release can be downloaded here. ``` -You may customize the parameters in any way you'd like. To remove a prerelease from the website, simply delete the `prerelease` paremeter from the above component. +You may customize the parameters in any way you'd like. To remove a prerelease from the website, simply delete the `prerelease` parameter from the above component. From 0d94e7d7537951715b9906b333b6844876ee3ce1 Mon Sep 17 00:00:00 2001 From: claire labry Date: Thu, 19 Jan 2023 13:02:09 -0600 Subject: [PATCH 018/381] Introduce action-set-product-version for Packer (#12135) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This change introduces the new actions-set-product-version, a tiny, but mighty, GitHub action that acts as a bridge between the product repo and our new CRT feature: automated version bumping. tl;dr automated version bumping has a new command (bob update version) in the bob CLI that automatically bumps the version to a new patch. This automation has been introduced to crt-workflows-common as a new workflow (with the new bob command) and handles version bumping at the end of the release pipeline (after being released to production); for example, 1.0.0→1.0.1 and 1.0.0-dev→1.0.0. Bumping the minor version (ie 1.0.x→1.1.0) is only supported manually via bob update version -bump minor, but not supported in CRT (this work is upcoming). This is made possible by adding the new event “bump-version” in the ci.hcl file in this PR. What this small action does: Allows for the static version string from the version/VERSION file to be read by the new CRT workflow and automagically be bumped to the next version (whether it be a minor, or patch, or major version bump). Outputs an error if there’s no VERSION file in the version dir Outputs an error if there’s no version string in the VERSION file Is able to parse product_version if it is 1.3.0-alpha1 as 1.3.0 (example: when product_version = 1.3.0-alpha1, base_version = 1.3.0) Is able to parse prerelease product versions such as alpha1 (example prerelease_product_version = alpha1) in the statement above. --- .github/workflows/build.yml | 170 +++++++++++++++++------------------- .release/ci.hcl | 159 +++++---------------------------- Makefile | 3 - scripts/version.sh | 12 --- version/VERSION | 1 + version/version.go | 10 ++- 6 files changed, 108 insertions(+), 247 deletions(-) delete mode 100755 scripts/version.sh create mode 100644 version/VERSION diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ab949cc762e..f37a0436c91 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,7 +10,6 @@ on: [ workflow_dispatch, push, workflow_call ] env: REPO_NAME: "packer" - GO_TAGS: "" permissions: contents: read @@ -21,7 +20,7 @@ jobs: outputs: go-version: ${{ steps.get-go-version.outputs.go-version }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: 'Determine Go version' id: get-go-version # We use .go-version as our source of truth for current Go @@ -30,58 +29,55 @@ jobs: echo "Building with Go $(cat .go-version)" echo "::set-output name=go-version::$(cat .go-version)" - get-product-version: + set-product-version: runs-on: ubuntu-latest outputs: - product-version: ${{ steps.get-product-version.outputs.product-version }} + product-version: ${{ steps.set-product-version.outputs.product-version }} + base-product-version: ${{ steps.set-product-version.outputs.base-product-version }} + product-date: ${{ steps.get-product-version.outputs.product-date }} + product-prerelease-version: ${{ steps.set-product-version.outputs.prerelease-product-version }} + set-ld-flags: ${{ steps.set-ld-flags.outputs.set-ld-flags }} steps: - - uses: actions/checkout@v2 - - name: get product version - id: get-product-version + - uses: actions/checkout@v3 + - name: set product version + id: set-product-version + uses: hashicorp/actions-set-product-version@v1 + - name: set-ld-flags + id: set-ld-flags run: | - make version - echo "::set-output name=product-version::$(make version)" + T="github.com/hashicorp/packer/version" + echo "::set-output name=set-ld-flags::-X ${T}.GitCommit=${GITHUB_SHA::8} -X ${T}.GitDescribe=${{ steps.set-product-version.outputs.product-version }} -X ${T}.Version=${{ steps.set-product-version.outputs.base-product-version }} -X ${T}.VersionPrerelease=${{ steps.set-product-version.outputs.prerelease-product-version }} -X ${T}.VersionMetadata=" + - name: validate outputs + run: | + echo "Product Version: ${{ steps.set-product-version.outputs.product-version }}" + echo "Base Product Version: ${{ steps.set-product-version.outputs.base-product-version }}" + echo "Prerelease Version: ${{ steps.set-product-version.outputs.prerelease-product-version }}" + echo "ldflags: ${{ steps.set-ld-flags.outputs.set-ld-flags }}" generate-metadata-file: - needs: - - get-product-version + needs: set-product-version runs-on: ubuntu-latest outputs: filepath: ${{ steps.generate-metadata-file.outputs.filepath }} steps: - name: 'Checkout directory' - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Generate metadata file id: generate-metadata-file uses: hashicorp/actions-generate-metadata@main with: - version: ${{ needs.get-product-version.outputs.product-version }} + version: ${{ needs.set-product-version.outputs.product-version }} product: ${{ env.REPO_NAME }} - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v3 with: name: metadata.json path: ${{ steps.generate-metadata-file.outputs.filepath }} - - set-ld-flags: - needs: get-product-version - runs-on: ubuntu-latest - outputs: - ldflags: ${{ steps.generate-ld-flags.outputs.ldflags }} - steps: - - uses: actions/checkout@v2 - - name: 'Generate ld flags' - id: generate-ld-flags - run: | - project="$(go list -m)" - sha="$(git rev-parse HEAD)" - echo "::set-output name=ldflags::"-s -w -X \'$project/version.GitCommit=$sha\'"" - + build-other: needs: - - get-product-version + - set-product-version - get-go-version - - set-ld-flags runs-on: ubuntu-latest strategy: matrix: @@ -98,36 +94,33 @@ jobs: fail-fast: true name: Go ${{ matrix.go }} ${{ matrix.goos }} ${{ matrix.goarch }} build + env: GOPRIVATE: "github.com/hashicorp" GO111MODULE: on - LD_FLAGS: ${{ needs.set-ld-flags.outputs.ldflags }} steps: - - uses: actions/checkout@v2 - - name: Setup go - uses: actions/setup-go@v2 - with: - go-version: ${{ matrix.go }} + - uses: actions/checkout@v3 - name: Go Build env: - GOOS: ${{ matrix.goos }} - GOARCH: ${{ matrix.goarch }} - CGO_ENABLED: 0 - run: | - mkdir -p dist out - unset GOPATH; - go build -v -tags "${{ env.GO_TAGS }}" -ldflags "${{ env.LD_FLAGS }}" -o dist/ . - zip -r -j out/${{ env.REPO_NAME }}_${{ needs.get-product-version.outputs.product-version }}_${{ matrix.goos }}_${{ matrix.goarch }}.zip dist/ - - uses: actions/upload-artifact@v2 + PRODUCT_VERSION: ${{ needs.set-product-version.outputs.product-version }} + PRERELEASE_VERSION: ${{ needs.set-product-version.outputs.product-prerelease-version }} + LD_FLAGS: "${{ needs.set-product-version.outputs.set-ld-flags}}" + CGO_ENABLED: "0" + uses: hashicorp/actions-go-build@v0.1.7 with: - name: ${{ env.REPO_NAME }}_${{ needs.get-product-version.outputs.product-version }}_${{ matrix.goos }}_${{ matrix.goarch }}.zip - path: out/${{ env.REPO_NAME }}_${{ needs.get-product-version.outputs.product-version }}_${{ matrix.goos }}_${{ matrix.goarch }}.zip + product_name: ${{ env.REPO_NAME }} + product_version: ${{ needs.set-product-version.outputs.product-version }} + go_version: ${{ matrix.go }} + os: ${{ matrix.goos }} + arch: ${{ matrix.goarch }} + reproducible: report + instructions: |- + go build -o "$BIN_PATH" -ldflags="$LD_FLAGS" -trimpath -buildvcs=false build-linux: needs: - - get-product-version + - set-product-version - get-go-version - - set-ld-flags runs-on: ubuntu-latest strategy: matrix: @@ -141,28 +134,25 @@ jobs: env: GOPRIVATE: "github.com/hashicorp" GO111MODULE: on - LD_FLAGS: ${{ needs.set-ld-flags.outputs.ldflags }} steps: - - uses: actions/checkout@v2 - - name: Setup go - uses: actions/setup-go@v2 - with: - go-version: ${{ matrix.go }} + - uses: actions/checkout@v3 - name: Go Build env: - GOOS: ${{ matrix.goos }} - GOARCH: ${{ matrix.goarch }} - CGO_ENABLED: 0 - run: | - mkdir -p dist out - unset GOPATH; - go build -v -tags "${{ env.GO_TAGS }}" -ldflags "${{ env.LD_FLAGS }}" -o dist/ . - zip -r -j out/${{ env.REPO_NAME }}_${{ needs.get-product-version.outputs.product-version }}_${{ matrix.goos }}_${{ matrix.goarch }}.zip dist/ - - uses: actions/upload-artifact@v2 + PRODUCT_VERSION: ${{ needs.set-product-version.outputs.product-version }} + PRERELEASE_VERSION: ${{ needs.set-product-version.outputs.product-prerelease-version }} + LD_FLAGS: "${{ needs.set-product-version.outputs.set-ld-flags}}" + CGO_ENABLED: "0" + uses: hashicorp/actions-go-build@v0.1.7 with: - name: ${{ env.REPO_NAME }}_${{ needs.get-product-version.outputs.product-version }}_${{ matrix.goos }}_${{ matrix.goarch }}.zip - path: out/${{ env.REPO_NAME }}_${{ needs.get-product-version.outputs.product-version }}_${{ matrix.goos }}_${{ matrix.goarch }}.zip + product_name: ${{ env.REPO_NAME }} + product_version: ${{ needs.set-product-version.outputs.product-version }} + go_version: ${{ matrix.go }} + os: ${{ matrix.goos }} + arch: ${{ matrix.goarch }} + reproducible: report + instructions: |- + go build -o "$BIN_PATH" -ldflags="$LD_FLAGS" -trimpath -buildvcs=false - name: Linux Packaging uses: hashicorp/actions-packaging-linux@v1 @@ -170,7 +160,7 @@ jobs: name: ${{ env.REPO_NAME }} description: "HashiCorp Packer - A tool for creating identical machine images for multiple platforms from a single source configuration" arch: ${{ matrix.goarch }} - version: ${{ needs.get-product-version.outputs.product-version }} + version: ${{ needs.set-product-version.outputs.product-version }} maintainer: "HashiCorp" homepage: "https://www.packer.io/docs" license: "MPL-2.0" @@ -181,20 +171,19 @@ jobs: run: | echo "RPM_PACKAGE=$(basename out/*.rpm)" >> $GITHUB_ENV echo "DEB_PACKAGE=$(basename out/*.deb)" >> $GITHUB_ENV - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v3 with: name: ${{ env.RPM_PACKAGE }} path: out/${{ env.RPM_PACKAGE }} - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v3 with: name: ${{ env.DEB_PACKAGE }} path: out/${{ env.DEB_PACKAGE }} build-darwin: needs: - - get-product-version + - set-product-version - get-go-version - - set-ld-flags runs-on: macos-latest strategy: matrix: @@ -207,42 +196,39 @@ jobs: env: GOPRIVATE: "github.com/hashicorp" GO111MODULE: on - LD_FLAGS: ${{ needs.set-ld-flags.outputs.ldflags }} steps: - - uses: actions/checkout@v2 - - name: Setup go - uses: actions/setup-go@v2 - with: - go-version: ${{ matrix.go }} + - uses: actions/checkout@v3 - name: Go Build env: - GOOS: ${{ matrix.goos }} - GOARCH: ${{ matrix.goarch }} - CGO_ENABLED: 0 - run: | - mkdir -p dist out - unset GOPATH; - go build -v -tags "${{ env.GO_TAGS }} netcgo" -ldflags "${{ env.LD_FLAGS }}" -o dist/ . - zip -r -j out/${{ env.REPO_NAME }}_${{ needs.get-product-version.outputs.product-version }}_${{ matrix.goos }}_${{ matrix.goarch }}.zip dist/ - - uses: actions/upload-artifact@v2 + PRODUCT_VERSION: ${{ needs.set-product-version.outputs.product-version }} + PRERELEASE_VERSION: ${{ needs.set-product-version.outputs.product-prerelease-version }} + LD_FLAGS: "${{ needs.set-product-version.outputs.set-ld-flags}}" + CGO_ENABLED: "0" + uses: hashicorp/actions-go-build@v0.1.7 with: - name: ${{ env.REPO_NAME }}_${{ needs.get-product-version.outputs.product-version }}_${{ matrix.goos }}_${{ matrix.goarch }}.zip - path: out/${{ env.REPO_NAME }}_${{ needs.get-product-version.outputs.product-version }}_${{ matrix.goos }}_${{ matrix.goarch }}.zip + product_name: ${{ env.REPO_NAME }} + product_version: ${{ needs.set-product-version.outputs.product-version }} + go_version: ${{ matrix.go }} + os: ${{ matrix.goos }} + arch: ${{ matrix.goarch }} + reproducible: report + instructions: |- + go build -o "$BIN_PATH" -ldflags="$LD_FLAGS" -tags netcgo -trimpath -buildvcs=false build-docker: name: Docker light ${{ matrix.arch }} build needs: - - get-product-version + - set-product-version - build-linux runs-on: ubuntu-latest strategy: matrix: arch: [ "arm", "arm64", "386", "amd64" ] env: - version: ${{ needs.get-product-version.outputs.product-version }} + version: ${{ needs.set-product-version.outputs.product-version }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Docker Build (Action) uses: hashicorp/actions-docker-build@v1 with: diff --git a/.release/ci.hcl b/.release/ci.hcl index 258c485905b..b1f995952e5 100644 --- a/.release/ci.hcl +++ b/.release/ci.hcl @@ -9,7 +9,7 @@ project "packer" { organization = "hashicorp" repository = "packer" release_branches = [ - "main" + "main", ] } } @@ -28,146 +28,14 @@ event "build" { } } -event "upload-dev" { +event "prepare" { depends = ["build"] - action "upload-dev" { - organization = "hashicorp" - repository = "crt-workflows-common" - workflow = "upload-dev" - depends = ["build"] - } - - notification { - on = "fail" - } -} - -event "quality-tests" { - depends = ["upload-dev"] - action "quality-tests" { - organization = "hashicorp" - repository = "crt-workflows-common" - workflow = "quality-tests" - } - - notification { - on = "fail" - } -} -event "security-scan-binaries" { - depends = ["upload-dev"] - action "security-scan-binaries" { + action "prepare" { organization = "hashicorp" - repository = "crt-workflows-common" - workflow = "security-scan-binaries" - config = "security-scan.hcl" - } - - notification { - on = "fail" - } -} - -event "security-scan-containers" { - depends = ["security-scan-binaries"] - action "security-scan-containers" { - organization = "hashicorp" - repository = "crt-workflows-common" - workflow = "security-scan-containers" - config = "security-scan.hcl" - } - - notification { - on = "fail" - } -} - -event "notarize-darwin-amd64" { - depends = ["security-scan-containers"] - action "notarize-darwin-amd64" { - organization = "hashicorp" - repository = "crt-workflows-common" - workflow = "notarize-darwin-amd64" - } - - notification { - on = "fail" - } -} - -event "notarize-windows-386" { - depends = ["notarize-darwin-amd64"] - action "notarize-windows-386" { - organization = "hashicorp" - repository = "crt-workflows-common" - workflow = "notarize-windows-386" - } - - notification { - on = "fail" - } -} - -event "notarize-windows-amd64" { - depends = ["notarize-windows-386"] - action "notarize-windows-amd64" { - organization = "hashicorp" - repository = "crt-workflows-common" - workflow = "notarize-windows-amd64" - } - - notification { - on = "fail" - } -} - -event "sign" { - depends = ["notarize-windows-amd64"] - action "sign" { - organization = "hashicorp" - repository = "crt-workflows-common" - workflow = "sign" - } - - notification { - on = "fail" - } -} - -event "sign-linux-rpms" { - depends = ["sign"] - action "sign-linux-rpms" { - organization = "hashicorp" - repository = "crt-workflows-common" - workflow = "sign-linux-rpms" - } - - notification { - on = "fail" - } -} - -event "verify" { - depends = ["sign-linux-rpms"] - action "verify" { - organization = "hashicorp" - repository = "crt-workflows-common" - workflow = "verify" - } - - notification { - on = "fail" - } -} - -event "promote-dev-docker" { - depends = ["verify"] - action "promote-dev-docker" { - organization = "hashicorp" - repository = "crt-workflows-common" - workflow = "promote-dev-docker" - depends = ["verify"] + repository = "crt-workflows-common" + workflow = "prepare" + depends = ["build"] } notification { @@ -267,8 +135,21 @@ event "post-publish-website" { } } -event "update-ironbank" { +event "bump-version" { depends = ["post-publish-website"] + action "bump-version" { + organization = "hashicorp" + repository = "crt-workflows-common" + workflow = "bump-version" + } + + notification { + on = "fail" + } +} + +event "update-ironbank" { + depends = ["bump-version"] action "update-ironbank" { organization = "hashicorp" repository = "crt-workflows-common" diff --git a/Makefile b/Makefile index c6f145f3c1f..13102b0444d 100644 --- a/Makefile +++ b/Makefile @@ -196,6 +196,3 @@ vet: ## Vet Go code help: @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' -# This is used for release builds by .github/workflows/build.yml -version: - @$(CURDIR)/scripts/version.sh version/version.go diff --git a/scripts/version.sh b/scripts/version.sh deleted file mode 100755 index c854cab307b..00000000000 --- a/scripts/version.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -version_file=$1 -version=$(awk '$1 == "Version" && $2 == "=" { gsub(/"/, "", $3); print $3 }' < "${version_file}") -prerelease=$(awk '$1 == "VersionPrerelease" && $2 == "=" { gsub(/"/, "", $3); print $3 }' < "${version_file}") - -if [ -n "$prerelease" ]; then - echo "${version}-${prerelease}" -else - echo "${version}" -fi \ No newline at end of file diff --git a/version/VERSION b/version/VERSION new file mode 100644 index 00000000000..9eadd6baad8 --- /dev/null +++ b/version/VERSION @@ -0,0 +1 @@ +1.8.6 \ No newline at end of file diff --git a/version/version.go b/version/version.go index 192d87d6f3a..5e6f85b8f71 100644 --- a/version/version.go +++ b/version/version.go @@ -13,13 +13,21 @@ var ( // Whether cgo is enabled or not; set at build time CgoEnabled bool + // The next version number that will be released. This will be updated after every release + // Version must conform to the format expected by github.com/hashicorp/go-version + // for tests to work. + // A pre-release marker for the version can also be specified (e.g -dev). If this is omitted // The main version number that is being run at the moment. + Version = "1.8.6" + // A pre-release marker for the version. If this is "" (empty string) // then it means that it is a final release. Otherwise, this is a pre-release // such as "dev" (in development), "beta", "rc1", etc. + VersionPrerelease = "dev" - VersionMetadata = "" + + VersionMetadata = "" ) var PackerVersion *pluginVersion.PluginVersion From 6e96b9e10fecbb534abca798dcc3708c94537835 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 19 Jan 2023 14:03:15 -0500 Subject: [PATCH 019/381] build(deps): bump json5 from 1.0.1 to 1.0.2 in /website (#12185) Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2. - [Release notes](https://github.com/json5/json5/releases) - [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md) - [Commits](https://github.com/json5/json5/compare/v1.0.1...v1.0.2) --- updated-dependencies: - dependency-name: json5 dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- website/package-lock.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/website/package-lock.json b/website/package-lock.json index a739f371adb..e7d047e0635 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -6729,9 +6729,9 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "bin": { "json5": "lib/cli.js" @@ -11233,9 +11233,9 @@ } }, "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "dependencies": { "minimist": "^1.2.0" @@ -17070,9 +17070,9 @@ "dev": true }, "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, "jsonfile": { @@ -20532,9 +20532,9 @@ }, "dependencies": { "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "requires": { "minimist": "^1.2.0" From 38d0bc818d3cc6dda9e443826e93e65597c0d299 Mon Sep 17 00:00:00 2001 From: craigpero Date: Fri, 20 Jan 2023 12:59:05 -0600 Subject: [PATCH 020/381] Update index.mdx In trying the example, I found that you have to type "*.second-example" for the expected results. I took the command line on line #78 literal and it didn't work as typed. When I used my proposed change... it worked for me. Alternatively, "*.second*" works but that could grab builders that were not intended. --- .../content/docs/templates/hcl_templates/blocks/build/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/templates/hcl_templates/blocks/build/index.mdx b/website/content/docs/templates/hcl_templates/blocks/build/index.mdx index 302ab5f19ec..b83ede21727 100644 --- a/website/content/docs/templates/hcl_templates/blocks/build/index.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/build/index.mdx @@ -75,7 +75,7 @@ matching **builders** (source) or all referenced builders 'except' the matching ones, for example with the same config file: ```shell-session -> packer build -only "*.second" ./folder +> packer build -only "*.second-example" ./folder Build 'null.second-example' finished. Build 'a.null.second-example' finished. From ba546eb8cbeed152a4c1211b7022f32e78cdefe3 Mon Sep 17 00:00:00 2001 From: lonegunmanb Date: Tue, 24 Jan 2023 23:21:54 +0800 Subject: [PATCH 021/381] correct document issue in provisioner block doc (#12210) --- .../docs/templates/hcl_templates/blocks/build/provisioner.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/templates/hcl_templates/blocks/build/provisioner.mdx b/website/content/docs/templates/hcl_templates/blocks/build/provisioner.mdx index a7a866f56f2..88f0c479d14 100644 --- a/website/content/docs/templates/hcl_templates/blocks/build/provisioner.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/build/provisioner.mdx @@ -135,7 +135,7 @@ build { ``` As you can see, the `override` key is used. The value of this key is another -HCL attribute map where the key is the name of a [builder +HCL attribute map where the key is the name of a [source definition](/docs/templates/hcl_templates/blocks/source). The value of this is in turn another HCL attribute map. This HCL attribute map simply contains the provisioner configuration as normal. This configuration is merged into the default From 5081a5f24a512860cf6b01e28d68795aa8c648ea Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 23 Jan 2023 21:31:00 -0500 Subject: [PATCH 022/381] Update nightly-release.yml --- .github/workflows/nightly-release.yml | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/.github/workflows/nightly-release.yml b/.github/workflows/nightly-release.yml index b3276a92df6..e4c43a7cef1 100644 --- a/.github/workflows/nightly-release.yml +++ b/.github/workflows/nightly-release.yml @@ -61,6 +61,7 @@ jobs: # If a release with this name already exists, it will overwrite the existing data - name: Create a nightly GitHub prerelease id: create_prerelease + continue-on-error: true uses: ncipollo/release-action@v1 with: name: nightly @@ -72,12 +73,34 @@ jobs: removeArtifacts: true draft: false token: ${{ secrets.GITHUB_TOKEN }} + - name: Store GitHub Release ID + if: steps.create_prerelease.outcome == 'success' + run: | + echo "prerelease_id=${{ steps.create_prerelease.outputs.id }}" >> $GITHUB_ENV + - name: Retry failed nightly GitHub prerelease + id: create_prerelease_retry + if: steps.create_prerelease.outcome == 'failure' + uses: ncipollo/release-action@v1 + with: + name: nightly + artifacts: "${{ env.BUILD_OUTPUT_LIST }}" + tag: nightly + bodyFile: ".github/workflows/nightly-release-readme.md" + prerelease: true + allowUpdates: true + removeArtifacts: true + draft: false + token: ${{ secrets.GITHUB_TOKEN }} + - name: Store Updated GitHub Release ID + if: steps.create_prerelease_retry.outcome == 'success' + run: | + echo "prerelease_id=${{ steps.create_prerelease_retry.outputs.id }}" >> $GITHUB_ENV - name: Publish nightly GitHub prerelease uses: eregon/publish-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - release_id: ${{ steps.create_prerelease.outputs.id }} + release_id: ${{ env.prerelease_id }} # Send a slack notification if either job defined above fails slack-notify: permissions: From 4ca37bae86131c4db4841a24f6e24ae20d141bd4 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 23 Jan 2023 22:23:47 -0500 Subject: [PATCH 023/381] Add a small sleep to calm the machines --- .github/workflows/nightly-release.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/nightly-release.yml b/.github/workflows/nightly-release.yml index e4c43a7cef1..33cbaa7d892 100644 --- a/.github/workflows/nightly-release.yml +++ b/.github/workflows/nightly-release.yml @@ -77,6 +77,11 @@ jobs: if: steps.create_prerelease.outcome == 'success' run: | echo "prerelease_id=${{ steps.create_prerelease.outputs.id }}" >> $GITHUB_ENV + - name: Sleep before retry + id: sleep_before_retry + if: steps.create_prerelease.outcome == 'failure' + run : sleep 30m + shell: bash - name: Retry failed nightly GitHub prerelease id: create_prerelease_retry if: steps.create_prerelease.outcome == 'failure' From da455bdd093d79b7e6ca84f5755a114129c70503 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 24 Jan 2023 11:18:48 -0500 Subject: [PATCH 024/381] Add HCP Ready label to Oracle plugin in preparation for 1.0.4 release --- website/data/plugins-manifest.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/website/data/plugins-manifest.json b/website/data/plugins-manifest.json index 68afb049c97..e5e6a028237 100644 --- a/website/data/plugins-manifest.json +++ b/website/data/plugins-manifest.json @@ -213,7 +213,8 @@ "path": "oracle", "repo": "hashicorp/packer-plugin-oracle", "pluginTier": "community", - "version": "latest" + "version": "latest", + "isHcpPackerReady": true }, { "title": "Outscale", @@ -355,4 +356,4 @@ "version": "latest", "pluginTier": "community" } -] \ No newline at end of file +] From ad640c4224e3388831d9c6c2a74f819cc9eaaf22 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 24 Jan 2023 10:44:17 -0500 Subject: [PATCH 025/381] Unpin Outscale documentation version --- website/data/plugins-manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/data/plugins-manifest.json b/website/data/plugins-manifest.json index e5e6a028237..b8e39bdd59d 100644 --- a/website/data/plugins-manifest.json +++ b/website/data/plugins-manifest.json @@ -220,7 +220,7 @@ "title": "Outscale", "path": "outscale", "repo": "outscale/packer-plugin-outscale", - "version": "v1.0.2", + "version": "latest", "pluginTier": "verified" }, { From 6137745cc1e5fc8dd7ef196f234b087368a14e5c Mon Sep 17 00:00:00 2001 From: lonegunmanb Date: Wed, 25 Jan 2023 23:39:33 +0800 Subject: [PATCH 026/381] Update variables documentation to refer to Packer not Terraform (#12220) --- website/content/docs/templates/hcl_templates/variables.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/templates/hcl_templates/variables.mdx b/website/content/docs/templates/hcl_templates/variables.mdx index 5f465b8d791..1e0386f9f86 100644 --- a/website/content/docs/templates/hcl_templates/variables.mdx +++ b/website/content/docs/templates/hcl_templates/variables.mdx @@ -98,7 +98,7 @@ Packer defines the following arguments for variable declarations: The variable declaration can also include a `default` argument. If present, the variable is considered to be _optional_ and the default value will be used -if no value is set when calling the module or running Terraform. The `default` +if no value is set when running Packer. The `default` argument requires a literal value and cannot reference other objects in the configuration. From 73482bb6367dde51bd5e16d8a9cf69a9fd021027 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 20 Dec 2022 14:54:47 -0500 Subject: [PATCH 027/381] internal: remove unused Labels on Iteration The iteration structure that we use for linking a packer build to an iteration on HCP defines a `Labels' attribute, which is never set nor read from at any point. Since it is unused, we remove it in this commit. --- internal/hcp/registry/types.iterations.go | 1 - 1 file changed, 1 deletion(-) diff --git a/internal/hcp/registry/types.iterations.go b/internal/hcp/registry/types.iterations.go index aafd6205940..410827a24a1 100644 --- a/internal/hcp/registry/types.iterations.go +++ b/internal/hcp/registry/types.iterations.go @@ -16,7 +16,6 @@ type Iteration struct { AncestorSlug string Fingerprint string RunUUID string - Labels map[string]string builds sync.Map expectedBuilds []string } From ec1d2e68f5025dcc25c1223fcb54e95c1e652cc0 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Mon, 19 Dec 2022 15:50:29 -0500 Subject: [PATCH 028/381] hcp: generate fingerprints on each new build Fingerprints are how we link a packer build to an iteration on HCP. These are computed automatically from the Git SHA in the current state, and are unique to the bucket/iteration. The main problem with this approach is that while sound in theory, it quickly falls apart when users want to run the same build configuration twice, but expect a new image to be created. With the current model, this fails, as the iteration with the current SHA already exists. While this is solvable through environment variables, or by committing a change to the repository, we think this is not clear enough, and causes an extra step to what should otherwise be a simple process. Therefore, to lower the barrier of entry into HCP, we change this behaviour with this commit. Now, fingerprints are randomly generated ULIDs instead of a git SHA, and a new one is always generated, unless one is already specified in the environment. This makes continuation of an existing iteration a conscious choice rather than something automatic, and virtually eliminates conflicts such as the ones described above. --- CHANGELOG.md | 9 ++ command/build.go | 4 +- internal/hcp/registry/hcl.go | 19 ++- internal/hcp/registry/hcp.go | 45 ++++++- internal/hcp/registry/json.go | 19 ++- internal/hcp/registry/null_registry.go | 2 + internal/hcp/registry/registry.go | 8 +- .../hcp/registry/types.bucket_service_test.go | 21 ++-- internal/hcp/registry/types.bucket_test.go | 6 +- internal/hcp/registry/types.iterations.go | 113 +++++++++++------- .../hcp/registry/types.iterations_test.go | 29 +---- website/content/docs/hcp/index.mdx | 19 ++- 12 files changed, 194 insertions(+), 100 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b5bc6a55b24..7c088426505 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,15 @@ ### IMPROVEMENTS: * bump github.com/hashicorp/hcp-sdk-go from 0.28.0 to 0.29.0. [GH-12163](https://github.com/hashicorp/packer/pull/12163) +* hcp: iteration fingerprints used to be computed from the Git SHA of the repository + where the template is located when running packer build. This changes with this + release, and now fingerprints are automatically generated as a ULID. This implies + that continuing an existing iteration will require users to define the + fingerprint in the environment manually in order to adopt this behaviour, + otherwise, by default, a new iteration will be created. This does not impact + workflows where the fingerprint was defined through the + HCP_PACKER_ITERATION_FINGERPRINT environment variable, and these builds will work + exactly as they did before. ### BUG FIXES: * core/hcl2: Templates with build blocks referencing an unknown source block diff --git a/command/build.go b/command/build.go index 66a2ec4c90f..efa370f46e5 100644 --- a/command/build.go +++ b/command/build.go @@ -90,12 +90,14 @@ func (c *BuildCommand) RunContext(buildCtx context.Context, cla *BuildArgs) int return ret } - hcpRegistry, diags := registry.New(packerStarter) + hcpRegistry, diags := registry.New(packerStarter, c.Ui) ret = writeDiags(c.Ui, nil, diags) if ret != 0 { return ret } + defer hcpRegistry.IterationStatusSummary() + err := hcpRegistry.PopulateIteration(buildCtx) if err != nil { return writeDiags(c.Ui, nil, hcl.Diagnostics{ diff --git a/internal/hcp/registry/hcl.go b/internal/hcp/registry/hcl.go index baa2b5cb29a..f07f4878d4b 100644 --- a/internal/hcp/registry/hcl.go +++ b/internal/hcp/registry/hcl.go @@ -3,6 +3,7 @@ package registry import ( "context" "fmt" + "log" "github.com/hashicorp/hcl/v2" "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/models" @@ -17,6 +18,7 @@ import ( type HCLMetadataRegistry struct { configuration *hcl2template.PackerConfig bucket *Bucket + ui sdkpacker.Ui } const ( @@ -42,6 +44,13 @@ func (h *HCLMetadataRegistry) PopulateIteration(ctx context.Context) error { h.configuration.HCPVars["iterationID"] = cty.StringVal(iterationID) + sha, err := getGitSHA(h.configuration.Basedir) + if err != nil { + log.Printf("failed to get GIT SHA from environment, won't set as build labels") + } else { + h.bucket.Iteration.AddSHAToBuildLabels(sha) + } + return nil } @@ -70,7 +79,12 @@ func (h *HCLMetadataRegistry) CompleteBuild( return h.bucket.completeBuild(ctx, name, artifacts, buildErr) } -func NewHCLMetadataRegistry(config *hcl2template.PackerConfig) (*HCLMetadataRegistry, hcl.Diagnostics) { +// IterationStatusSummary prints a status report in the UI if the iteration is not yet done +func (h *HCLMetadataRegistry) IterationStatusSummary() { + h.bucket.Iteration.iterationStatusSummary(h.ui) +} + +func NewHCLMetadataRegistry(config *hcl2template.PackerConfig, ui sdkpacker.Ui) (*HCLMetadataRegistry, hcl.Diagnostics) { var diags hcl.Diagnostics if len(config.Builds) > 1 { diags = append(diags, &hcl.Diagnostic{ @@ -127,9 +141,12 @@ func NewHCLMetadataRegistry(config *hcl2template.PackerConfig) (*HCLMetadataRegi bucket.RegisterBuildForComponent(source.String()) } + ui.Say(fmt.Sprintf("Tracking build on HCP Packer with fingerprint %q", bucket.Iteration.Fingerprint)) + return &HCLMetadataRegistry{ configuration: config, bucket: bucket, + ui: ui, }, nil } diff --git a/internal/hcp/registry/hcp.go b/internal/hcp/registry/hcp.go index fe95a0a63cd..aacb56466fe 100644 --- a/internal/hcp/registry/hcp.go +++ b/internal/hcp/registry/hcp.go @@ -3,6 +3,7 @@ package registry import ( "fmt" + git "github.com/go-git/go-git/v5" "github.com/hashicorp/hcl/v2" "github.com/hashicorp/packer/hcl2template" "github.com/hashicorp/packer/internal/hcp/env" @@ -87,9 +88,15 @@ func createConfiguredBucket(templateDir string, opts ...bucketConfigurationOpts) }) } - err := bucket.Iteration.Initialize(IterationOptions{ - TemplateBaseDir: templateDir, - }) + err := bucket.Iteration.Initialize() + if err != nil { + diags = append(diags, &hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Failed to initialize iteration", + Detail: fmt.Sprintf("The iteration failed to be initialized for bucket %q: %s", + bucket.Slug, err), + }) + } if err != nil { diags = append(diags, &hcl.Diagnostic{ @@ -109,3 +116,35 @@ func withPackerEnvConfiguration(bucket *Bucket) hcl.Diagnostics { return nil } + +// getGitSHA returns the HEAD commit for some template dir defined in baseDir. +// If the base directory is not under version control an error is returned. +func getGitSHA(baseDir string) (string, error) { + r, err := git.PlainOpenWithOptions(baseDir, &git.PlainOpenOptions{ + DetectDotGit: true, + }) + + if err != nil { + return "", fmt.Errorf("Packer could not read the fingerprint from git.") + } + + // The config can be used to retrieve user identity. for example, + // c.User.Email. Leaving in but commented because I'm not sure we care + // about this identity right now. - Megan + // + // c, err := r.ConfigScoped(config.GlobalScope) + // if err != nil { + // return "", fmt.Errorf("Error setting git scope", err) + // } + ref, err := r.Head() + if err != nil { + // If we get there, we're in a Git dir, but HEAD cannot be read. + // + // This may happen when there's no commit in the git dir. + return "", fmt.Errorf("Packer could not read a git SHA in directory %q: %s", baseDir, err) + } + + // log.Printf("Author: %v, Commit: %v\n", c.User.Email, ref.Hash()) + + return ref.Hash().String(), nil +} diff --git a/internal/hcp/registry/json.go b/internal/hcp/registry/json.go index f15c79aede1..aa44bc011c7 100644 --- a/internal/hcp/registry/json.go +++ b/internal/hcp/registry/json.go @@ -3,6 +3,7 @@ package registry import ( "context" "fmt" + "log" "path/filepath" "github.com/hashicorp/hcl/v2" @@ -15,9 +16,10 @@ import ( type JSONMetadataRegistry struct { configuration *packer.Core bucket *Bucket + ui sdkpacker.Ui } -func NewJSONMetadataRegistry(config *packer.Core) (*JSONMetadataRegistry, hcl.Diagnostics) { +func NewJSONMetadataRegistry(config *packer.Core, ui sdkpacker.Ui) (*JSONMetadataRegistry, hcl.Diagnostics) { bucket, diags := createConfiguredBucket( filepath.Dir(config.Template.Path), withPackerEnvConfiguration, @@ -41,9 +43,12 @@ func NewJSONMetadataRegistry(config *packer.Core) (*JSONMetadataRegistry, hcl.Di bucket.RegisterBuildForComponent(buildName) } + ui.Say(fmt.Sprintf("Tracking build on HCP Packer with fingerprint %q", bucket.Iteration.Fingerprint)) + return &JSONMetadataRegistry{ configuration: config, bucket: bucket, + ui: ui, }, nil } @@ -63,6 +68,13 @@ func (h *JSONMetadataRegistry) PopulateIteration(ctx context.Context) error { return err } + sha, err := getGitSHA(h.configuration.Template.Path) + if err != nil { + log.Printf("failed to get GIT SHA from environment, won't set as build labels") + } else { + h.bucket.Iteration.AddSHAToBuildLabels(sha) + } + return nil } @@ -80,3 +92,8 @@ func (h *JSONMetadataRegistry) CompleteBuild( ) ([]sdkpacker.Artifact, error) { return h.bucket.completeBuild(ctx, build.Name(), artifacts, buildErr) } + +// IterationStatusSummary prints a status report in the UI if the iteration is not yet done +func (h *JSONMetadataRegistry) IterationStatusSummary() { + h.bucket.Iteration.iterationStatusSummary(h.ui) +} diff --git a/internal/hcp/registry/null_registry.go b/internal/hcp/registry/null_registry.go index dbab4197ded..103db276406 100644 --- a/internal/hcp/registry/null_registry.go +++ b/internal/hcp/registry/null_registry.go @@ -25,3 +25,5 @@ func (r nullRegistry) CompleteBuild( ) ([]sdkpacker.Artifact, error) { return artifacts, nil } + +func (r nullRegistry) IterationStatusSummary() {} diff --git a/internal/hcp/registry/registry.go b/internal/hcp/registry/registry.go index 16e82eb7f50..487738abc8f 100644 --- a/internal/hcp/registry/registry.go +++ b/internal/hcp/registry/registry.go @@ -12,15 +12,15 @@ import ( // Registry is an entity capable to orchestrate a Packer build and upload metadata to HCP type Registry interface { - //Configure(packer.Handler) PopulateIteration(context.Context) error StartBuild(context.Context, sdkpacker.Build) error CompleteBuild(ctx context.Context, build sdkpacker.Build, artifacts []sdkpacker.Artifact, buildErr error) ([]sdkpacker.Artifact, error) + IterationStatusSummary() } // New instanciates the appropriate registry for the Packer configuration template type. // A nullRegistry is returned for non-HCP Packer registry enabled templates. -func New(cfg packer.Handler) (Registry, hcl.Diagnostics) { +func New(cfg packer.Handler, ui sdkpacker.Ui) (Registry, hcl.Diagnostics) { if !IsHCPEnabled(cfg) { return &nullRegistry{}, nil } @@ -28,9 +28,9 @@ func New(cfg packer.Handler) (Registry, hcl.Diagnostics) { switch config := cfg.(type) { case *hcl2template.PackerConfig: // Maybe rename to what it represents.... - return NewHCLMetadataRegistry(config) + return NewHCLMetadataRegistry(config, ui) case *packer.Core: - return NewJSONMetadataRegistry(config) + return NewJSONMetadataRegistry(config, ui) } return nil, hcl.Diagnostics{ diff --git a/internal/hcp/registry/types.bucket_service_test.go b/internal/hcp/registry/types.bucket_service_test.go index 60317443707..463feb59b4c 100644 --- a/internal/hcp/registry/types.bucket_service_test.go +++ b/internal/hcp/registry/types.bucket_service_test.go @@ -9,7 +9,6 @@ import ( ) func TestInitialize_NewBucketNewIteration(t *testing.T) { - t.Setenv("HCP_PACKER_BUILD_FINGERPRINT", "testnumber") mockService := api.NewMockPackerClientService() b := &Bucket{ @@ -20,7 +19,7 @@ func TestInitialize_NewBucketNewIteration(t *testing.T) { } b.Iteration = NewIteration() - err := b.Iteration.Initialize(IterationOptions{}) + err := b.Iteration.Initialize() if err != nil { t.Errorf("unexpected failure: %v", err) } @@ -62,7 +61,6 @@ func TestInitialize_NewBucketNewIteration(t *testing.T) { } func TestInitialize_UnsetTemplateTypeError(t *testing.T) { - t.Setenv("HCP_PACKER_BUILD_FINGERPRINT", "testunsettemplate") mockService := api.NewMockPackerClientService() mockService.BucketAlreadyExist = true @@ -74,7 +72,7 @@ func TestInitialize_UnsetTemplateTypeError(t *testing.T) { } b.Iteration = NewIteration() - err := b.Iteration.Initialize(IterationOptions{}) + err := b.Iteration.Initialize() if err != nil { t.Errorf("unexpected failure: %v", err) } @@ -88,7 +86,6 @@ func TestInitialize_UnsetTemplateTypeError(t *testing.T) { } func TestInitialize_ExistingBucketNewIteration(t *testing.T) { - t.Setenv("HCP_PACKER_BUILD_FINGERPRINT", "testnumber") mockService := api.NewMockPackerClientService() mockService.BucketAlreadyExist = true @@ -100,7 +97,7 @@ func TestInitialize_ExistingBucketNewIteration(t *testing.T) { } b.Iteration = NewIteration() - err := b.Iteration.Initialize(IterationOptions{}) + err := b.Iteration.Initialize() if err != nil { t.Errorf("unexpected failure: %v", err) } @@ -142,7 +139,6 @@ func TestInitialize_ExistingBucketNewIteration(t *testing.T) { } func TestInitialize_ExistingBucketExistingIteration(t *testing.T) { - t.Setenv("HCP_PACKER_BUILD_FINGERPRINT", "testnumber") mockService := api.NewMockPackerClientService() mockService.BucketAlreadyExist = true mockService.IterationAlreadyExist = true @@ -155,7 +151,7 @@ func TestInitialize_ExistingBucketExistingIteration(t *testing.T) { } b.Iteration = NewIteration() - err := b.Iteration.Initialize(IterationOptions{}) + err := b.Iteration.Initialize() if err != nil { t.Errorf("unexpected failure: %v", err) } @@ -212,7 +208,6 @@ func TestInitialize_ExistingBucketExistingIteration(t *testing.T) { } func TestInitialize_ExistingBucketCompleteIteration(t *testing.T) { - t.Setenv("HCP_PACKER_BUILD_FINGERPRINT", "testnumber") mockService := api.NewMockPackerClientService() mockService.BucketAlreadyExist = true mockService.IterationAlreadyExist = true @@ -227,7 +222,7 @@ func TestInitialize_ExistingBucketCompleteIteration(t *testing.T) { } b.Iteration = NewIteration() - err := b.Iteration.Initialize(IterationOptions{}) + err := b.Iteration.Initialize() if err != nil { t.Errorf("unexpected failure: %v", err) } @@ -258,7 +253,6 @@ func TestInitialize_ExistingBucketCompleteIteration(t *testing.T) { } func TestUpdateBuildStatus(t *testing.T) { - t.Setenv("HCP_PACKER_BUILD_FINGERPRINT", "testnumber") mockService := api.NewMockPackerClientService() mockService.BucketAlreadyExist = true mockService.IterationAlreadyExist = true @@ -271,7 +265,7 @@ func TestUpdateBuildStatus(t *testing.T) { } b.Iteration = NewIteration() - err := b.Iteration.Initialize(IterationOptions{}) + err := b.Iteration.Initialize() if err != nil { t.Errorf("unexpected failure: %v", err) } @@ -312,7 +306,6 @@ func TestUpdateBuildStatus(t *testing.T) { } func TestUpdateBuildStatus_DONENoImages(t *testing.T) { - t.Setenv("HCP_PACKER_BUILD_FINGERPRINT", "testnumber") mockService := api.NewMockPackerClientService() mockService.BucketAlreadyExist = true mockService.IterationAlreadyExist = true @@ -325,7 +318,7 @@ func TestUpdateBuildStatus_DONENoImages(t *testing.T) { } b.Iteration = NewIteration() - err := b.Iteration.Initialize(IterationOptions{}) + err := b.Iteration.Initialize() if err != nil { t.Errorf("unexpected failure: %v", err) } diff --git a/internal/hcp/registry/types.bucket_test.go b/internal/hcp/registry/types.bucket_test.go index e7c926f6253..922916b461a 100644 --- a/internal/hcp/registry/types.bucket_test.go +++ b/internal/hcp/registry/types.bucket_test.go @@ -10,11 +10,9 @@ import ( ) func createInitialTestBucket(t testing.TB) *Bucket { - t.Setenv("HCP_PACKER_BUILD_FINGERPRINT", "no-fingerprint-here") - t.Helper() bucket := NewBucketWithIteration() - err := bucket.Iteration.Initialize(IterationOptions{}) + err := bucket.Iteration.Initialize() if err != nil { t.Errorf("failed to initialize Bucket: %s", err) return nil @@ -289,7 +287,7 @@ func TestBucket_PopulateIteration(t *testing.T) { mockService.BuildAlreadyDone = tt.buildCompleted bucket := NewBucketWithIteration() - err := bucket.Iteration.Initialize(IterationOptions{}) + err := bucket.Iteration.Initialize() if err != nil { t.Fatalf("failed when calling NewBucketWithIteration: %s", err) } diff --git a/internal/hcp/registry/types.iterations.go b/internal/hcp/registry/types.iterations.go index 410827a24a1..ef86470647b 100644 --- a/internal/hcp/registry/types.iterations.go +++ b/internal/hcp/registry/types.iterations.go @@ -3,12 +3,17 @@ package registry import ( "errors" "fmt" + "math/rand" "os" + "strings" "sync" + "time" - git "github.com/go-git/go-git/v5" + "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/models" + sdkpacker "github.com/hashicorp/packer-plugin-sdk/packer" registryimage "github.com/hashicorp/packer-plugin-sdk/packer/registry/image" "github.com/hashicorp/packer/internal/hcp/env" + "github.com/oklog/ulid" ) type Iteration struct { @@ -34,68 +39,28 @@ func NewIteration() *Iteration { } // Initialize prepares the iteration to be used with an active HCP Packer registry bucket. -func (i *Iteration) Initialize(opts IterationOptions) error { +func (i *Iteration) Initialize() error { if i == nil { return errors.New("Unexpected call to initialize for a nil Iteration") } // By default we try to load a Fingerprint from the environment variable. - // If no variable is defined we should try to load a fingerprint from Git, or other VCS. + // If no variable is defined we generate a new fingerprint. i.Fingerprint = os.Getenv(env.HCPPackerBuildFingerprint) if i.Fingerprint != "" { return nil } - fp, err := GetGitFingerprint(opts) + fp, err := ulid.New(ulid.Now(), ulid.Monotonic(rand.New(rand.NewSource(time.Now().UnixNano())), 0)) if err != nil { - return err + return fmt.Errorf("Failed to generate a fingerprint: %s", err) } - i.Fingerprint = fp + i.Fingerprint = fp.String() return nil } -// GetGitFingerprint returns the HEAD commit for some template dir defined in opt.TemplateBaseDir. -// If the base directory is not under version control an error is returned. -func GetGitFingerprint(opts IterationOptions) (string, error) { - r, err := git.PlainOpenWithOptions(opts.TemplateBaseDir, &git.PlainOpenOptions{ - DetectDotGit: true, - }) - - if err != nil { - return "", fmt.Errorf("Packer could not read the fingerprint from git." + - "\n\nIf your Packer template is not within a git managed directory, " + - "you can set the HCP_PACKER_BUILD_FINGERPRINT environment variable. " + - "The fingerprint must be less than 32 characters and can contain letters and numbers.") - } - - // The config can be used to retrieve user identity. for example, - // c.User.Email. Leaving in but commented because I'm not sure we care - // about this identity right now. - Megan - // - // c, err := r.ConfigScoped(config.GlobalScope) - // if err != nil { - // return "", fmt.Errorf("Error setting git scope", err) - // } - ref, err := r.Head() - if err != nil { - // If we get there, we're in a Git dir, but HEAD cannot be read. - // - // This may happen when there's no commit in the git dir. - return "", fmt.Errorf("Packer could not read a git SHA in directory %q.\n"+ - "This may happen if your template is in a git repository without any "+ - "commits. You can either add a commit in this directory, or set the "+ - "HCP_PACKER_BUILD_FINGERPRINT environment variable. The fingerprint "+ - "must be less than 32 characters and can contain letters and numbers.\n"+ - "Error: %s", opts.TemplateBaseDir, err) - } - - // log.Printf("Author: %v, Commit: %v\n", c.User.Email, ref.Hash()) - - return ref.Hash().String(), nil -} - //StoreBuild stores a build for buildName to an active iteration. func (i *Iteration) StoreBuild(buildName string, build *Build) { i.builds.Store(buildName, build) @@ -151,3 +116,59 @@ func (i *Iteration) AddLabelsToBuild(buildName string, data map[string]string) e i.StoreBuild(buildName, build) return nil } + +// AddSHAToBuildLabels adds the Git SHA for the current iteration (if set) as a label for all the builds of the iteration +func (i *Iteration) AddSHAToBuildLabels(sha string) { + i.builds.Range(func(_, v any) bool { + b, ok := v.(*Build) + if !ok { + return true + } + + b.MergeLabels(map[string]string{ + "git_sha": sha, + }) + + return true + }) +} + +// RemainingBuilds returns the list of builds that are not in a DONE status +func (i *Iteration) RemainingBuilds() []*Build { + var todo []*Build + + i.builds.Range(func(k, v any) bool { + build, ok := v.(*Build) + if !ok { + // Unlikely since the builds map contains only Build instances + return true + } + + if build.Status != models.HashicorpCloudPackerBuildStatusDONE { + todo = append(todo, build) + } + return true + }) + + return todo +} + +func (i *Iteration) iterationStatusSummary(ui sdkpacker.Ui) { + rem := i.RemainingBuilds() + if rem == nil { + return + } + + buf := &strings.Builder{} + + buf.WriteString(fmt.Sprintf( + "\nIteration %q is not complete, the following builds are not done:\n\n", + i.Fingerprint)) + for _, b := range rem { + buf.WriteString(fmt.Sprintf("* %q: %s\n", b.ComponentType, b.Status)) + } + buf.WriteString("\nYou may resume work on this iteration in further Packer builds by defining the following variable in your environment:\n") + buf.WriteString(fmt.Sprintf("HCP_PACKER_BUILD_FINGERPRINT=%q", i.Fingerprint)) + + ui.Say(buf.String()) +} diff --git a/internal/hcp/registry/types.iterations_test.go b/internal/hcp/registry/types.iterations_test.go index d7d0435f837..b78229454ce 100644 --- a/internal/hcp/registry/types.iterations_test.go +++ b/internal/hcp/registry/types.iterations_test.go @@ -12,7 +12,6 @@ func TestIteration_Initialize(t *testing.T) { var tc = []struct { name string fingerprint string - opts IterationOptions setupFn func(t *testing.T) errorExpected bool }{ @@ -26,9 +25,6 @@ func TestIteration_Initialize(t *testing.T) { { name: "using git fingerprint", fingerprint: "4ec004e18e977a5b8a3a28f4b24279b6993d7e7c", - opts: IterationOptions{ - TemplateBaseDir: tempdir("4ec004e18e"), - }, setupFn: func(t *testing.T) { //nolint:errcheck git.PlainClone(tempdir("4ec004e18e"), false, &git.CloneOptions{ @@ -37,33 +33,16 @@ func TestIteration_Initialize(t *testing.T) { Depth: 1, }) + t.Setenv("HCP_PACKER_BUILD_FINGERPRINT", "4ec004e18e977a5b8a3a28f4b24279b6993d7e7c") + t.Cleanup(func() { //nolint:errcheck os.RemoveAll(tempdir("4ec004e18e")) }) }, }, - { - name: "using empty git directory", - opts: IterationOptions{ - TemplateBaseDir: tempdir("empty-init"), - }, - setupFn: func(t *testing.T) { - //nolint:errcheck - git.PlainInit(tempdir("empty-init"), false) - t.Cleanup(func() { - //nolint:errcheck - os.RemoveAll(tempdir("empty-init")) - }) - }, - errorExpected: true, - }, { name: "using no fingerprint in clean directory", - opts: IterationOptions{ - TemplateBaseDir: "/dev/null", - }, - errorExpected: true, }, } @@ -75,7 +54,7 @@ func TestIteration_Initialize(t *testing.T) { } i := NewIteration() - err := i.Initialize(tt.opts) + err := i.Initialize() if tt.errorExpected { t.Logf("%v", err) if err == nil { @@ -92,7 +71,7 @@ func TestIteration_Initialize(t *testing.T) { t.Errorf("expected %q to return with no error, but it %v", tt.name, err) } - if i.Fingerprint != tt.fingerprint { + if tt.fingerprint != "" && i.Fingerprint != tt.fingerprint { t.Errorf("%q failed to load the expected fingerprint %q, but got %q", tt.name, tt.fingerprint, i.Fingerprint) } diff --git a/website/content/docs/hcp/index.mdx b/website/content/docs/hcp/index.mdx index a5ddf719683..4274f1193c7 100644 --- a/website/content/docs/hcp/index.mdx +++ b/website/content/docs/hcp/index.mdx @@ -29,7 +29,7 @@ You must set the following environment variables to enable Packer to push metada You can set these additional environment variables to control how metadata is pushed to the registry. -- `HCP_PACKER_BUILD_FINGERPRINT` - A unique identifier assigned to each build. HCP Packer uses this identifier to determine if metadata for a build on the registry is complete. By default, HCP Packer uses the HEAD Git SHA for the template file. If the template is not version controlled, you must set this environment variable to a unique value before running `packer build`. +- `HCP_PACKER_BUILD_FINGERPRINT` - A unique identifier assigned to each iteration. To reuse a fingerprint that is associated with an existing incomplete iteration you must set this environment variable. Refer to [Iteration Fingerprinting](#iteration-fingerprinting) for usage details. - `HCP_PACKER_REGISTRY` - When set, Packer does not push image metadata to HCP Packer from an otherwise configured template. Allowed values are [0|OFF]. @@ -41,4 +41,21 @@ The `hcp_packer_registry` block is only available for HCL2 Packer templates. The Refer to [`hcp_packer_registry`](docs/templates/hcl_templates/blocks/build/hcp_packer_registry) for a full list of configuration arguments. Refer to [Custom Configuration](https://cloud.hashicorp.com/docs/packer/store-image-metadata/packer-template-configuration#custom-configuration) in the HCP Packer documentation for information and examples about how to customize image metadata. +### Iteration Fingerprinting +Packer uses a unique fingerprint for tracking the completion of builds associated to an iteration. By default a fingerprint is automatically generated by Packer during each invocation of `packer build`, unless a fingerprint is manually provided via the `HCP_PACKER_BUILD_FINGERPRINT` environment variable. + +#### Fingerprints and Incomplete Iterations + +When you build a template with Packer, there's always a chance that it does not succeed because of a network issue, a provisioning failure, or some upstream error. When that happens, Packer will output the generated fingerprint associated with the incomplete iteration so that you can resume building that iteration using the `HCP_PACKER_BUILD_FINGERPRINT` environment variable; an iteration can be resumed until it is marked as complete. This environment variable is necessary for resuming an incomplete iteration, otherwise Packer will create a new iteration for the build. + +There are two alternatives for when and how to set your own fingerprint: + +* You can set it prior to invoking `packer build` for the first time on this template. This will require the fingerprint to be unique, otherwise Packer will attempt to continue the iteration with the same fingerprint. +* You can invoke `packer build` on the template, and if it fails, you can then get the fingerprint from the output of the command and set it for subsequent runs, Packer will then continue building this iteration. + +The first alternative is recommended for CI environments, as you can use environment variables from the CI to generate a unique, deterministic, fingerprint, and then re-use this in case the step fails for any reason. This will let you continue building the same iteration, rather than creating a new one on each invocation. + +The second alternative is good for local builds, as you can interact with the build environment directly, and therefore can decide if you want to continue building an iteration by setting the fingerprint provided by Packer in case of failure. + +Please note that in all cases, an iteration can only be continued if it has not completed yet. Once an iteration is complete, it cannot be modified, and you will have to create a new one. From 15a3e4f5fbdfa54e71ff113fcb514882b0dfd946 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Jan 2023 19:08:16 +0000 Subject: [PATCH 029/381] build(deps): bump github.com/hashicorp/hcp-sdk-go from 0.29.0 to 0.31.0 Bumps [github.com/hashicorp/hcp-sdk-go](https://github.com/hashicorp/hcp-sdk-go) from 0.29.0 to 0.31.0. - [Release notes](https://github.com/hashicorp/hcp-sdk-go/releases) - [Changelog](https://github.com/hashicorp/hcp-sdk-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/hcp-sdk-go/compare/v0.29.0...v0.31.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/hcp-sdk-go dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 25 ++++---- go.sum | 177 +++++++++++++++------------------------------------------ 2 files changed, 60 insertions(+), 142 deletions(-) diff --git a/go.mod b/go.mod index 52c8d125c2c..e1bea052aac 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e github.com/dsnet/compress v0.0.1 github.com/go-git/go-git/v5 v5.4.2 - github.com/go-openapi/runtime v0.19.24 + github.com/go-openapi/runtime v0.25.0 github.com/gobwas/glob v0.2.3 github.com/gofrs/flock v0.8.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect @@ -22,7 +22,7 @@ require ( github.com/hashicorp/go-uuid v1.0.2 github.com/hashicorp/go-version v1.6.0 github.com/hashicorp/hcl/v2 v2.14.1 - github.com/hashicorp/hcp-sdk-go v0.29.0 + github.com/hashicorp/hcp-sdk-go v0.31.0 github.com/hashicorp/packer-plugin-amazon v1.1.6 github.com/hashicorp/packer-plugin-sdk v0.3.2 github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 @@ -121,8 +121,6 @@ require ( github.com/Microsoft/go-winio v0.4.16 // indirect github.com/NaverCloudPlatform/ncloud-sdk-go-v2 v1.1.7 // indirect github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect - github.com/PuerkitoBio/purell v1.1.1 // indirect - github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect github.com/Telmate/proxmox-api-go v0.0.0-20220107223401-b9c909d83a3b // indirect github.com/acomagu/bufpipe v1.0.3 // indirect github.com/agext/levenshtein v1.2.3 // indirect @@ -152,16 +150,18 @@ require ( github.com/ghodss/yaml v1.0.0 // indirect github.com/go-git/gcfg v1.5.0 // indirect github.com/go-git/go-billy/v5 v5.3.1 // indirect + github.com/go-logr/logr v1.2.3 // indirect + github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect - github.com/go-openapi/analysis v0.20.0 // indirect + github.com/go-openapi/analysis v0.21.4 // indirect github.com/go-openapi/errors v0.20.3 // indirect github.com/go-openapi/jsonpointer v0.19.5 // indirect - github.com/go-openapi/jsonreference v0.19.5 // indirect - github.com/go-openapi/loads v0.20.2 // indirect - github.com/go-openapi/spec v0.20.3 // indirect + github.com/go-openapi/jsonreference v0.20.0 // indirect + github.com/go-openapi/loads v0.21.2 // indirect + github.com/go-openapi/spec v0.20.7 // indirect github.com/go-openapi/strfmt v0.21.3 // indirect - github.com/go-openapi/swag v0.19.14 // indirect - github.com/go-openapi/validate v0.20.2 // indirect + github.com/go-openapi/swag v0.22.3 // indirect + github.com/go-openapi/validate v0.22.0 // indirect github.com/go-resty/resty/v2 v2.6.0 // indirect github.com/gofrs/uuid v4.0.0+incompatible // indirect github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3 // indirect @@ -211,7 +211,7 @@ require ( github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect github.com/kr/fs v0.1.0 // indirect github.com/linode/linodego v0.30.0 // indirect - github.com/mailru/easyjson v0.7.6 // indirect + github.com/mailru/easyjson v0.7.7 // indirect github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786 // indirect github.com/matryer/is v1.4.0 // indirect github.com/mattn/go-colorable v0.1.8 // indirect @@ -228,6 +228,7 @@ require ( github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d // indirect github.com/oklog/ulid v1.3.1 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect + github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/profitbricks/profitbricks-sdk-go v4.0.2+incompatible // indirect @@ -251,6 +252,8 @@ require ( github.com/yusufpapurcu/wmi v1.2.2 // indirect go.mongodb.org/mongo-driver v1.11.0 // indirect go.opencensus.io v0.23.0 // indirect + go.opentelemetry.io/otel v1.11.1 // indirect + go.opentelemetry.io/otel/trace v1.11.1 // indirect golang.org/x/mobile v0.0.0-20210901025245-1fde1d6c3ca1 // indirect golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect diff --git a/go.sum b/go.sum index a19899a8b6c..75162ce565b 100644 --- a/go.sum +++ b/go.sum @@ -346,10 +346,7 @@ github.com/NaverCloudPlatform/ncloud-sdk-go-v2 v1.1.7/go.mod h1:P+3VS0ETiQPyWOx3 github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C67SkzkDfmQuVln04ygHj3vjZfd9FL+GmQQ= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= -github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/Telmate/proxmox-api-go v0.0.0-20220107223401-b9c909d83a3b h1:EzGVAEAffdZqkKpI4wC9dzR81v/uBB4yYuXf1wU3fZk= github.com/Telmate/proxmox-api-go v0.0.0-20220107223401-b9c909d83a3b/go.mod h1:keBhXWLa+UBajvf79xvKcfiqeIc7vZL9wOqxuy1CBGw= @@ -359,7 +356,6 @@ github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= -github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -368,7 +364,6 @@ github.com/aliyun/alibaba-cloud-sdk-go v1.61.1028 h1:lBif3zUMR6sjgfONVqfnjjjdXIK github.com/aliyun/alibaba-cloud-sdk-go v1.61.1028/go.mod h1:pUKYbK5JQ+1Dfxk80P0qxGqe5dkxDoabbZS7zOcouyA= github.com/aliyun/aliyun-oss-go-sdk v2.1.8+incompatible h1:hLUNPbx10wawWW7DeNExvTrlb90db3UnnNTFKHZEFhE= github.com/aliyun/aliyun-oss-go-sdk v2.1.8+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= -github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo29Kk6CurOXKm700vrz8f0KW0JNfpkRJY/8= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/antchfx/xpath v1.1.11 h1:WOFtK8TVAjLm3lbgqeP0arlHpvCEeTANeWZ/csPpJkQ= @@ -397,17 +392,12 @@ github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= -github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ= github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/aws/aws-sdk-go v1.25.37/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.30.27/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.31.9/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= -github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= github.com/aws/aws-sdk-go v1.44.114 h1:plIkWc/RsHr3DXBj4MEw9sEW4CcL/e2ryokc+CKyq1I= github.com/aws/aws-sdk-go v1.44.114/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f h1:ZNv7On9kyUzm7fvRZumSyy/IUiSC7AzL0I1jKKtwooA= @@ -491,7 +481,6 @@ github.com/dnaeon/go-vcr v1.1.0 h1:ReYa/UBrRyQdant9B4fNHGoCNKw6qh6P0fsdGmZpR7c= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v1.4.2-0.20200319182547-c7ad2b866182/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dsnet/compress v0.0.1 h1:PlZu0n3Tuv04TzpfPbrnI0HW/YwodEXDS+oPKahKF0Q= github.com/dsnet/compress v0.0.1/go.mod h1:Aw8dCMJ7RioblQeTqt88akK31OvO8Dhf5JflhBbQEHo= @@ -528,8 +517,6 @@ github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= -github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= -github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= @@ -549,100 +536,47 @@ github.com/go-ldap/ldap/v3 v3.1.3/go.mod h1:3rbOH3jRS2u6jg2rJnKAMLE/xQyCKIveG2Sa github.com/go-ldap/ldap/v3 v3.1.10/go.mod h1:5Zun81jBTabRaI8lzN7E1JjyEl1g6zI6u9pd8luAK4Q= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= +github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/go-openapi/analysis v0.0.0-20180825180245-b006789cd277/go.mod h1:k70tL6pCuVxPJOHXQ+wIac1FUrvNkHolPie/cLEU6hI= -github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= -github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= -github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= -github.com/go-openapi/analysis v0.19.4/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= -github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU= -github.com/go-openapi/analysis v0.19.10/go.mod h1:qmhS3VNFxBlquFJ0RGoDtylO9y4pgTAUNE9AEEMdlJQ= -github.com/go-openapi/analysis v0.19.16/go.mod h1:GLInF007N83Ad3m8a/CbQ5TPzdnGT7workfHwuVjNVk= -github.com/go-openapi/analysis v0.20.0 h1:UN09o0kNhleunxW7LR+KnltD0YrJ8FF03pSqvAN3Vro= -github.com/go-openapi/analysis v0.20.0/go.mod h1:BMchjvaHDykmRMsK40iPtvyOfFdMMxlOmQr9FBZk+Og= -github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= -github.com/go-openapi/errors v0.19.3/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= -github.com/go-openapi/errors v0.19.6/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/errors v0.19.7/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= +github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY= +github.com/go-openapi/analysis v0.21.4 h1:ZDFLvSNxpDaomuCueM0BlSXxpANBlFYiBvr+GXrvIHc= +github.com/go-openapi/analysis v0.21.4/go.mod h1:4zQ35W4neeZTqh3ol0rv/O8JBbka9QyAgQRPp9y3pfo= github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.19.9/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.20.3 h1:rz6kiC84sqNQoqrtulzaL/VERgkoCyB6WdEkc2ujzUc= github.com/go-openapi/errors v0.20.3/go.mod h1:Z3FlZ4I8jEGxjUK+bugx3on2mIAk4txuAOhlsB1FSgk= -github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= -github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= -github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= -github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= -github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= -github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/jsonreference v0.19.5 h1:1WJP/wi4OjB4iV8KVbH73rQaoialJrqv8gitZLxGLtM= -github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= -github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= -github.com/go-openapi/loads v0.19.3/go.mod h1:YVfqhUCdahYwR3f3iiwQLhicVRvLlU/WO5WPaZvcvSI= -github.com/go-openapi/loads v0.19.5/go.mod h1:dswLCAdonkRufe/gSUC3gN8nTSaB9uaS2es0x5/IbjY= -github.com/go-openapi/loads v0.19.6/go.mod h1:brCsvE6j8mnbmGBh103PT/QLHfbyDxA4hsKvYBNEGVc= -github.com/go-openapi/loads v0.19.7/go.mod h1:brCsvE6j8mnbmGBh103PT/QLHfbyDxA4hsKvYBNEGVc= -github.com/go-openapi/loads v0.20.0/go.mod h1:2LhKquiE513rN5xC6Aan6lYOSddlL8Mp20AW9kpviM4= -github.com/go-openapi/loads v0.20.2 h1:z5p5Xf5wujMxS1y8aP+vxwW5qYT2zdJBbXKmQUG3lcc= -github.com/go-openapi/loads v0.20.2/go.mod h1:hTVUotJ+UonAMMZsvakEgmWKgtulweO9vYP2bQYKA/o= -github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= -github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= -github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4= -github.com/go-openapi/runtime v0.19.15/go.mod h1:dhGWCTKRXlAfGnQG0ONViOZpjfg0m2gUt9nTQPQZuoo= -github.com/go-openapi/runtime v0.19.16/go.mod h1:5P9104EJgYcizotuXhEuUrzVc+j1RiSjahULvYmlv98= -github.com/go-openapi/runtime v0.19.24 h1:TqagMVlRAOTwllE/7hNKx6rQ10O6T8ZzeJdMjSTKaD4= -github.com/go-openapi/runtime v0.19.24/go.mod h1:Lm9YGCeecBnUUkFTxPC4s1+lwrkJ0pthx8YvyjCfkgk= -github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= -github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= -github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= -github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= -github.com/go-openapi/spec v0.19.6/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= -github.com/go-openapi/spec v0.19.8/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= -github.com/go-openapi/spec v0.19.15/go.mod h1:+81FIL1JwC5P3/Iuuozq3pPE9dXdIEGxFutcFKaVbmU= -github.com/go-openapi/spec v0.20.0/go.mod h1:+81FIL1JwC5P3/Iuuozq3pPE9dXdIEGxFutcFKaVbmU= -github.com/go-openapi/spec v0.20.1/go.mod h1:93x7oh+d+FQsmsieroS4cmR3u0p/ywH649a3qwC9OsQ= -github.com/go-openapi/spec v0.20.3 h1:uH9RQ6vdyPSs2pSy9fL8QPspDF2AMIMPtmK5coSSjtQ= -github.com/go-openapi/spec v0.20.3/go.mod h1:gG4F8wdEDN+YPBMVnzE85Rbhf+Th2DTvA9nFPQ5AYEg= -github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= -github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= -github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= -github.com/go-openapi/strfmt v0.19.2/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= -github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= -github.com/go-openapi/strfmt v0.19.4/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= -github.com/go-openapi/strfmt v0.19.5/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= -github.com/go-openapi/strfmt v0.19.11/go.mod h1:UukAYgTaQfqJuAFlNxxMWNvMYiwiXtLsF2VwmoFtbtc= -github.com/go-openapi/strfmt v0.20.0/go.mod h1:UukAYgTaQfqJuAFlNxxMWNvMYiwiXtLsF2VwmoFtbtc= +github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= +github.com/go-openapi/jsonreference v0.20.0 h1:MYlu0sBgChmCfJxxUKZ8g1cPWFOB37YSZqewK7OKeyA= +github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= +github.com/go-openapi/loads v0.21.1/go.mod h1:/DtAMXXneXFjbQMGEtbamCZb+4x7eGwkvZCvBmwUG+g= +github.com/go-openapi/loads v0.21.2 h1:r2a/xFIYeZ4Qd2TnGpWDIQNcP80dIaZgf704za8enro= +github.com/go-openapi/loads v0.21.2/go.mod h1:Jq58Os6SSGz0rzh62ptiu8Z31I+OTHqmULx5e/gJbNw= +github.com/go-openapi/runtime v0.25.0 h1:7yQTCdRbWhX8vnIjdzU8S00tBYf7Sg71EBeorlPHvhc= +github.com/go-openapi/runtime v0.25.0/go.mod h1:Ux6fikcHXyyob6LNWxtE96hWwjBPYF0DXgVFuMTneOs= +github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= +github.com/go-openapi/spec v0.20.6/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= +github.com/go-openapi/spec v0.20.7 h1:1Rlu/ZrOCCob0n+JKKJAWhNWMPW8bOZRg8FJaY+0SKI= +github.com/go-openapi/spec v0.20.7/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= +github.com/go-openapi/strfmt v0.21.0/go.mod h1:ZRQ409bWMj+SOgXofQAGTIo2Ebu72Gs+WaRADcS5iNg= +github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k= github.com/go-openapi/strfmt v0.21.3 h1:xwhj5X6CjXEZZHMWy1zKJxvW9AfHC9pkyUjLvHtKG7o= github.com/go-openapi/strfmt v0.21.3/go.mod h1:k+RzNO0Da+k3FrrynSNN8F7n/peCmQQqbbXjtDfvmGg= -github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= -github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= -github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.7/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY= -github.com/go-openapi/swag v0.19.9/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY= -github.com/go-openapi/swag v0.19.12/go.mod h1:eFdyEBkTdoAf/9RXBvj4cr1nH7GD8Kzo5HTt47gr72M= -github.com/go-openapi/swag v0.19.13/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/swag v0.19.14 h1:gm3vOOXfiuw5i9p5N9xJvfjvuofpyvLA9Wr6QfK5Fng= -github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= -github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= -github.com/go-openapi/validate v0.19.3/go.mod h1:90Vh6jjkTn+OT1Eefm0ZixWNFjhtOH7vS9k0lo6zwJo= -github.com/go-openapi/validate v0.19.10/go.mod h1:RKEZTUWDkxKQxN2jDT7ZnZi2bhZlbNMAuKvKB+IaGx8= -github.com/go-openapi/validate v0.19.12/go.mod h1:Rzou8hA/CBw8donlS6WNEUQupNvUZ0waH08tGe6kAQ4= -github.com/go-openapi/validate v0.19.15/go.mod h1:tbn/fdOwYHgrhPBzidZfJC2MIVvs9GA7monOmWBbeCI= -github.com/go-openapi/validate v0.20.1/go.mod h1:b60iJT+xNNLfaQJUqLI7946tYiFEOuE9E4k54HpKcJ0= -github.com/go-openapi/validate v0.20.2 h1:AhqDegYV3J3iQkMPJSXkvzymHKMTw0BST3RK3hTT4ts= -github.com/go-openapi/validate v0.20.2/go.mod h1:e7OJoKNgd0twXZwIn0A43tHbvIcr/rZIVCbJBpTUoY0= +github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-openapi/validate v0.22.0 h1:b0QecH6VslW/TxtpKgzpO1SNG7GU2FsaqKdP1E2T50Y= +github.com/go-openapi/validate v0.22.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= github.com/go-resty/resty/v2 v2.6.0 h1:joIR5PNLM2EFqqESUjCMGXrWmXNHEU9CEiK813oKYS4= github.com/go-resty/resty/v2 v2.6.0/go.mod h1:PwvJS6hvaPkjtjNg9ph+VrSD92bi5Zq73w/BIH7cC3Q= @@ -784,7 +718,6 @@ github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLe github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= @@ -897,8 +830,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.14.1 h1:x0BpjfZ+CYdbiz+8yZTQ+gdLO7IXvOut7Da+XJayx34= github.com/hashicorp/hcl/v2 v2.14.1/go.mod h1:e4z5nxYlWNPdDSNYX+ph14EvWYMFm3eP0zIUqPc2jr0= -github.com/hashicorp/hcp-sdk-go v0.29.0 h1:Pk2oQ3H42UTV5is8IHvAJ029Aj5qYbMg9EwyA6Mh5SM= -github.com/hashicorp/hcp-sdk-go v0.29.0/go.mod h1:BRtYrm9RwAAtnuGU/rwTeAyzKTNH/d4WlHa6eNvcEHQ= +github.com/hashicorp/hcp-sdk-go v0.31.0 h1:Xp/v1MlAWyQpcd01tqRaFC6TTTf7Gj26LkWqAxDBxlg= +github.com/hashicorp/hcp-sdk-go v0.31.0/go.mod h1:n9Obsd+GShhLkyxzrOQOEIMMpOmLYPBT5CiZFwUeaaE= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= github.com/hashicorp/memberlist v0.2.2 h1:5+RffWKwqJ71YPu9mWsF7ZOscZmwfasdA8kbdC7AO2g= @@ -1037,7 +970,6 @@ github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvW github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= @@ -1055,7 +987,6 @@ github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfn github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= @@ -1065,13 +996,11 @@ github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/linode/linodego v0.30.0 h1:r9Sujfeo4FfEn/KdOjYegMP5sNCXL5rZUc4zNcDa+2E= github.com/linode/linodego v0.30.0/go.mod h1:BR0gVkCJffEdIGJSl6bHR80Ty+Uvg/2jkjmrWaFectM= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.1/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= -github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= @@ -1133,7 +1062,6 @@ github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:F github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= @@ -1174,14 +1102,14 @@ github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5X github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= +github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/packer-community/winrmcp v0.0.0-20180921211025-c76d91c1e7db h1:9uViuKtx1jrlXLBW/pMnhOfzn3iSEdLase/But/IZRU= github.com/packer-community/winrmcp v0.0.0-20180921211025-c76d91c1e7db/go.mod h1:f6Izs6JvFTdnRbziASagjZ2vmf55NSIkC/weStxCHqk= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4 v2.5.2+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= @@ -1242,7 +1170,6 @@ github.com/sean-/conswriter v0.0.0-20180208195008-f5ae3917a627/go.mod h1:7zjs06q github.com/sean-/pager v0.0.0-20180208200047-666be9bf53b5/go.mod h1:BeybITEsBEg6qbIiqJ6/Bqeq25bCLbL7YFmpaFfJDuM= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= @@ -1276,7 +1203,6 @@ github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DM github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -1320,7 +1246,6 @@ github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oW github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= @@ -1329,10 +1254,10 @@ github.com/vmware/govmomi v0.29.0/go.mod h1:F7adsVewLNHsW/IIm7ziFURaXDaHEwcc+ym4 github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= +github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= +github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= -github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= -github.com/xdg/stringprep v0.0.0-20180714160509-73f8eece6fdc/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yandex-cloud/go-genproto v0.0.0-20211202135052-789603780fb2 h1:NOMh7Oy10aaqHWDajqN1whPrFD2RViJOqsWeAOtW7fQ= @@ -1355,13 +1280,8 @@ github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uU github.com/zclconf/go-cty-yaml v1.0.1 h1:up11wlgAaDvlAGENcFDnZgkn0qUJurso7k6EpURKNF8= github.com/zclconf/go-cty-yaml v1.0.1/go.mod h1:IP3Ylp0wQpYm50IHK8OZWKMu6sPJIUgKa8XhiVHura0= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.mongodb.org/mongo-driver v1.3.0/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE= -go.mongodb.org/mongo-driver v1.3.4/go.mod h1:MSWZXKOynuguX+JSvwP8i+58jYCXxbia8HS3gZBapIE= -go.mongodb.org/mongo-driver v1.4.3/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= -go.mongodb.org/mongo-driver v1.4.4/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= -go.mongodb.org/mongo-driver v1.4.6/go.mod h1:WcMNYLx/IlOxLe6JRJiv2uXuCz6zBLndR4SoGjYphSc= +go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= +go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8= go.mongodb.org/mongo-driver v1.11.0 h1:FZKhBSTydeuffHj9CBjXlR8vQLee1cQyTWYPA6/tqiE= go.mongodb.org/mongo-driver v1.11.0/go.mod h1:s7p5vEtfbeR1gYi6pnj3c3/urpbLv2T5Sfd6Rp2HBB8= @@ -1373,6 +1293,11 @@ go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opentelemetry.io/otel v1.11.1 h1:4WLLAmcfkmDk2ukNXJyq3/kiz/3UzCaYq6PskJsaou4= +go.opentelemetry.io/otel v1.11.1/go.mod h1:1nNhXBbWSD0nsL38H6btgnFN2k4i0sNLHNNMZMSbUGE= +go.opentelemetry.io/otel/sdk v1.11.1 h1:F7KmQgoHljhUuJyA+9BiU+EkJfyX5nVVF4wyzWZpKxs= +go.opentelemetry.io/otel/trace v1.11.1 h1:ofxdnzsNrGBYXbP7t7zpUK281+go5rF7dvdIZXF8gdQ= +go.opentelemetry.io/otel/trace v1.11.1/go.mod h1:f/Q9G7vzk5u91PhbmKbg1Qn0rzH1LJ4vbPHFGkTPtOk= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -1385,18 +1310,16 @@ golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190222235706-ffb98f73852f/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190320223903-b7391e95e576/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190418165655-df01cb2cc480/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200422194213-44a606286825/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -1453,7 +1376,6 @@ golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1461,7 +1383,6 @@ golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -1472,7 +1393,6 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -1495,14 +1415,13 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= @@ -1576,7 +1495,6 @@ golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1586,7 +1504,6 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1627,6 +1544,7 @@ golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1688,7 +1606,6 @@ golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -1702,8 +1619,6 @@ golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= From 50da6c8dc8c0f9b2c3a7d4a675ae84527436fb58 Mon Sep 17 00:00:00 2001 From: Ashlee M Boyer <43934258+ashleemboyer@users.noreply.github.com> Date: Fri, 27 Jan 2023 11:47:08 -0600 Subject: [PATCH 030/381] docs: Migrate link formats (#12192) * Adding check-legacy-links-format workflow * Adding test-link-rewrites workflow * Migrating links to new format * Updating docs-content-check-legacy-links-format hash * chore: update source * Update generated partials from Packer plugin SDK * Bump packer-plugin-sdk to get latest packer-sdc * Update website/content/docs/templates/hcl_templates/blocks/build/provisioner.mdx * Update Plugin SDK to fix shell-local regression --------- Co-authored-by: Kendall Strautman Co-authored-by: Wilken Rivera Co-authored-by: Kendall Strautman <36613477+kendallstrautman@users.noreply.github.com> --- .../workflows/check-legacy-links-format.yml | 17 +++++ .github/workflows/test-link-rewrites.yml | 16 +++++ go.mod | 2 +- go.sum | 4 ++ post-processor/manifest/post-processor.go | 2 +- website/content/community-tools.mdx | 2 +- .../docs/builders/community-supported.mdx | 2 +- website/content/docs/builders/custom.mdx | 2 +- website/content/docs/builders/file.mdx | 2 +- website/content/docs/builders/index.mdx | 12 ++-- website/content/docs/builders/null.mdx | 2 +- website/content/docs/commands/build.mdx | 2 +- website/content/docs/commands/console.mdx | 2 +- .../content/docs/commands/hcl2_upgrade.mdx | 4 +- website/content/docs/commands/init.mdx | 12 ++-- website/content/docs/commands/inspect.mdx | 2 +- .../content/docs/commands/plugins/index.mdx | 2 +- .../content/docs/commands/plugins/install.mdx | 2 +- .../docs/commands/plugins/installed.mdx | 2 +- .../content/docs/commands/plugins/remove.mdx | 2 +- .../docs/commands/plugins/required.mdx | 2 +- website/content/docs/commands/validate.mdx | 2 +- website/content/docs/communicators/index.mdx | 6 +- website/content/docs/communicators/ssh.mdx | 8 +-- website/content/docs/communicators/winrm.mdx | 8 +-- website/content/docs/configure.mdx | 12 ++-- .../docs/datasources/hcp/hcp-packer-image.mdx | 2 +- .../datasources/hcp/hcp-packer-iteration.mdx | 2 +- .../content/docs/datasources/hcp/index.mdx | 4 +- website/content/docs/datasources/index.mdx | 2 +- website/content/docs/hcp/index.mdx | 8 +-- website/content/docs/index.mdx | 4 +- website/content/docs/intro/index.mdx | 2 +- website/content/docs/intro/use-cases.mdx | 2 +- website/content/docs/partnerships.mdx | 16 ++--- .../docs/plugins/creation/custom-builders.mdx | 14 ++-- .../plugins/creation/custom-datasources.mdx | 8 +-- .../creation/custom-post-processors.mdx | 6 +- .../plugins/creation/custom-provisioners.mdx | 6 +- .../docs/plugins/creation/hcp-support.mdx | 6 +- .../content/docs/plugins/creation/index.mdx | 10 +-- website/content/docs/plugins/index.mdx | 8 +-- .../content/docs/plugins/install-plugins.mdx | 12 ++-- .../content/docs/post-processors/checksum.mdx | 8 +-- .../post-processors/community-supported.mdx | 2 +- .../content/docs/post-processors/compress.mdx | 2 +- .../content/docs/post-processors/index.mdx | 4 +- .../docs/post-processors/shell-local.mdx | 10 +-- .../docs/provisioners/community-supported.mdx | 2 +- website/content/docs/provisioners/custom.mdx | 2 +- website/content/docs/provisioners/file.mdx | 4 +- website/content/docs/provisioners/index.mdx | 2 +- .../content/docs/provisioners/powershell.mdx | 10 +-- .../content/docs/provisioners/shell-local.mdx | 4 +- website/content/docs/provisioners/shell.mdx | 10 +-- .../docs/provisioners/windows-shell.mdx | 6 +- .../blocks/build/hcp_packer_registry.mdx | 2 +- .../hcl_templates/blocks/build/index.mdx | 10 +-- .../blocks/build/post-processor.mdx | 8 +-- .../blocks/build/post-processors.mdx | 4 +- .../blocks/build/provisioner.mdx | 6 +- .../templates/hcl_templates/blocks/data.mdx | 2 +- .../templates/hcl_templates/blocks/index.mdx | 10 +-- .../templates/hcl_templates/blocks/locals.mdx | 4 +- .../templates/hcl_templates/blocks/packer.mdx | 4 +- .../templates/hcl_templates/blocks/source.mdx | 10 +-- .../hcl_templates/blocks/variable.mdx | 6 +- .../hcl_templates/contextual-variables.mdx | 14 ++-- .../templates/hcl_templates/datasources.mdx | 10 +-- .../templates/hcl_templates/expressions.mdx | 14 ++-- .../functions/collection/coalesce.mdx | 2 +- .../functions/collection/coalescelist.mdx | 2 +- .../functions/collection/element.mdx | 4 +- .../functions/collection/flatten.mdx | 6 +- .../functions/collection/index-fn.mdx | 2 +- .../functions/collection/keys.mdx | 2 +- .../functions/collection/lookup.mdx | 2 +- .../functions/collection/reverse.mdx | 2 +- .../functions/collection/setintersection.mdx | 6 +- .../functions/collection/setproduct.mdx | 12 ++-- .../functions/collection/setunion.mdx | 6 +- .../functions/collection/slice.mdx | 2 +- .../functions/collection/values.mdx | 4 +- .../functions/contextual/consul.mdx | 4 +- .../functions/contextual/env.mdx | 4 +- .../functions/contextual/vault.mdx | 2 +- .../functions/conversion/can.mdx | 6 +- .../functions/conversion/try.mdx | 2 +- .../functions/datetime/formatdate.mdx | 4 +- .../functions/datetime/legacy_isotime.mdx | 12 ++-- .../functions/datetime/legacy_strftime.mdx | 10 +-- .../functions/datetime/timeadd.mdx | 2 +- .../functions/datetime/timestamp.mdx | 4 +- .../functions/encoding/base64decode.mdx | 2 +- .../functions/encoding/base64encode.mdx | 2 +- .../functions/encoding/csvdecode.mdx | 4 +- .../functions/encoding/jsondecode.mdx | 4 +- .../functions/encoding/jsonencode.mdx | 4 +- .../functions/encoding/yamldecode.mdx | 6 +- .../functions/encoding/yamlencode.mdx | 10 +-- .../hcl_templates/functions/file/abspath.mdx | 2 +- .../hcl_templates/functions/file/basename.mdx | 4 +- .../hcl_templates/functions/file/dirname.mdx | 4 +- .../hcl_templates/functions/file/file.mdx | 2 +- .../functions/file/fileexists.mdx | 2 +- .../hcl_templates/functions/file/fileset.mdx | 8 +-- .../functions/file/templatefile.mdx | 4 +- .../hcl_templates/functions/index.mdx | 2 +- .../functions/ipnet/cidrhost.mdx | 4 +- .../functions/ipnet/cidrsubnet.mdx | 12 ++-- .../functions/ipnet/cidrsubnets.mdx | 10 +-- .../hcl_templates/functions/numeric/ceil.mdx | 2 +- .../hcl_templates/functions/numeric/floor.mdx | 2 +- .../hcl_templates/functions/numeric/max.mdx | 2 +- .../hcl_templates/functions/numeric/min.mdx | 2 +- .../functions/numeric/parseint.mdx | 2 +- .../hcl_templates/functions/string/chomp.mdx | 2 +- .../hcl_templates/functions/string/format.mdx | 4 +- .../functions/string/formatlist.mdx | 4 +- .../hcl_templates/functions/string/join.mdx | 2 +- .../hcl_templates/functions/string/lower.mdx | 4 +- .../hcl_templates/functions/string/regex.mdx | 6 +- .../functions/string/regex_replace.mdx | 2 +- .../functions/string/regexall.mdx | 4 +- .../functions/string/replace.mdx | 2 +- .../hcl_templates/functions/string/split.mdx | 2 +- .../hcl_templates/functions/string/strrev.mdx | 2 +- .../hcl_templates/functions/string/title.mdx | 4 +- .../hcl_templates/functions/string/trim.mdx | 6 +- .../functions/string/trimprefix.mdx | 6 +- .../functions/string/trimspace.mdx | 2 +- .../functions/string/trimsuffix.mdx | 6 +- .../hcl_templates/functions/string/upper.mdx | 4 +- .../hcl_templates/functions/uuid/uuidv4.mdx | 2 +- .../hcl_templates/functions/uuid/uuidv5.mdx | 4 +- .../docs/templates/hcl_templates/index.mdx | 8 +-- .../docs/templates/hcl_templates/locals.mdx | 6 +- .../hcl_templates/path-variables.mdx | 8 +-- .../templates/hcl_templates/syntax-json.mdx | 10 +-- .../docs/templates/hcl_templates/syntax.mdx | 4 +- .../templates/hcl_templates/variables.mdx | 14 ++-- website/content/docs/templates/index.mdx | 2 +- .../legacy_json_templates/builders.mdx | 6 +- .../legacy_json_templates/communicator.mdx | 6 +- .../legacy_json_templates/engine.mdx | 20 +++--- .../templates/legacy_json_templates/index.mdx | 12 ++-- .../legacy_json_templates/provisioners.mdx | 2 +- .../legacy_json_templates/user-variables.mdx | 6 +- website/content/docs/terminology.mdx | 2 +- website/content/guides/1.7-plugin-upgrade.mdx | 8 +-- .../content/guides/1.7-template-upgrade.mdx | 14 ++-- .../autounattend_windows.mdx | 6 +- .../preseed_ubuntu.mdx | 6 +- website/content/guides/index.mdx | 2 +- .../packer-on-cicd/build-image-in-cicd.mdx | 10 +-- .../packer-on-cicd/build-virtualbox-image.mdx | 10 +-- .../content/guides/packer-on-cicd/index.mdx | 6 +- .../packer-on-cicd/pipelineing-builds.mdx | 6 +- .../guides/packer-on-cicd/trigger-tfe.mdx | 4 +- .../partials/from-1.5/beta-hcl2-note.mdx | 4 +- .../partials/from-1.5/legacy-json-warning.mdx | 2 +- .../from-1.5/variables/custom-validation.mdx | 2 +- .../bootcommand/BootConfig-not-required.mdx | 2 + .../bootcommand/BootConfig.mdx | 4 +- .../bootcommand/VNCConfig-not-required.mdx | 2 + .../bootcommand/VNCConfig.mdx | 2 + .../communicator/Config-not-required.mdx | 2 + .../packer-plugin-sdk/communicator/Config.mdx | 2 + .../communicator/SSH-not-required.mdx | 18 +++-- .../packer-plugin-sdk/communicator/SSH.mdx | 5 ++ .../SSHInterface-not-required.mdx | 2 + .../communicator/SSHInterface.mdx | 6 ++ .../SSHTemporaryKeyPair-not-required.mdx | 2 + .../communicator/SSHTemporaryKeyPair.mdx | 4 +- .../communicator/WinRM-not-required.mdx | 8 ++- .../packer-plugin-sdk/communicator/WinRM.mdx | 5 ++ .../commonsteps/CDConfig-not-required.mdx | 18 +++++ .../multistep/commonsteps/CDConfig.mdx | 2 + .../commonsteps/FloppyConfig-not-required.mdx | 19 ++++++ .../multistep/commonsteps/FloppyConfig.mdx | 4 +- .../multistep/commonsteps/HTTPConfig.mdx | 4 +- .../commonsteps/ISOConfig-not-required.mdx | 2 + .../commonsteps/ISOConfig-required.mdx | 2 + .../multistep/commonsteps/ISOConfig.mdx | 2 + .../provisioners/common-config.mdx | 68 +++++++++++++++++++ .../provisioners/shell-config.mdx | 30 ++++++++ .../provisioners/unmaintained-plugin.mdx | 1 + .../ShutdownConfig-not-required.mdx | 2 + .../shutdowncommand/ShutdownConfig.mdx | 2 + .../partials/plugins/plugin-location.mdx | 6 +- .../manifest/Config-not-required.mdx | 2 +- website/content/plugins/index.mdx | 2 +- 192 files changed, 664 insertions(+), 431 deletions(-) create mode 100644 .github/workflows/check-legacy-links-format.yml create mode 100644 .github/workflows/test-link-rewrites.yml create mode 100644 website/content/partials/packer-plugin-sdk/communicator/SSH.mdx create mode 100644 website/content/partials/packer-plugin-sdk/communicator/SSHInterface.mdx create mode 100644 website/content/partials/packer-plugin-sdk/communicator/WinRM.mdx create mode 100644 website/content/partials/packer-plugin-sdk/provisioners/common-config.mdx create mode 100644 website/content/partials/packer-plugin-sdk/provisioners/shell-config.mdx create mode 100644 website/content/partials/packer-plugin-sdk/provisioners/unmaintained-plugin.mdx diff --git a/.github/workflows/check-legacy-links-format.yml b/.github/workflows/check-legacy-links-format.yml new file mode 100644 index 00000000000..08c128a9f49 --- /dev/null +++ b/.github/workflows/check-legacy-links-format.yml @@ -0,0 +1,17 @@ +name: Legacy Link Format Checker + +on: + push: + paths: + - "website/content/**/*.mdx" + - "website/data/*-nav-data.json" + +jobs: + check-links: + uses: hashicorp/dev-portal/.github/workflows/docs-content-check-legacy-links-format.yml@475289345d312552b745224b46895f51cc5fc490 + with: + repo-owner: "hashicorp" + repo-name: "packer" + commit-sha: ${{ github.sha }} + mdx-directory: "website/content" + nav-data-directory: "website/data" diff --git a/.github/workflows/test-link-rewrites.yml b/.github/workflows/test-link-rewrites.yml new file mode 100644 index 00000000000..68a3d02e894 --- /dev/null +++ b/.github/workflows/test-link-rewrites.yml @@ -0,0 +1,16 @@ +name: Test Link Rewrites + +on: [deployment_status] + +jobs: + test-link-rewrites: + if: github.event.deployment_status.state == 'success' + uses: hashicorp/dev-portal/.github/workflows/docs-content-link-rewrites-e2e.yml@2aceb60125f6c15f4c8dbe2e4d79148047bfa437 + with: + repo-owner: "hashicorp" + repo-name: "packer" + commit-sha: ${{ github.sha }} + main-branch-preview-url: "https://packer-git-main-hashicorp.vercel.app/" + # Workflow is only intended to run for one single migration PR + # This variable does not need to be updated + pr-branch-preview-url: "https://packer-git-docs-ambmigrate-link-formats-hashicorp.vercel.app/" diff --git a/go.mod b/go.mod index e1bea052aac..dc491c56b70 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/hashicorp/hcl/v2 v2.14.1 github.com/hashicorp/hcp-sdk-go v0.31.0 github.com/hashicorp/packer-plugin-amazon v1.1.6 - github.com/hashicorp/packer-plugin-sdk v0.3.2 + github.com/hashicorp/packer-plugin-sdk v0.3.4 github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 github.com/klauspost/compress v1.13.6 // indirect github.com/klauspost/pgzip v1.2.5 diff --git a/go.sum b/go.sum index 75162ce565b..9db88ef83bf 100644 --- a/go.sum +++ b/go.sum @@ -890,6 +890,10 @@ github.com/hashicorp/packer-plugin-salt v1.0.0 h1:bLGdlDG2nLyOzjp/5d2rmZ9XVxDeDU github.com/hashicorp/packer-plugin-salt v1.0.0/go.mod h1:onggPITzeB6LPSW8XlSobu8eI6yj3IMUi5cS6vWnL7s= github.com/hashicorp/packer-plugin-sdk v0.3.2 h1:4Kqq7B8CRDMbfZmkloyz11t1hfqazJuBbW8ZFo4QlN4= github.com/hashicorp/packer-plugin-sdk v0.3.2/go.mod h1:XZRvL9kRqJJtB6rf9Lu2zWLJbf2/4ImWXDjp9O9UQGE= +github.com/hashicorp/packer-plugin-sdk v0.3.3 h1:YgA3B/aoG3WTq1sjNJ+1SyLISZIag4+yoDMa6CmhmUw= +github.com/hashicorp/packer-plugin-sdk v0.3.3/go.mod h1:XZRvL9kRqJJtB6rf9Lu2zWLJbf2/4ImWXDjp9O9UQGE= +github.com/hashicorp/packer-plugin-sdk v0.3.4 h1:fmcHQtCGVa4tY2zeu/UffUHz0f3Y5RYc0OgR4XWf5oA= +github.com/hashicorp/packer-plugin-sdk v0.3.4/go.mod h1:XZRvL9kRqJJtB6rf9Lu2zWLJbf2/4ImWXDjp9O9UQGE= github.com/hashicorp/packer-plugin-tencentcloud v1.0.5 h1:L0OWx9fSu785mCoCA9dr15WTup6ILNFAYV6HTld0OXQ= github.com/hashicorp/packer-plugin-tencentcloud v1.0.5/go.mod h1:XRfZLgzsf6aFgE5W5W5rHadjVLIbI36e904aiGkJyTI= github.com/hashicorp/packer-plugin-triton v1.0.2 h1:Yla93I7Jl/WXCuCRWYYR0J8/57X4puGLZ07wBn+QS9w= diff --git a/post-processor/manifest/post-processor.go b/post-processor/manifest/post-processor.go index 2b32243f110..8efc1f20fe5 100644 --- a/post-processor/manifest/post-processor.go +++ b/post-processor/manifest/post-processor.go @@ -32,7 +32,7 @@ type Config struct { // Don't write the `build_time` field from the output. StripTime bool `mapstructure:"strip_time"` // Arbitrary data to add to the manifest. This is a [template - // engine](https://packer.io/docs/templates/legacy_json_templates/engine.html). Therefore, you + // engine](/packer/docs/templates/legacy_json_templates/engine). Therefore, you // may use user variables and template functions in this field. CustomData map[string]string `mapstructure:"custom_data"` ctx interpolate.Context diff --git a/website/content/community-tools.mdx b/website/content/community-tools.mdx index 638ff50c3a6..2858d9cb734 100644 --- a/website/content/community-tools.mdx +++ b/website/content/community-tools.mdx @@ -19,7 +19,7 @@ vendors. These plugins are not officially tested nor officially maintained by HashiCorp, and are listed here in order to help users find them easily. To learn more about how to use community plugins, or how to build your own, -check out the docs on [extending Packer](/docs/plugins/install-plugins) +check out the docs on [extending Packer](/packer/docs/plugins/install-plugins) If you have built a plugin and would like to add it to this community list, please make a pull request so that we can document your diff --git a/website/content/docs/builders/community-supported.mdx b/website/content/docs/builders/community-supported.mdx index e01177b87b8..6ce89fb856e 100644 --- a/website/content/docs/builders/community-supported.mdx +++ b/website/content/docs/builders/community-supported.mdx @@ -9,6 +9,6 @@ page_title: Community - Builders The following builders are developed and maintained by various members of the Packer community, not by HashiCorp. For more information on how to use community -builders, see our docs on [extending Packer](/docs/plugins/creation). +builders, see our docs on [extending Packer](/packer/docs/plugins/creation). @include 'builders/community_builders.mdx' diff --git a/website/content/docs/builders/custom.mdx b/website/content/docs/builders/custom.mdx index 91e20f2ceec..4445cf03ad1 100644 --- a/website/content/docs/builders/custom.mdx +++ b/website/content/docs/builders/custom.mdx @@ -11,5 +11,5 @@ page_title: Custom - Builders Packer is extensible, allowing you to write new builders without having to modify the core source code of Packer itself. Documentation for creating new builders is covered in the [custom -builders](/docs/plugins/creation/custom-builders) page of the Packer plugin +builders](/packer/docs/plugins/creation/custom-builders) page of the Packer plugin section. diff --git a/website/content/docs/builders/file.mdx b/website/content/docs/builders/file.mdx index 5b5d851a876..55f73d9b61e 100644 --- a/website/content/docs/builders/file.mdx +++ b/website/content/docs/builders/file.mdx @@ -58,7 +58,7 @@ Configuration options are organized below into two categories: required and optional. Within each category, the available options are alphabetized and described. -Any [communicator](/docs/templates/legacy_json_templates/communicator) defined is ignored. +Any [communicator](/packer/docs/templates/legacy_json_templates/communicator) defined is ignored. ### Required: diff --git a/website/content/docs/builders/index.mdx b/website/content/docs/builders/index.mdx index 6fff028c2fb..f4401058855 100644 --- a/website/content/docs/builders/index.mdx +++ b/website/content/docs/builders/index.mdx @@ -11,12 +11,12 @@ Builders create machines and generate images from those machines for various pla Packer has the following types of builders: -- [Plugin](/plugins): Each plugin has its own associated set of builders. For example, there are separate builders for EC2, VMware, VirtualBox, etc. -- [File](/docs/builders/file): The `file` builder creates an artifact from a file. -- [Null](/docs/builders/null): The `null` builder sets up an SSH connection and runs the provisioners. -- [Custom](/docs/plugins/creation/custom-builders): You can write new builders for new or existing platforms. -- [Community-Supported](/docs/builders/community-supported): The Packer community develops and maintains builders for several additional platforms. +- [Plugin](/packer/plugins): Each plugin has its own associated set of builders. For example, there are separate builders for EC2, VMware, VirtualBox, etc. +- [File](/packer/docs/builders/file): The `file` builder creates an artifact from a file. +- [Null](/packer/docs/builders/null): The `null` builder sets up an SSH connection and runs the provisioners. +- [Custom](/packer/docs/plugins/creation/custom-builders): You can write new builders for new or existing platforms. +- [Community-Supported](/packer/docs/builders/community-supported): The Packer community develops and maintains builders for several additional platforms. -Refer to the [`source`](/docs/templates/hcl_templates/blocks/source) block documentation to learn more about configuring builders in the Packer templating language. +Refer to the [`source`](/packer/docs/templates/hcl_templates/blocks/source) block documentation to learn more about configuring builders in the Packer templating language. diff --git a/website/content/docs/builders/null.mdx b/website/content/docs/builders/null.mdx index c1579adc196..2098fec67f4 100644 --- a/website/content/docs/builders/null.mdx +++ b/website/content/docs/builders/null.mdx @@ -58,4 +58,4 @@ build { ## Configuration Reference The null builder has no configuration parameters other than the -[communicator](/docs/templates/legacy_json_templates/communicator) settings. +[communicator](/packer/docs/templates/legacy_json_templates/communicator) settings. diff --git a/website/content/docs/commands/build.mdx b/website/content/docs/commands/build.mdx index bb5ba266321..60c2f7c8d1b 100644 --- a/website/content/docs/commands/build.mdx +++ b/website/content/docs/commands/build.mdx @@ -44,7 +44,7 @@ artifacts that are created will be outputted at the end of the build. - `ask` presents a prompt and waits for you to decide to clean up, abort, or retry the failed step. - `run-cleanup-provisioner` aborts and exits without any cleanup besides - the [error-cleanup-provisioner](/docs/templates/legacy_json_templates/provisioners#on-error-provisioner) if one is defined. + the [error-cleanup-provisioner](/packer/docs/templates/legacy_json_templates/provisioners#on-error-provisioner) if one is defined. `@include 'commands/only.mdx'` diff --git a/website/content/docs/commands/console.mdx b/website/content/docs/commands/console.mdx index bd2fe0480f3..f61a7a1bb66 100644 --- a/website/content/docs/commands/console.mdx +++ b/website/content/docs/commands/console.mdx @@ -116,7 +116,7 @@ $ echo {{timestamp}} | packer console templating ( or `{{..}}` calls ) will not work in HCL2 mode. Without a config file, `packer console` can be used to experiment with the -expression syntax and [built-in functions](/docs/templates/hcl_templates/functions). +expression syntax and [built-in functions](/packer/docs/templates/hcl_templates/functions). ### Starting diff --git a/website/content/docs/commands/hcl2_upgrade.mdx b/website/content/docs/commands/hcl2_upgrade.mdx index f18874cdf8d..baaee637d58 100644 --- a/website/content/docs/commands/hcl2_upgrade.mdx +++ b/website/content/docs/commands/hcl2_upgrade.mdx @@ -81,7 +81,7 @@ here is the list of calls that should get transformed: - `` {{ user `my_var` }} `` becomes `${var.my_var}`. - `` {{ env `my_var` }} `` becomes `${var.my_var}`. Packer HCL2 supports environment variables through input variables. See - [docs](/docs/templates/hcl_templates/variables#environment-variables) + [docs](/packer/docs/templates/hcl_templates/variables#environment-variables) for more info. - `{{ timestamp }}` becomes `${local.timestamp}`, the local variable will be created for all generated files. @@ -134,6 +134,6 @@ locals { ## Upgrading templates that use third-party community plugins If your template references a plugin that is not bundled with the main Packer -binary, you need to make sure that the [plugin is installed](/docs/plugins#installing-plugins) +binary, you need to make sure that the [plugin is installed](/packer/docs/plugins#installing-plugins) or you will get an `unknown builder type` error. Packer needs to load the plugin to transpose the template. diff --git a/website/content/docs/commands/init.mdx b/website/content/docs/commands/init.mdx index 1c130a368aa..52b72eb8151 100644 --- a/website/content/docs/commands/init.mdx +++ b/website/content/docs/commands/init.mdx @@ -7,12 +7,12 @@ page_title: packer init - Commands # `init` Command -> **Note:** Packer init does not work with legacy JSON templates. You can -upgrade your JSON config files to HCL using the [hcl2_upgrade](/docs/commands/hcl2_upgrade) command. +upgrade your JSON config files to HCL using the [hcl2_upgrade](/packer/docs/commands/hcl2_upgrade) command. -> **Note:** Packer init will only work with multi-component plugins -- that is plugins that are named `packer-plugin-*`. To install a single-component plugin -- that is `packer-provisioner-*`, `packer-builder-*`, etc. -- nothing changes, you will -have to [install the plugin manually](/docs/plugins#installing-plugins). +have to [install the plugin manually](/packer/docs/plugins#installing-plugins). The `packer init` command is used to download Packer plugin binaries. This is the first command that should be executed when working with a new or existing @@ -36,7 +36,7 @@ for the ones that are missing. `packer init -upgrade` will try to get the latest versions for all plugins. -Import a plugin using the [`required_plugin`](/docs/templates/hcl_templates/blocks/packer#specifying-plugin-requirements) +Import a plugin using the [`required_plugin`](/packer/docs/templates/hcl_templates/blocks/packer#specifying-plugin-requirements) block : ```hcl @@ -61,11 +61,11 @@ is `https://github.com/azr/packer-plugin-happycloud` for a plugin matching the v Packer init will install the latest found version matching the version selection in the `required_plugins` section. Make sure to set a correct [version constraint -string](/docs/templates/hcl_templates/blocks/packer#version-constraints). The +string](/packer/docs/templates/hcl_templates/blocks/packer#version-constraints). The plugins will be installed in the [Plugin -Directory](/docs/configure#packer-s-plugin-directory). +Directory](/packer/docs/configure#packer-s-plugin-directory). -See [Installing Plugins](/docs/plugins#installing-plugins) for more information on how plugin installation works. +See [Installing Plugins](/packer/docs/plugins#installing-plugins) for more information on how plugin installation works. ### Implicit required plugin diff --git a/website/content/docs/commands/inspect.mdx b/website/content/docs/commands/inspect.mdx index 2b4ab0b720b..9cebe60c53c 100644 --- a/website/content/docs/commands/inspect.mdx +++ b/website/content/docs/commands/inspect.mdx @@ -22,7 +22,7 @@ like what variables a template accepts, the builders it defines, the provisioners it defines and the order they'll run, and more. This command is extra useful when used with [machine-readable -output](/docs/commands) enabled. The command outputs the components +output](/packer/docs/commands) enabled. The command outputs the components in a way that is parseable by machines. The command doesn't validate the actual configuration of the various components diff --git a/website/content/docs/commands/plugins/index.mdx b/website/content/docs/commands/plugins/index.mdx index 382b791fda1..551cbff03b6 100644 --- a/website/content/docs/commands/plugins/index.mdx +++ b/website/content/docs/commands/plugins/index.mdx @@ -27,4 +27,4 @@ Subcommands: ## Related -- [`packer init`](/docs/commands/init) will install all required plugins. +- [`packer init`](/packer/docs/commands/init) will install all required plugins. diff --git a/website/content/docs/commands/plugins/install.mdx b/website/content/docs/commands/plugins/install.mdx index b5a931458e6..711bfc3469a 100644 --- a/website/content/docs/commands/plugins/install.mdx +++ b/website/content/docs/commands/plugins/install.mdx @@ -21,4 +21,4 @@ Usage: packer plugins install [] ## Related -- [`packer init`](/docs/commands/init) will install all required plugins. +- [`packer init`](/packer/docs/commands/init) will install all required plugins. diff --git a/website/content/docs/commands/plugins/installed.mdx b/website/content/docs/commands/plugins/installed.mdx index 2b0b330c2f2..164da29e079 100644 --- a/website/content/docs/commands/plugins/installed.mdx +++ b/website/content/docs/commands/plugins/installed.mdx @@ -18,4 +18,4 @@ Usage: packer plugins installed ## Related -- [`packer init`](/docs/commands/init) will install all required plugins. +- [`packer init`](/packer/docs/commands/init) will install all required plugins. diff --git a/website/content/docs/commands/plugins/remove.mdx b/website/content/docs/commands/plugins/remove.mdx index 8887df5112d..4a5ea6dbd52 100644 --- a/website/content/docs/commands/plugins/remove.mdx +++ b/website/content/docs/commands/plugins/remove.mdx @@ -21,4 +21,4 @@ Usage: packer plugins remove [] ## Related -- [`packer init`](/docs/commands/init) will install all required plugins. +- [`packer init`](/packer/docs/commands/init) will install all required plugins. diff --git a/website/content/docs/commands/plugins/required.mdx b/website/content/docs/commands/plugins/required.mdx index 25b16a64d24..38523108795 100644 --- a/website/content/docs/commands/plugins/required.mdx +++ b/website/content/docs/commands/plugins/required.mdx @@ -27,4 +27,4 @@ Usage: packer plugins required ## Related -- [`packer init`](/docs/commands/init) will install all required plugins. +- [`packer init`](/packer/docs/commands/init) will install all required plugins. diff --git a/website/content/docs/commands/validate.mdx b/website/content/docs/commands/validate.mdx index 562c501eceb..80637de4d63 100644 --- a/website/content/docs/commands/validate.mdx +++ b/website/content/docs/commands/validate.mdx @@ -10,7 +10,7 @@ page_title: packer validate - Commands # `validate` Command The `packer validate` Packer command is used to validate the syntax and -configuration of a [template](/docs/templates). The command will +configuration of a [template](/packer/docs/templates). The command will return a zero exit status on success, and a non-zero exit status on failure. Additionally, if a template doesn't validate, any error messages will be outputted. diff --git a/website/content/docs/communicators/index.mdx b/website/content/docs/communicators/index.mdx index 19506cf070f..d6564fa4c8e 100644 --- a/website/content/docs/communicators/index.mdx +++ b/website/content/docs/communicators/index.mdx @@ -11,16 +11,16 @@ Communicators are the mechanism Packer uses to upload files, execute scripts, etc. with the machine being created. Communicators are configured within the -[builder](/docs/templates/legacy_json_templates/builders) section. Packer currently supports +[builder](/packer/docs/templates/legacy_json_templates/builders) section. Packer currently supports three kinds of communicators: - `none` - No communicator will be used. If this is set, most provisioners also can't be used. -- [ssh](/docs/communicators/ssh) - An SSH connection will be established to the machine. This is +- [ssh](/packer/docs/communicators/ssh) - An SSH connection will be established to the machine. This is usually the default. -- [winrm](/docs/communicators/winrm) - A WinRM connection will be established. +- [winrm](/packer/docs/communicators/winrm) - A WinRM connection will be established. In addition to the above, some builders have custom communicators they can use. For example, the Docker builder has a "docker" communicator that uses diff --git a/website/content/docs/communicators/ssh.mdx b/website/content/docs/communicators/ssh.mdx index e2a7bd6895c..f3b48e528b3 100644 --- a/website/content/docs/communicators/ssh.mdx +++ b/website/content/docs/communicators/ssh.mdx @@ -9,7 +9,7 @@ page_title: Communicators - SSH Communicators are the mechanism Packer uses to upload files, execute scripts, etc. on the machine being created, and are configured within the -[builder](/docs/templates/legacy_json_templates/builders) section. +[builder](/packer/docs/templates/legacy_json_templates/builders) section. The SSH communicator does this by using the SSH protocol. It is the default communicator for a majority of builders. @@ -31,7 +31,7 @@ the Packer template. However, if you are building from a brand-new and unconfigured operating system image, you will almost always have to perform some extra work to configure SSH on the guest machine. For most operating system distributions, this work will -be performed by a [boot command](/plugins/builders/vmware/iso#boot-configuration) +be performed by a [boot command](/packer/plugins/builders/vmware/iso#boot-configuration) that references a file which provides answers to the normally-interactive questions you get asked when installing an operating system. The name of this file varies by operating system; some common examples are the "preseed" file @@ -42,7 +42,7 @@ rest of the documentation. If you are unfamiliar with how to use a preseed file for automatic bootstrapping of an image, please either take a look at our -[quick guides](/guides/automatic-operating-system-installs) to +[quick guides](/packer/guides/automatic-operating-system-installs) to image bootstrapping, or research automatic configuration for your specific guest operating system. Knowing how to automatically initalize your operating system is critical for being able to successfully use Packer. @@ -79,4 +79,4 @@ Packer supports the following MACs: - `hmac-sha2-256-etm@openssh.com` For more information on the ciphers that Packer supports, check the docs for -the [ssh_ciphers](/docs/communicators/ssh#ssh_ciphers) template option. +the [ssh_ciphers](/packer/docs/communicators/ssh#ssh_ciphers) template option. diff --git a/website/content/docs/communicators/winrm.mdx b/website/content/docs/communicators/winrm.mdx index 1d10f56ea54..103637205a3 100644 --- a/website/content/docs/communicators/winrm.mdx +++ b/website/content/docs/communicators/winrm.mdx @@ -28,7 +28,7 @@ refer to each builder's documentation for more information on how to supply the winrm configuration script. If you are unfamiliar with how to use an autounattend file, take a look at our -[quick guides](/guides/automatic-operating-system-installs); knowing +[quick guides](/packer/guides/automatic-operating-system-installs); knowing how to automatically initalize your operating system is critical for being able to successfully use Packer to build from an iso. @@ -182,10 +182,10 @@ provisioning step to make sure your image is secure. Most clouds allow you to provide a configuration script that runs when the instance is launched. In AWS, this is the -[user_data_file](/plugins/builders/amazon/ebs#user_data_file). In Google +[user_data_file](/packer/plugins/builders/amazon/ebs#user_data_file). In Google Cloud, this is provided using the `windows-startup-script-cmd` -[metadata](/plugins/builders/googlecompute#metadata) tag. -[Example](/plugins/builders/googlecompute#windows-example) +[metadata](/packer/plugins/builders/googlecompute#metadata) tag. +[Example](/packer/plugins/builders/googlecompute#windows-example) Essentially, these files are powershell or cmd scripts that configure winrm, without having to be wrapped in an Autounattend. Provide the script in the diff --git a/website/content/docs/configure.mdx b/website/content/docs/configure.mdx index a448541ac69..cce9f1b554b 100644 --- a/website/content/docs/configure.mdx +++ b/website/content/docs/configure.mdx @@ -89,16 +89,16 @@ configuration file. None of these are required, since all have defaults. - `builders`, `commands`, `post-processors`, and `provisioners` are objects that are used to install plugins. The details of how exactly these are set is covered in more detail in the [installing plugins documentation - page](/docs/plugins/install-plugins). It is instead recommended to use [HCL2 - `required_plugins`](/docs/templates/hcl_templates/blocks/packer#specifying-plugin-requirements) - and the [`packer init`](/docs/commands/init) command to install plugins; if + page](/packer/docs/plugins/install-plugins). It is instead recommended to use [HCL2 + `required_plugins`](/packer/docs/templates/hcl_templates/blocks/packer#specifying-plugin-requirements) + and the [`packer init`](/packer/docs/commands/init) command to install plugins; if you are using both, the `required_plugin` config will take precedence. ### HCP Packer Configuration You can configure both legacy JSON and HCL2 Packer templates to publish image metadata to an active HCP Packer registry. The HCP Packer registry helps you track information about machine images, clearly designate which images are appropriate for test and production environments, and query the right images to use in both Packer and Terraform configurations. -For complete configuration details and examples, refer to [Packer Template Configuration](https://cloud.hashicorp.com/docs/packer/store-image-metadata/template-configuration) in the HCP Packer documentation. +For complete configuration details and examples, refer to [Packer Template Configuration](/hcp/docs/packer/store-image-metadata/template-configuration) in the HCP Packer documentation. ## Full list of Environment Variables usable for Packer @@ -122,11 +122,11 @@ each can be found below: - `PACKER_LOG` - Setting this to any value other than "" (empty string) or "0" will enable the logger. See the [debugging - page](/docs/debugging). + page](/packer/docs/debugging). - `PACKER_LOG_PATH` - The location of the log file. Note: `PACKER_LOG` must be set for any logging to occur. See the [debugging - page](/docs/debugging). + page](/packer/docs/debugging). - `PACKER_NO_COLOR` - Setting this to any value will disable color in the terminal. diff --git a/website/content/docs/datasources/hcp/hcp-packer-image.mdx b/website/content/docs/datasources/hcp/hcp-packer-image.mdx index 634d93d08ae..8e1bf822337 100644 --- a/website/content/docs/datasources/hcp/hcp-packer-image.mdx +++ b/website/content/docs/datasources/hcp/hcp-packer-image.mdx @@ -19,7 +19,7 @@ The `HCP Packer Image` Data Source retrieves information about an image from the HCP Packer registry. This information can be used to provide a source image to various Packer builders. -To get started with HCP Packer, refer to the [HCP Packer documentation](https://cloud.hashicorp.com/docs/packer) or try the [Get Started with HCP Packer tutorials](https://learn.hashicorp.com/collections/packer/hcp-get-started). +To get started with HCP Packer, refer to the [HCP Packer documentation](/hcp/docs/packer) or try the [Get Started with HCP Packer tutorials](/packer/tutorials/hcp-get-started). ~> **Note:** You will receive an error if you try to reference metadata from a deactivated or deleted registry. An administrator can manually deactivate or delete a registry, and HCP Packer automatically deactivates registries with billing issues. Contact [HashiCorp Support](https://support.hashicorp.com/) with questions. diff --git a/website/content/docs/datasources/hcp/hcp-packer-iteration.mdx b/website/content/docs/datasources/hcp/hcp-packer-iteration.mdx index 70a785467d9..38c6125baee 100644 --- a/website/content/docs/datasources/hcp/hcp-packer-iteration.mdx +++ b/website/content/docs/datasources/hcp/hcp-packer-iteration.mdx @@ -19,7 +19,7 @@ The `HCP Packer Iteration` Data Source retrieves information about an iteration from the HCP Packer registry. This information can be used to query HCP for a source image for various Packer builders. -To get started with HCP Packer, refer to the [HCP Packer documentation](https://cloud.hashicorp.com/docs/packer) or try the [Get Started with HCP Packer tutorials](https://learn.hashicorp.com/collections/packer/hcp-get-started). +To get started with HCP Packer, refer to the [HCP Packer documentation](/hcp/docs/packer) or try the [Get Started with HCP Packer tutorials](/packer/tutorials/hcp-get-started). ~> **Note:** You will receive an error if you try to reference metadata from a deactivated or deleted registry. An administrator can manually deactivate or delete a registry, and HCP Packer automatically deactivates registries with billing issues. Contact [HashiCorp Support](https://support.hashicorp.com/) with questions. diff --git a/website/content/docs/datasources/hcp/index.mdx b/website/content/docs/datasources/hcp/index.mdx index 22af507fffc..989d3d861a1 100644 --- a/website/content/docs/datasources/hcp/index.mdx +++ b/website/content/docs/datasources/hcp/index.mdx @@ -26,9 +26,9 @@ configurations. Packer has two data sources that work together to retrieve information from the HCP Packer registry: -- [hcp-packer-iteration](/docs/datasources/hcp/hcp-packer-iteration) - +- [hcp-packer-iteration](/packer/docs/datasources/hcp/hcp-packer-iteration) - retrieves information about an iteration in HCP Packer registry -- [hcp-packer-image](/docs/datasources/hcp/hcp-packer-image) - retrieves +- [hcp-packer-image](/packer/docs/datasources/hcp/hcp-packer-image) - retrieves information about a specific image created in the HCP Packer registry These data sources are intended to be used together to determine source images diff --git a/website/content/docs/datasources/index.mdx b/website/content/docs/datasources/index.mdx index ed7e0e7242e..cf70bde28cf 100644 --- a/website/content/docs/datasources/index.mdx +++ b/website/content/docs/datasources/index.mdx @@ -9,7 +9,7 @@ page_title: Data Sources Data sources let Packer fetch data to use in a template, including information defined outside of Packer. -Refer to the [`data`](/docs/templates/hcl_templates/datasources) block documentation to learn more about working with data sources. The documentation also contains details about each type of data source. +Refer to the [`data`](/packer/docs/templates/hcl_templates/datasources) block documentation to learn more about working with data sources. The documentation also contains details about each type of data source. -> **Note:** Data sources is a feature exclusively available to HCL2 templates included in Packer `v1.7.0` (and newer). diff --git a/website/content/docs/hcp/index.mdx b/website/content/docs/hcp/index.mdx index 4274f1193c7..de58397e8bf 100644 --- a/website/content/docs/hcp/index.mdx +++ b/website/content/docs/hcp/index.mdx @@ -13,11 +13,11 @@ The HCP Packer registry stores metadata about your images, including when they w You can use HCP Packer with both JSON and HCL2 templates. If you are using JSON templates, we recommend getting started with the [HCP Packer environment variables](#hcp-packer-environment-variables) and then migrating to HCL when possible. -This page summarizes the methods you can use to connect JSON and HCL2 templates to the HCP Packer registry. It also provides a full list of HCP Packer environment variables. Refer to the [Packer Template Configuration](https://cloud.hashicorp.com/docs/packer/store-image-metadata/packer-template-configuration) page in the HCP Packer documentation for full configuration details and examples. +This page summarizes the methods you can use to connect JSON and HCL2 templates to the HCP Packer registry. It also provides a full list of HCP Packer environment variables. Refer to the [Packer Template Configuration](/hcp/docs/packer/store-image-metadata/packer-template-configuration) page in the HCP Packer documentation for full configuration details and examples. ### HCP Packer Environment Variables -The following environment variables let you configure Packer to push image metadata to an active registry without changing your template. You can use environment variables with both JSON and HCL2 templates. Refer to [Basic Configuration With Environment Variables](https://cloud.hashicorp.com/docs/packer/store-image-metadata/packer-template-configuration#basic-configuration-with-environment-variables) in the HCP Packer documentation for complete instructions and examples. +The following environment variables let you configure Packer to push image metadata to an active registry without changing your template. You can use environment variables with both JSON and HCL2 templates. Refer to [Basic Configuration With Environment Variables](/hcp/docs/packer/store-image-metadata/packer-template-configuration#basic-configuration-with-environment-variables) in the HCP Packer documentation for complete instructions and examples. You must set the following environment variables to enable Packer to push metadata to a registry. @@ -37,9 +37,9 @@ You can set these additional environment variables to control how metadata is pu The only metadata that Packer can infer from a template with the basic configuration are the build name and build fingerprint. For HCL2 templates, we recommend adding the `hcp_packer_registry` block to your template so that you can customize the metadata that Packer sends to the registry. -The `hcp_packer_registry` block is only available for HCL2 Packer templates. There is no [`PACKER_CONFIG`](docs/configure#packer-s-config-file) equivalent for JSON. +The `hcp_packer_registry` block is only available for HCL2 Packer templates. There is no [`PACKER_CONFIG`](/packer/docs/configure#packer-s-config-file) equivalent for JSON. -Refer to [`hcp_packer_registry`](docs/templates/hcl_templates/blocks/build/hcp_packer_registry) for a full list of configuration arguments. Refer to [Custom Configuration](https://cloud.hashicorp.com/docs/packer/store-image-metadata/packer-template-configuration#custom-configuration) in the HCP Packer documentation for information and examples about how to customize image metadata. +Refer to [`hcp_packer_registry`](/packer/docs/templates/hcl_templates/blocks/build/hcp_packer_registry) for a full list of configuration arguments. Refer to [Custom Configuration](/hcp/docs/packer/store-image-metadata/packer-template-configuration#custom-configuration) in the HCP Packer documentation for information and examples about how to customize image metadata. ### Iteration Fingerprinting diff --git a/website/content/docs/index.mdx b/website/content/docs/index.mdx index edf4ca6b9e8..ad32aa8a02c 100644 --- a/website/content/docs/index.mdx +++ b/website/content/docs/index.mdx @@ -8,10 +8,10 @@ page_title: Documentation [Packer](https://www.packer.io/) is an open source tool that enables you to create identical machine images for multiple platforms from a single source template. A common use case is creating "golden images" that teams across an organization can use in cloud infrastructure. -To install Packer and learn the standard Packer workflow, try the [Get Started tutorials](https://learn.hashicorp.com/packer). +To install Packer and learn the standard Packer workflow, try the [Get Started tutorials](/packer/tutorials). ## HCP Packer The HCP Packer registry stores metadata about your images. You can use the registry to track information about golden images from your Packer builds, clearly designate which images are appropriate for test and production environments, and query for the right images to use in both Packer and Terraform configurations. -To get started, visit the [HCP Packer documentation](https://cloud.hashicorp.com/docs/packer) or try the [Get Started with HCP Packer tutorials](https://learn.hashicorp.com/collections/packer/hcp-get-started). +To get started, visit the [HCP Packer documentation](/hcp/docs/packer) or try the [Get Started with HCP Packer tutorials](/packer/tutorials/hcp-get-started). diff --git a/website/content/docs/intro/index.mdx b/website/content/docs/intro/index.mdx index b9c4ebb1a33..99f8175943e 100644 --- a/website/content/docs/intro/index.mdx +++ b/website/content/docs/intro/index.mdx @@ -12,7 +12,7 @@ description: |- Welcome to the world of Packer! This introduction guide will show you what Packer is, explain why it exists, the benefits it has to offer, and how you can get started with it. If you're already familiar with Packer, the -[documentation](/docs) provides more of a reference for all available +[documentation](/packer/docs) provides more of a reference for all available features. ## What is Packer? diff --git a/website/content/docs/intro/use-cases.mdx b/website/content/docs/intro/use-cases.mdx index d4f72f3a391..e6e3c63c673 100644 --- a/website/content/docs/intro/use-cases.mdx +++ b/website/content/docs/intro/use-cases.mdx @@ -33,7 +33,7 @@ stability and testability to infrastructure changes. Packer helps [keep development, staging, and production as similar as possible](http://www.12factor.net/dev-prod-parity). Packer can be used to generate images for multiple platforms at the same time. So if you use AWS for -production and VMware (perhaps with [Vagrant](https://www.vagrantup.com)) for +production and VMware (perhaps with [Vagrant](https://www.vagrantup.com/)) for development, you can generate both an AMI and a VMware machine using Packer at the same time from the same template. diff --git a/website/content/docs/partnerships.mdx b/website/content/docs/partnerships.mdx index 1eefff7e359..2e87dfdb7c8 100644 --- a/website/content/docs/partnerships.mdx +++ b/website/content/docs/partnerships.mdx @@ -31,7 +31,7 @@ The diagram below depicts the key Packer integration categories and types. Main Packer categories for partners to integrate with include: - **Data Sources** - - Data Sources allow users to retrieve values from a remote API and store them as variables in the Packer configuration template. An example is the [AWS secrets manager](/plugins/datasources/amazon/secretsmanager) data source. + - Data Sources allow users to retrieve values from a remote API and store them as variables in the Packer configuration template. An example is the [AWS secrets manager](/packer/plugins/datasources/amazon/secretsmanager) data source. - **Builders** - Builders manage the VM lifecycle. They manage launching a VM/instance, running provisioners against that instance, shutting the instance down, and saving an artifact image from that instance. Your builder handles all of the setup and cleanup costs associated with creating the output image artifact. - **Provisioners** @@ -68,7 +68,7 @@ While not mandatory, HashiCorp encourages vendors to sign an MNDA (Mutual Non-Di In an effort to support our self-serve model we’ve included links to resources, documentation, examples and best practices to guide you through the Packer integration development and testing process. -- [Writing vendor extension guide](/docs/plugins/creation) +- [Writing vendor extension guide](/packer/docs/plugins/creation) - Sample development implemented by a [partner](https://github.com/exoscale/packer-plugin-exoscale) - [Scaffolding plugin repository](https://github.com/hashicorp/packer-plugin-scaffolding) to help bootstrap a new contribution: - Contributing to Packer [guidelines](https://github.com/hashicorp/packer/blob/main/.github/CONTRIBUTING.md) @@ -83,22 +83,22 @@ Packer requires all code-level integrations to be written in the [Go](https://go Data Sources -- [Custom Data Sources documentation](/docs/plugins/creation/custom-datasources) +- [Custom Data Sources documentation](/packer/docs/plugins/creation/custom-datasources) - [Example Data Source](https://github.com/hashicorp/packer-plugin-hashicups/tree/main/datasource) Builders -- [Custom Builders documentation](/docs/plugins/creation/custom-builders) +- [Custom Builders documentation](/packer/docs/plugins/creation/custom-builders) - [Example Builder](https://github.com/hashicorp/packer-plugin-hashicups/tree/main/builder/order) Provisioners -- [Custom Provisioners documentation](/docs/plugins/creation/custom-provisioners) +- [Custom Provisioners documentation](/packer/docs/plugins/creation/custom-provisioners) - [Example Provisioner](https://github.com/hashicorp/packer-plugin-hashicups/tree/main/provisioner/toppings) Post-Processors -- [Custom Post-Processors documentation](/docs/plugins/creation/custom-post-processors) +- [Custom Post-Processors documentation](/packer/docs/plugins/creation/custom-post-processors) - [Example Post-Processor](https://github.com/hashicorp/packer-plugin-hashicups/tree/main/post-processor/receipt) Packer-Plugin-SDK @@ -109,12 +109,12 @@ Packer-Plugin-SDK During the review process, HashiCorp will provide feedback on the newly developed integration. This is an important step to allow HashiCorp to review and verify your Packer integration. Please send the integration code and other relevant logs for verification to: [Packer-integration-dev@hashicorp.com](mailto:packer-integration-dev@hashicorp.com). -In order to document your plugins with Packer, please submit a GitHub pull request (PR) against the [Packer project](https://github.com/hashicorp/packer). See [Registering Plugin Documentation](/docs/plugins/creation#registering-plugin-documentation) for instructions on how to register your remote plugin documentation with Packer. +In order to document your plugins with Packer, please submit a GitHub pull request (PR) against the [Packer project](https://github.com/hashicorp/packer). See [Registering Plugin Documentation](/packer/docs/plugins/creation#registering-plugin-documentation) for instructions on how to register your remote plugin documentation with Packer. The review process can take a while to complete and may require some iterations through the code to address any problems identified by the HashiCorp team. #### 5. Release -At this stage, it is expected that the integration is fully complete, the necessary documentation has been written, the acceptance tests have all passed, and that HashiCorp has reviewed the integration. Once the plugin has been validated and accepted by HashiCorp, the plugin can be hosted on GitHub so it can easily be [downloaded then installed within Packer](/docs/plugins/creation#creating-a-github-release). +At this stage, it is expected that the integration is fully complete, the necessary documentation has been written, the acceptance tests have all passed, and that HashiCorp has reviewed the integration. Once the plugin has been validated and accepted by HashiCorp, the plugin can be hosted on GitHub so it can easily be [downloaded then installed within Packer](/packer/docs/plugins/creation#creating-a-github-release). Once the integration has been released the vendor is requested to sign the HashiCorp Technology Partner Agreement so that we can have their integration be listed on the HashiCorp website. diff --git a/website/content/docs/plugins/creation/custom-builders.mdx b/website/content/docs/plugins/creation/custom-builders.mdx index 03e8ff2e853..efad53accd4 100644 --- a/website/content/docs/plugins/creation/custom-builders.mdx +++ b/website/content/docs/plugins/creation/custom-builders.mdx @@ -8,9 +8,9 @@ page_title: Custom Builders - Extending # Custom Builders Packer builders are responsible for creating a virtual machine, setting the virtual machine up for provisioning, and then turning that provisioned virtual machine into a machine image. We officially maintain and distribute several builders, including builders to create images on Amazon EC2, VMware, Google -Compute Engine, and many more. Refer to the [Builders](/docs/builders) documentation for details. +Compute Engine, and many more. Refer to the [Builders](/packer/docs/builders) documentation for details. -This page explains how to use the Packer plugin interface to write custom builders. If you want your builder to support HashiCorp Cloud Platform (HCP) Packer, you should also review the [HCP Packer Support](/docs/plugins/creation/hcp-support) documentation. +This page explains how to use the Packer plugin interface to write custom builders. If you want your builder to support HashiCorp Cloud Platform (HCP) Packer, you should also review the [HCP Packer Support](/packer/docs/plugins/creation/hcp-support) documentation. ~> **Warning:** This is an advanced topic that requires strong knowledge of Packer and Packer plugins. @@ -18,7 +18,7 @@ This page explains how to use the Packer plugin interface to write custom builde We recommend reviewing the following resources before you begin development: -- [Developing Plugins - Overview](/docs/plugins/creation) +- [Developing Plugins - Overview](/packer/docs/plugins/creation) - The [Go](https://go.dev/) language. You must write custom plugins in Go, so this guide assumes you are familiar with the language. ## The Interface @@ -39,7 +39,7 @@ type Builder interface { This method returns a hcldec.ObjectSpec, which is a spec necessary for using HCL2 templates with Packer. For information on how to use and implement this function, check our -[object spec docs](/guides/hcl/component-object-spec) +[object spec docs](/packer/guides/hcl/component-object-spec) ### The "Prepare" Method @@ -204,8 +204,8 @@ but it is recommended to avoid using them if you can. Packer JSON makes it possible to provide custom template engine variables to be shared with provisioners and post-processors using the `build` function. -JSON template `build` docs are [here](/docs/templates/legacy_json_templates/engine#build) -and HCL template build docs are [here](/docs/templates/hcl_templates/contextual-variables#build-variables). +JSON template `build` docs are [here](/packer/docs/templates/legacy_json_templates/engine#build) +and HCL template build docs are [here](/packer/docs/templates/hcl_templates/contextual-variables#build-variables). As of Packer v1.5.0, builder Prepare() methods return a list of custom variables which we call `generated data`. We use that list of variables to generate a @@ -306,5 +306,5 @@ order to make it available to the Packer core as a plugin. We have created a [scaffolding](https://github.com/hashicorp/packer-plugin-scaffolding/blob/main/builder/scaffolding/builder.go) repo to give you an idea of the relationship between the builder implementation and the server implementation within a repository, and then read -[basics of how Plugins work](/docs/plugins/install-plugins), which breaks down all the +[basics of how Plugins work](/packer/docs/plugins/install-plugins), which breaks down all the server details. diff --git a/website/content/docs/plugins/creation/custom-datasources.mdx b/website/content/docs/plugins/creation/custom-datasources.mdx index 2e297afcf9c..1111ac20c93 100644 --- a/website/content/docs/plugins/creation/custom-datasources.mdx +++ b/website/content/docs/plugins/creation/custom-datasources.mdx @@ -7,7 +7,7 @@ page_title: Custom Data Sources - Extending # Custom Data Sources -Packer data sources let Packer fetch data to use within the configuration, including information defined outside of Packer. For example, the [amazon-ami data source](/plugins/datasources/amazon/ami), outputs the data from an Amazon AMI. +Packer data sources let Packer fetch data to use within the configuration, including information defined outside of Packer. For example, the [amazon-ami data source](/packer/plugins/datasources/amazon/ami), outputs the data from an Amazon AMI. Data Source plugins implement the `packersdk.Datasource` interface and are registered within a plugin Set with `set.RegisterDatasource(...)` function and served using the `set.Run()`. @@ -18,7 +18,7 @@ with `set.RegisterDatasource(...)` function and served using the `set.Run()`. We recommend reviewing the following resources before you begin development: -- [Developing Plugins - Overview](/docs/plugins/creation) +- [Developing Plugins - Overview](/packer/docs/plugins/creation) - The [Go](https://go.dev/) language. You must write custom plugins in Go, so this guide assumes you are familiar with the language. ## The Interface @@ -42,11 +42,11 @@ type Datasource interface { This method returns a hcldec.ObjectSpec, which is a spec necessary for using HCL2 templates with Packer. For information on how to use and implement this function, check our -[object spec docs](/guides/hcl/component-object-spec) +[object spec docs](/packer/guides/hcl/component-object-spec) ### The "OutputSpec" Method -This method returns a [hcldec.ObjectSpec](/guides/hcl/component-object-spec) of the data source output. +This method returns a [hcldec.ObjectSpec](/packer/guides/hcl/component-object-spec) of the data source output. The object spec can be generated using the command [`packer-sdc mapstructure-to-hcl2`](https://github.com/hashicorp/packer-plugin-sdk/tree/main/cmd/packer-sdc) just like the configuration spec for the `ConfigSpec` method. diff --git a/website/content/docs/plugins/creation/custom-post-processors.mdx b/website/content/docs/plugins/creation/custom-post-processors.mdx index 734abb785ba..4a20496d2a7 100644 --- a/website/content/docs/plugins/creation/custom-post-processors.mdx +++ b/website/content/docs/plugins/creation/custom-post-processors.mdx @@ -20,14 +20,14 @@ those files, and returning an artifact with a single ID: the URL of the upload. Post-processor plugins implement the [`packer.PostProcessor`](https://pkg.go.dev/github.com/hashicorp/packer-plugin-sdk/packer#PostProcessor) interface and are served using the `plugin.ServePostProcessor` function. -This page explains how to implement and serve custom post-processors. If you want your post-processor to support HashiCorp Cloud Platform (HCP) Packer, you should also review the [HCP Packer Support](/docs/plugins/creation/hcp-support) documentation. +This page explains how to implement and serve custom post-processors. If you want your post-processor to support HashiCorp Cloud Platform (HCP) Packer, you should also review the [HCP Packer Support](/packer/docs/plugins/creation/hcp-support) documentation. ~> **Warning:** This is an advanced topic that requires strong knowledge of Packer and Packer plugins. ## Before You Begin We recommend reviewing the following resources before you begin development: -- [Developing Plugins - Overview](/docs/plugins/creation) +- [Developing Plugins - Overview](/packer/docs/plugins/creation) - The [Go](https://go.dev/) language. You must write custom plugins in Go, so this guide assumes you are familiar with the language. ## The Interface @@ -50,7 +50,7 @@ type PostProcessor interface { This method returns a hcldec.ObjectSpec, which is a spec necessary for using HCL2 templates with Packer. For information on how to use and implement this function, check our -[object spec docs](/guides/hcl/component-object-spec) +[object spec docs](/packer/guides/hcl/component-object-spec) ### The "Configure" Method diff --git a/website/content/docs/plugins/creation/custom-provisioners.mdx b/website/content/docs/plugins/creation/custom-provisioners.mdx index 1947d793497..30bb8312a2c 100644 --- a/website/content/docs/plugins/creation/custom-provisioners.mdx +++ b/website/content/docs/plugins/creation/custom-provisioners.mdx @@ -14,7 +14,7 @@ page_title: Custom Provisioners - Extending # Custom Provisioners Packer provisioners install and configure software into a running machine prior to turning that machine into an image. For example, the [shell -provisioner](/docs/provisioners/shell), which runs shell scripts within +provisioner](/packer/docs/provisioners/shell), which runs shell scripts within the machines. Provisioner plugins implement the [`packer.Provisioner`](https://pkg.go.dev/github.com/hashicorp/packer-plugin-sdk/packer#Provisioner) interface and are served @@ -25,7 +25,7 @@ using the `plugin.ServeProvisioner` function. ## Before You Begin We recommend reviewing the following resources before you begin development: -- [Developing Plugins - Overview](/docs/plugins/creation) +- [Developing Plugins - Overview](/packer/docs/plugins/creation) - The [Go](https://go.dev/) language. You must write custom plugins in Go, so this guide assumes you are familiar with the language. ## The Interface @@ -74,7 +74,7 @@ may be displayed to the user before anything actually happens. This method returns a hcldec.ObjectSpec, which is a spec necessary for using HCL2 templates with Packer. For information on how to use and implement this function, check our -[object spec docs](/guides/hcl/component-object-spec) +[object spec docs](/packer/guides/hcl/component-object-spec) ### The "Provision" Method diff --git a/website/content/docs/plugins/creation/hcp-support.mdx b/website/content/docs/plugins/creation/hcp-support.mdx index eb5d469b8b4..ed65ae15aa6 100644 --- a/website/content/docs/plugins/creation/hcp-support.mdx +++ b/website/content/docs/plugins/creation/hcp-support.mdx @@ -9,7 +9,7 @@ page_title: HCP Packer Support ~> **Note:** HCP Packer is under active development, and we suggest plugin maintainers to keep up with the SDK changes for more on HCP Packer support. -This page explains how to update a custom plugin so that it can publish image metadata to the [HCP Packer registry](https://cloud.hashicorp.com/docs/packer). Refer to [Custom Builders](/docs/plugins/creation/custom-builders) and [Custom Post-Processors](/docs/plugins/creation/custom-post-processors) for details about creating an external Packer plugin. +This page explains how to update a custom plugin so that it can publish image metadata to the [HCP Packer registry](/hcp/docs/packer). Refer to [Custom Builders](/packer/docs/plugins/creation/custom-builders) and [Custom Post-Processors](/packer/docs/plugins/creation/custom-post-processors) for details about creating an external Packer plugin. Before pushing metadata to the HCP Packer registry, Packer uses the [`par.artifact.metadata` key](https://pkg.go.dev/github.com/hashicorp/packer-plugin-sdk/packer/registry/image#pkg-constants) to query a builder artifact for the image metadata that a particular component would like to have stored in the registry. @@ -111,5 +111,5 @@ The following plugins currently support HCP Packer and are great references for ## HCP Packer To get to know HCP Packer, visit the -[HCP Packer documentation](https://cloud.hashicorp.com/docs/packer) or try the -[Get Started with HCP Packer tutorials](https://learn.hashicorp.com/collections/packer/hcp-get-started). +[HCP Packer documentation](/hcp/docs/packer) or try the +[Get Started with HCP Packer tutorials](/packer/tutorials/hcp-get-started). diff --git a/website/content/docs/plugins/creation/index.mdx b/website/content/docs/plugins/creation/index.mdx index 93b265234c1..32537f160d3 100644 --- a/website/content/docs/plugins/creation/index.mdx +++ b/website/content/docs/plugins/creation/index.mdx @@ -9,7 +9,7 @@ page_title: Extending # Developing Plugins Packer is extensible and supports plugins that let you -create and use custom builders, provisioners, post-processors, and data sources. This page explains how to develop Packer plugins. Before you begin, we recommend reviewing the Packer documentation and the instructions for [installing external plugins](/docs/plugins/install-plugins). +create and use custom builders, provisioners, post-processors, and data sources. This page explains how to develop Packer plugins. Before you begin, we recommend reviewing the Packer documentation and the instructions for [installing external plugins](/packer/docs/plugins/install-plugins). ~> **Warning** This is an advanced topic. You should have strong knowledge of Packer before you start writing plugins. @@ -146,7 +146,7 @@ because the `packer init` command only supports multi-component plugins. Next, build your plugin as you would any other Go application. The resulting binary is the plugin that can be installed using -[standard installation procedures](/docs/plugins#installing-plugins). +[standard installation procedures](/packer/docs/plugins#installing-plugins). This documentation explains how to implement each type of plugin interface: builders, data sources, provisioners, and post-processors. @@ -212,20 +212,20 @@ Here's what you need to create releases using GitHub Actions: releaser is working. The tag must be a valid [Semantic Version](https://semver.org/) preceded with a `v`. Once the tag is pushed, the github actions you just configured will automatically build release binaries that Packer can download using `packer init`. For more details on how to install a plugin using `packer init`, see the - [init docs](/docs/commands/init). + [init docs](/packer/docs/commands/init). ## Registering Plugin Documentation ~> Note: Registering a remote plugin's plugin documentation requires the use of [Packer's plugin docs configuration](https://github.com/hashicorp/packer-plugin-scaffolding/tree/main/docs). `packer init` allows users to require and install remote Packer plugins, those not bundled with Packer core, that have been published to GitHub automatically. -To help with the discovery of remote Packer plugins on GitHub, plugins maintainers can choose to register plugin documentation for each component directly on the [Packer Documentation Page](https://packer.io/docs). +To help with the discovery of remote Packer plugins on GitHub, plugins maintainers can choose to register plugin documentation for each component directly on the [Packer Documentation Page](/packer/docs). The registration process requires the creation of a `docs.zip` file archive containing the `.mdx` files for each of the plugin components in the remote plugin's repository. A working example can be seen at the [packer-plugin-docker repository](https://github.com/hashicorp/packer-plugin-docker/releases/latest). Once in place the remote plugin can be added to Packer's website builds by opening a pull-request against [hashicorp/packer](https://github.com/hashicorp/packer), with the needed configuration for pulling in the remote documentation. -Remote plugins will have their components listed under the respected types (i.e builders, provisioners, etc) using the names specified in the remote block configuration, and labeled with their respective [tier and namespace](/docs/plugins#tiers-and-namespaces). +Remote plugins will have their components listed under the respected types (i.e builders, provisioners, etc) using the names specified in the remote block configuration, and labeled with their respective [tier and namespace](/packer/docs/plugins#tiers-and-namespaces). To register a plugin follow one of the following setups diff --git a/website/content/docs/plugins/index.mdx b/website/content/docs/plugins/index.mdx index 513198b3c00..4a11840d1b9 100644 --- a/website/content/docs/plugins/index.mdx +++ b/website/content/docs/plugins/index.mdx @@ -15,7 +15,7 @@ During a `packer build`, the process list shows `packer-` prefixed applications. The Packer binary has a set of built-in plugins that it can find and run automatically. You can also define a list of external plugins in your template for Packer to run and communicate with throughout the build. These external plugins extend Packer functionality without modifying the core source code. Refer to the following plugin documentation: -- **Built-in Plugins:** Use [builders](/docs/builders) to create machines and images, [data sources](/docs/datasources) to fetch data, [provisioners](/docs/provisioners) to install and configure machine images, and [post-processors](/docs/post-processors) to perform additional tasks after provisioning -- **External Plugins:** Review the documentation for [available external plugins](/plugins) not included with the Packer binary -- **Installing Plugins:** [Installation Guides](/docs/plugins/install-plugins) to add external plugins to your Packer template and install the binaries -- **Developing Plugins:** Get started [creating custom external plugins](/docs/plugins/creation) \ No newline at end of file +- **Built-in Plugins:** Use [builders](/packer/docs/builders) to create machines and images, [data sources](/packer/docs/datasources) to fetch data, [provisioners](/packer/docs/provisioners) to install and configure machine images, and [post-processors](/packer/docs/post-processors) to perform additional tasks after provisioning +- **External Plugins:** Review the documentation for [available external plugins](/packer/plugins) not included with the Packer binary +- **Installing Plugins:** [Installation Guides](/packer/docs/plugins/install-plugins) to add external plugins to your Packer template and install the binaries +- **Developing Plugins:** Get started [creating custom external plugins](/packer/docs/plugins/creation) \ No newline at end of file diff --git a/website/content/docs/plugins/install-plugins.mdx b/website/content/docs/plugins/install-plugins.mdx index 4e5c551655b..86ec7c5c15f 100644 --- a/website/content/docs/plugins/install-plugins.mdx +++ b/website/content/docs/plugins/install-plugins.mdx @@ -11,7 +11,7 @@ Packer plugins are separate, standalone applications that perform tasks during e You do not need to install the builder, provisioner, or post-processor components that ship with the Packer binary. Packer automatically knows how to find and launch these built-in plugins. -This page explains how to install custom external plugins. Refer to [External Plugins](/plugins) for a list of available plugins and their documentation. +This page explains how to install custom external plugins. Refer to [External Plugins](/packer/plugins) for a list of available plugins and their documentation. ## Installation Guides @@ -32,10 +32,10 @@ architecture, contact your maintainer to request an upgrade. ## Create a required_plugins block 1. Add a - [`required_plugins`](/docs/templates/hcl_templates/blocks/packer#specifying-plugin-requirements) - block to your [packer block](/docs/templates/hcl_templates/blocks/packer). Each block will tell Packer what version(s) of a + [`required_plugins`](/packer/docs/templates/hcl_templates/blocks/packer#specifying-plugin-requirements) + block to your [packer block](/packer/docs/templates/hcl_templates/blocks/packer). Each block will tell Packer what version(s) of a particular plugin can be installed. Make sure to set a valid [version - constraint string](/docs/templates/hcl_templates/blocks/packer#version-constraints). + constraint string](/packer/docs/templates/hcl_templates/blocks/packer#version-constraints). Here is an example `required_plugins` block: @@ -54,7 +54,7 @@ packer { } ``` -2. Run [`packer init`](/docs/commands/init) from your project directory (the +2. Run [`packer init`](/packer/docs/commands/init) from your project directory (the directory containing your Packer templates) to install all missing plugin binaries. Given the above example, Packer will try to look for a GitHub repository owned by user or organization `azr` named @@ -171,7 +171,7 @@ will avoid conflicting with other plugins for other tools, like Terraform. --> The [`packer plugins`](/docs/commands/plugins) command allows to install plugins without going through +-> The [`packer plugins`](/packer/docs/commands/plugins) command allows to install plugins without going through `init`. For manual installation of plugin binaries, without the `packer plugins` command, please continue reading. The easiest way to manually install a plugin is to name it correctly, then place diff --git a/website/content/docs/post-processors/checksum.mdx b/website/content/docs/post-processors/checksum.mdx index 15c0b9e155a..0f8056c64b5 100644 --- a/website/content/docs/post-processors/checksum.mdx +++ b/website/content/docs/post-processors/checksum.mdx @@ -25,9 +25,9 @@ verify it later. After computes checksum for artifacts, you can use new artifacts with other post-processors like -[artifice](/docs/post-processors/artifice), -[compress](/docs/post-processors/compress), -[docker-push](/plugins/post-processors/docker/docker-push), or +[artifice](/packer/docs/post-processors/artifice), +[compress](/packer/docs/post-processors/compress), +[docker-push](/packer/plugins/post-processors/docker/docker-push), or a third-party post-processor. ## Basic example @@ -74,7 +74,7 @@ Optional parameters: `packer_{{.BuildName}}_{{.BuilderType}}_{{.ChecksumType}}.checksum`. For example, if you had a builder named `database`, you might see the file written as `packer_database_docker_md5.checksum`. This is treated as a - [template engine](/docs/templates/legacy_json_templates/engine). Therefore, you + [template engine](/packer/docs/templates/legacy_json_templates/engine). Therefore, you may use user variables and template functions in this field. The following special variables are also available to use in the output template: diff --git a/website/content/docs/post-processors/community-supported.mdx b/website/content/docs/post-processors/community-supported.mdx index c3e2e1f8f11..1be070e2fa2 100644 --- a/website/content/docs/post-processors/community-supported.mdx +++ b/website/content/docs/post-processors/community-supported.mdx @@ -11,6 +11,6 @@ page_title: Community - Post-Processors The following post-processors are developed and maintained by various members of the Packer community, not by HashiCorp. For more information on how to use community -post-processors, see our docs on [extending Packer](/docs/plugins/creation). +post-processors, see our docs on [extending Packer](/packer/docs/plugins/creation). @include 'post-processors/community_post-processors.mdx' diff --git a/website/content/docs/post-processors/compress.mdx b/website/content/docs/post-processors/compress.mdx index c9311a3322f..0a45ad171d2 100644 --- a/website/content/docs/post-processors/compress.mdx +++ b/website/content/docs/post-processors/compress.mdx @@ -31,7 +31,7 @@ you will need to specify the `output` option. packer defaults to `.tar.gz` behavior but will not change the filename. This is treated as a - [template engine](/docs/templates/legacy_json_templates/engine). Therefore, you + [template engine](/packer/docs/templates/legacy_json_templates/engine). Therefore, you may use user variables and template functions in this field. The following special variables are also available to use in the output template: diff --git a/website/content/docs/post-processors/index.mdx b/website/content/docs/post-processors/index.mdx index 4add0ee0cd7..0db8b5c34c3 100644 --- a/website/content/docs/post-processors/index.mdx +++ b/website/content/docs/post-processors/index.mdx @@ -9,6 +9,6 @@ page_title: Post-Processors Post-processors run after builders and provisioners. Post-processors are optional, and you can use them to upload artifacts, re-package files, and more. The documentation includes a page for each type of post-processor. -Refer to the [`post-processor`](/docs/templates/hcl_templates/blocks/build/post-processor) and -[`post-processors`](/docs/templates/hcl_templates/blocks/build/post-processors) +Refer to the [`post-processor`](/packer/docs/templates/hcl_templates/blocks/build/post-processor) and +[`post-processors`](/packer/docs/templates/hcl_templates/blocks/build/post-processors) blocks documentation to learn more about working with post-processors. diff --git a/website/content/docs/post-processors/shell-local.mdx b/website/content/docs/post-processors/shell-local.mdx index ffe640bbdb1..e04cd512779 100644 --- a/website/content/docs/post-processors/shell-local.mdx +++ b/website/content/docs/post-processors/shell-local.mdx @@ -124,11 +124,11 @@ Optional parameters: ["cmd", "/V", "/C", "{{.Vars}}", "call", "{{.Script}}"] ``` - This is treated as a [template engine](/docs/templates/legacy_json_templates/engine). + This is treated as a [template engine](/packer/docs/templates/legacy_json_templates/engine). There are several available variables: `Script`, which is the path to the script to run, and `Vars`, which is the list of `environment_vars`, if configured. In addition, you may access any of the variables stored in the - generated data using the [build](/docs/templates/legacy_json_templates/engine) template + generated data using the [build](/packer/docs/templates/legacy_json_templates/engine) template function. If you choose to set this option, make sure that the first element in the array is the shell program you want to use (for example, "sh" or "/usr/local/bin/zsh" or even "powershell.exe" although anything @@ -164,7 +164,7 @@ Optional parameters: shell-local, since the shell-local post-processor merely passes forward the artifact it receives. If your shell-local post-processor produces a file or files which you would like to have replace the input artifact, you may - overwrite the input artifact using the [artifice](/docs/post-processors/artifice) + overwrite the input artifact using the [artifice](/packer/docs/post-processors/artifice) post-processor after your shell-local processor has run. - `only_on` (array of strings) - This is an array of [runtime operating @@ -285,7 +285,7 @@ In addition to being able to specify custom environmental variables using the commonly useful environmental variables: - `PACKER_BUILD_NAME` is set to the [name of the - build](/docs/templates/legacy_json_templates/builders#named-builds) that Packer is running. + build](/packer/docs/templates/legacy_json_templates/builders#named-builds) that Packer is running. This is most useful when Packer is making multiple builds and you want to distinguish them slightly from a common provisioning script. @@ -310,7 +310,7 @@ run twice. If you have 3 builders, it will run 3 times, once for each builder. ### Interacting with Build Artifacts In order to interact with build artifacts, you may want to use the [manifest -post-processor](/docs/post-processors/manifest). This will write the list +post-processor](/packer/docs/post-processors/manifest). This will write the list of files produced by a `builder` to a json file after each `builder` is run. For example, if you wanted to package a file from the file builder into a diff --git a/website/content/docs/provisioners/community-supported.mdx b/website/content/docs/provisioners/community-supported.mdx index ca71d42a255..1cb14aa97d8 100644 --- a/website/content/docs/provisioners/community-supported.mdx +++ b/website/content/docs/provisioners/community-supported.mdx @@ -9,6 +9,6 @@ page_title: Community - Provisioners The following provisioners are developed and maintained by various members of the Packer community, not by HashiCorp. For more information on how to use community -provisioners, see our docs on [extending Packer](/docs/plugins/creation). +provisioners, see our docs on [extending Packer](/packer/docs/plugins/creation). @include 'provisioners/community_provisioners.mdx' diff --git a/website/content/docs/provisioners/custom.mdx b/website/content/docs/provisioners/custom.mdx index 583a22b7c23..5606844347b 100644 --- a/website/content/docs/provisioners/custom.mdx +++ b/website/content/docs/provisioners/custom.mdx @@ -12,5 +12,5 @@ page_title: Custom - Provisioners Packer is extensible, allowing you to write new provisioners without having to modify the core source code of Packer itself. Documentation for creating new provisioners is covered in the [custom -provisioners](/docs/plugins/creation/custom-provisioners) page of the Packer +provisioners](/packer/docs/plugins/creation/custom-provisioners) page of the Packer plugin section. diff --git a/website/content/docs/provisioners/file.mdx b/website/content/docs/provisioners/file.mdx index 3f7d3c5ed1e..e123be997cf 100644 --- a/website/content/docs/provisioners/file.mdx +++ b/website/content/docs/provisioners/file.mdx @@ -17,7 +17,7 @@ Type: `file` The file Packer provisioner uploads files to machines built by Packer. The recommended usage of the file provisioner is to use it to upload files, and -then use [shell provisioner](/docs/provisioners/shell) to move them to the +then use [shell provisioner](/packer/docs/provisioners/shell) to move them to the proper place, set permissions, etc. Warning: You can only upload files to locations that the provisioning user @@ -185,7 +185,7 @@ build { Because of the way our WinRM transfers works, it can take a very long time to upload and download even moderately sized files. If you're experiencing slowness using the file provisioner on Windows, it's suggested that you set up an SSH -server and use the [ssh communicator](/docs/communicators/ssh). If you only want +server and use the [ssh communicator](/packer/docs/communicators/ssh). If you only want to transfer files to your guest, and if your builder supports it, you may also use the `http_directory` or `http_content` directives. This will cause that directory to be available to the guest over HTTP, and set the environment diff --git a/website/content/docs/provisioners/index.mdx b/website/content/docs/provisioners/index.mdx index ce2c038e0f6..e9fb2f8669e 100644 --- a/website/content/docs/provisioners/index.mdx +++ b/website/content/docs/provisioners/index.mdx @@ -15,5 +15,5 @@ machine image after booting. Provisioners prepare the system, so you may want to - creating users - downloading application code -Refer to the [`provisioner`](/docs/templates/hcl_templates/blocks/build/provisioner) block documentation to learn more +Refer to the [`provisioner`](/packer/docs/templates/hcl_templates/blocks/build/provisioner) block documentation to learn more about working with provisioners. The documentation includes details about each type of provisioner. diff --git a/website/content/docs/provisioners/powershell.mdx b/website/content/docs/provisioners/powershell.mdx index a5be652edac..c50b8515c9f 100644 --- a/website/content/docs/provisioners/powershell.mdx +++ b/website/content/docs/provisioners/powershell.mdx @@ -67,7 +67,7 @@ provisioner "powershell" { powershell -executionpolicy bypass "& { if (Test-Path variable:global:ProgressPreference){$ProgressPreference='SilentlyContinue'};. {{.Vars}}; &'{{.Path}}'; exit $LastExitCode }" ``` - This is a [template engine](/docs/templates/legacy_json_templates/engine). + This is a [template engine](/packer/docs/templates/legacy_json_templates/engine). Therefore, you may use user variables and template functions in this field. In addition, you may use two extra variables: @@ -88,7 +88,7 @@ provisioner "powershell" { - `use_pwsh` (boolean) - Run `pwsh.exe` instead of `powershell.exe`. Defaults to false. - This is a [template engine](/docs/templates/legacy_json_templates/engine). Therefore, you + This is a [template engine](/packer/docs/templates/legacy_json_templates/engine). Therefore, you may use user variables and template functions in this field. If you are running on AWS, Azure, Google Compute, or OpenStack and would like to access the autogenerated password that Packer uses to connect to the instance via @@ -127,7 +127,7 @@ provisioner "powershell" { powershell -executionpolicy bypass "& { if (Test-Path variable:global:ProgressPreference){$ProgressPreference='SilentlyContinue'};. {{.Vars}}; &'{{.Path}}'; exit $LastExitCode }" ``` - This is a [template engine](/docs/templates/legacy_json_templates/engine). + This is a [template engine](/packer/docs/templates/legacy_json_templates/engine). Therefore, you may use user variables and template functions in this field. In addition, you may use two extra variables: @@ -146,7 +146,7 @@ provisioner "powershell" { PowerShell script will be run with elevated privileges using the given Windows user. - This is a [template engine](/docs/templates/legacy_json_templates/engine). Therefore, you + This is a [template engine](/packer/docs/templates/legacy_json_templates/engine). Therefore, you may use user variables and template functions in this field. If you are running on AWS, Azure, Google Compute, or OpenStack and would like to access the autogenerated password that Packer uses to connect to the instance via @@ -258,7 +258,7 @@ In addition to being able to specify custom environmental variables using the commonly useful environmental variables: - `PACKER_BUILD_NAME` is set to the [name of the - build](/docs/templates/legacy_json_templates/builders#named-builds) that Packer is running. + build](/packer/docs/templates/legacy_json_templates/builders#named-builds) that Packer is running. This is most useful when Packer is making multiple builds and you want to distinguish them slightly from a common provisioning script. diff --git a/website/content/docs/provisioners/shell-local.mdx b/website/content/docs/provisioners/shell-local.mdx index 79fe1d7f440..a8bbea41312 100644 --- a/website/content/docs/provisioners/shell-local.mdx +++ b/website/content/docs/provisioners/shell-local.mdx @@ -20,7 +20,7 @@ Packer is being run - in other words, shell-local will run the shell script on your build server, or your desktop, etc., rather than the remote/guest machine being provisioned by Packer. -The [remote shell](/docs/provisioners/shell) provisioner executes shell +The [remote shell](/packer/docs/provisioners/shell) provisioner executes shell scripts on a remote machine. ## Basic Example @@ -128,7 +128,7 @@ Optional parameters: - `execute_command` (array of strings) - The command used to execute the script. By default this is `["/bin/sh", "-c", "{{.Vars}}", "{{.Script}}"]` on Unix and `["cmd", "/c", "{{.Vars}}", "{{.Script}}"]` on Windows. This is - treated as a [template engine](/docs/templates/legacy_json_templates/engine). There are two + treated as a [template engine](/packer/docs/templates/legacy_json_templates/engine). There are two available variables: `Script`, which is the path to the script to run, and `Vars`, which is the list of `environment_vars`, if configured. diff --git a/website/content/docs/provisioners/shell.mdx b/website/content/docs/provisioners/shell.mdx index eef98741ec5..ca10852cf6c 100644 --- a/website/content/docs/provisioners/shell.mdx +++ b/website/content/docs/provisioners/shell.mdx @@ -19,8 +19,8 @@ scripts. Shell provisioning is the easiest way to get software installed and configured on a machine. -> **Building Windows images?** You probably want to use the -[PowerShell](/docs/provisioners/powershell) or [Windows -Shell](/docs/provisioners/windows-shell) provisioners. +[PowerShell](/packer/docs/provisioners/powershell) or [Windows +Shell](/packer/docs/provisioners/windows-shell) provisioners. ## Basic Example @@ -80,7 +80,7 @@ provisioner "shell" { default this is `chmod +x {{ .Path }}; {{ .Vars }} {{ .Path }}`, unless the user has set `"use_env_var_file": true` -- in that case, the default `execute_command` is `chmod +x {{.Path}}; . {{.EnvVarFile}} && {{.Path}}`. - This is a [template engine](/docs/templates/legacy_json_templates/engine). Therefore, you may + This is a [template engine](/packer/docs/templates/legacy_json_templates/engine). Therefore, you may use user variables and template functions in this field. In addition, there are three available extra variables: @@ -175,7 +175,7 @@ In addition to being able to specify custom environmental variables using the commonly useful environmental variables: - `PACKER_BUILD_NAME` is set to the [name of the - build](/docs/templates/legacy_json_templates/builders#named-builds) that Packer is running. + build](/packer/docs/templates/legacy_json_templates/builders#named-builds) that Packer is running. This is most useful when Packer is making multiple builds and you want to distinguish them slightly from a common provisioning script. @@ -253,7 +253,7 @@ the agent will forward the request back to your `ssh-agent`. Note: when provisioning via git you should add the git server keys into the `~/.ssh/known_hosts` file otherwise the git command could hang awaiting input. This can be done by copying the file in via the [file -provisioner](/docs/provisioners/file) (more secure) or using `ssh-keyscan` +provisioner](/packer/docs/provisioners/file) (more secure) or using `ssh-keyscan` to populate the file (less secure). An example of the latter accessing github would be: diff --git a/website/content/docs/provisioners/windows-shell.mdx b/website/content/docs/provisioners/windows-shell.mdx index 158bad73e9b..2663aedf7cf 100644 --- a/website/content/docs/provisioners/windows-shell.mdx +++ b/website/content/docs/provisioners/windows-shell.mdx @@ -58,8 +58,8 @@ provisioner "windows-shell" { - `execute_command` (string) - The command to use to execute the script. By default this is `{{ .Vars }}"{{ .Path }}"`. The value of this is treated as - [template engine](/docs/templates/legacy_json_templates/engine). This is a - [template engine](/docs/templates/legacy_json_templates/engine). Therefore, you may + [template engine](/packer/docs/templates/legacy_json_templates/engine). This is a + [template engine](/packer/docs/templates/legacy_json_templates/engine). Therefore, you may use user variables and template functions in this field. In addition, there are two available extra variables: @@ -84,7 +84,7 @@ In addition to being able to specify custom environmental variables using the commonly useful environmental variables: - `PACKER_BUILD_NAME` is set to the [name of the - build](/docs/templates/legacy_json_templates/builders#named-builds) that Packer is running. + build](/packer/docs/templates/legacy_json_templates/builders#named-builds) that Packer is running. This is most useful when Packer is making multiple builds and you want to distinguish them slightly from a common provisioning script. diff --git a/website/content/docs/templates/hcl_templates/blocks/build/hcp_packer_registry.mdx b/website/content/docs/templates/hcl_templates/blocks/build/hcp_packer_registry.mdx index e4f6a9b6598..e374af650e4 100644 --- a/website/content/docs/templates/hcl_templates/blocks/build/hcp_packer_registry.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/build/hcp_packer_registry.mdx @@ -9,7 +9,7 @@ page_title: hcp_packer_registry - build - Blocks The `hcp_packer_registry` block lets you customize the metadata Packer sends to HCP Packer Registry. It configures the details of an image that is created or updated within the HCP Packer registry. -To get started with HCP Packer, refer to the [HCP Packer documentation](https://cloud.hashicorp.com/docs/packer) or try the [Get Started with HCP Packer tutorials](https://learn.hashicorp.com/collections/packer/hcp-get-started). +To get started with HCP Packer, refer to the [HCP Packer documentation](/hcp/docs/packer) or try the [Get Started with HCP Packer tutorials](/packer/tutorials/hcp-get-started). ## Usage diff --git a/website/content/docs/templates/hcl_templates/blocks/build/index.mdx b/website/content/docs/templates/hcl_templates/blocks/build/index.mdx index b83ede21727..1ddef67ce40 100644 --- a/website/content/docs/templates/hcl_templates/blocks/build/index.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/build/index.mdx @@ -15,14 +15,14 @@ To use builders in a `build` block you can either: - Set the `sources` array of string with references to pre-defined sources. -- Define [build-level `source` blocks](/docs/templates/hcl_templates/blocks/build/source). +- Define [build-level `source` blocks](/packer/docs/templates/hcl_templates/blocks/build/source). This also allows you to set specific fields. `@include 'from-1.5/builds/example-block.mdx'` -Define [top-level `source` blocks](/docs/templates/hcl_templates/blocks/source) to configure +Define [top-level `source` blocks](/packer/docs/templates/hcl_templates/blocks/source) to configure your builders. The list of available builders can be found in the -[builders](/docs/builders) section. +[builders](/packer/docs/builders) section. ## Naming your builds @@ -92,6 +92,6 @@ this is soon going to be possible. So here "a.\*" will match nothing. ## Related - A list of [community - builders](/community-tools#community-builders) is available. + builders](https://packer.io/community-tools#community-builders) is available. -- Create your own [custom builder](/docs/plugins/creation/custom-builders) ! +- Create your own [custom builder](/packer/docs/plugins/creation/custom-builders) ! diff --git a/website/content/docs/templates/hcl_templates/blocks/build/post-processor.mdx b/website/content/docs/templates/hcl_templates/blocks/build/post-processor.mdx index 878e7a98260..9f7e981c5f4 100644 --- a/website/content/docs/templates/hcl_templates/blocks/build/post-processor.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/build/post-processor.mdx @@ -27,11 +27,11 @@ build { Each `post-processor` runs after each defined build. A post-processor takes the `Artifact` from a build. Post-processors are optional, and they can be used to upload artifacts, re-package, or more. The list of available post-processors -can be found in the [post-processors](/docs/post-processors) section. +can be found in the [post-processors](/packer/docs/post-processors) section. A `post-processor` can also take the `Artifact` from another post-processor when it is defined in a [`post-processors` -block](/docs/templates/hcl_templates/blocks/build/post-processor) list, that is a list of +block](/packer/docs/templates/hcl_templates/blocks/build/post-processor) list, that is a list of chained post processors. -> Note: The input 'artifact' received by a post-processor will be automatically @@ -98,11 +98,11 @@ to only run a post-processor for a given source build you must use the Packer allows to access connection information and basic instance state information from a post-processor. These information are stored in the `build` variable. Check out the [Contextual -Variables](/docs/templates/hcl_templates/contextual-variables) documentation to learn more +Variables](/packer/docs/templates/hcl_templates/contextual-variables) documentation to learn more about and see some examples of how to use them. ### Related -- The [`post-processors` block](/docs/templates/hcl_templates/blocks/build/post-processors) +- The [`post-processors` block](/packer/docs/templates/hcl_templates/blocks/build/post-processors) allows to define one or more chain of `post-processor`s that will take the output from the build and provision steps. diff --git a/website/content/docs/templates/hcl_templates/blocks/build/post-processors.mdx b/website/content/docs/templates/hcl_templates/blocks/build/post-processors.mdx index 1ce8e7e5f61..dc57c5c793c 100644 --- a/website/content/docs/templates/hcl_templates/blocks/build/post-processors.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/build/post-processors.mdx @@ -10,7 +10,7 @@ page_title: post-processors - build - Blocks `@include 'from-1.5/beta-hcl2-note.mdx'` The `post-processors` block allows to define lists of -[`post-processor`s](/docs/templates/hcl_templates/blocks/build/post-processor), that will run +[`post-processor`s](/packer/docs/templates/hcl_templates/blocks/build/post-processor), that will run from the artifact of each build. ```hcl @@ -33,7 +33,7 @@ build { } ``` -The [`post-processor` block](/docs/templates/hcl_templates/blocks/build/post-processor) +The [`post-processor` block](/packer/docs/templates/hcl_templates/blocks/build/post-processor) allows to define multiple post-processors that will run from the `Artifact` of each build. Read the `post-processor` documentation to know how to use a post-processor. diff --git a/website/content/docs/templates/hcl_templates/blocks/build/provisioner.mdx b/website/content/docs/templates/hcl_templates/blocks/build/provisioner.mdx index 88f0c479d14..fdf3648300c 100644 --- a/website/content/docs/templates/hcl_templates/blocks/build/provisioner.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/build/provisioner.mdx @@ -27,7 +27,7 @@ Provisioners use builtin and third-party software to install and configure the machine image after booting. Provisioners prepare the system for use. The list of available provisioners can be found in the -[provisioners](/docs/provisioners) section. +[provisioners](/packer/docs/provisioners) section. ## Run on Specific Sources @@ -136,7 +136,7 @@ build { As you can see, the `override` key is used. The value of this key is another HCL attribute map where the key is the name of a [source -definition](/docs/templates/hcl_templates/blocks/source). The value of this is in turn +definition](/packer/docs/templates/hcl_templates/blocks/source). The value of this is in turn another HCL attribute map. This HCL attribute map simply contains the provisioner configuration as normal. This configuration is merged into the default provisioner configuration. @@ -259,4 +259,4 @@ Timeout has no effect in debug mode. ## Build Contextual Variables Packer allows to access connection information and basic instance state information from a provisioner. These information are stored in the `build` variable. -Check out the [Contextual Variables](/docs/templates/hcl_templates/contextual-variables) documentation to learn more about and see some examples of how to use them. +Check out the [Contextual Variables](/packer/docs/templates/hcl_templates/contextual-variables) documentation to learn more about and see some examples of how to use them. diff --git a/website/content/docs/templates/hcl_templates/blocks/data.mdx b/website/content/docs/templates/hcl_templates/blocks/data.mdx index 2bad0adbf98..b5a8e0f8909 100644 --- a/website/content/docs/templates/hcl_templates/blocks/data.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/data.mdx @@ -12,5 +12,5 @@ The `data` block defines data sources within your Packer configuration. # More on data sources -- Read the [full Data Sources](/docs/templates/hcl_templates/datasources) description for a more +- Read the [full Data Sources](/packer/docs/templates/hcl_templates/datasources) description for a more thorough read. diff --git a/website/content/docs/templates/hcl_templates/blocks/index.mdx b/website/content/docs/templates/hcl_templates/blocks/index.mdx index 18eb3a35396..9d2cb2fae76 100644 --- a/website/content/docs/templates/hcl_templates/blocks/index.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/index.mdx @@ -43,20 +43,20 @@ the language are available for use. The documentation includes all of the availa `@include 'from-1.5/variables/foo-block.mdx'` -- [Variable block documentation](/docs/templates/hcl_templates/blocks/variable). +- [Variable block documentation](/packer/docs/templates/hcl_templates/blocks/variable). `@include 'from-1.5/locals/example-block.mdx'` -- [Locals block documentation](/docs/templates/hcl_templates/blocks/locals). +- [Locals block documentation](/packer/docs/templates/hcl_templates/blocks/locals). `@include 'from-1.5/sources/example-block.mdx'` -- [source block documentation](/docs/templates/hcl_templates/blocks/source). +- [source block documentation](/packer/docs/templates/hcl_templates/blocks/source). `@include 'from-1.5/builds/example-block.mdx'` -- [build block documentation](/docs/templates/hcl_templates/blocks/build). +- [build block documentation](/packer/docs/templates/hcl_templates/blocks/build). `@include 'from-1.5/datasources/example-block.mdx'` -- [data block documentation](/docs/templates/hcl_templates/blocks/data). +- [data block documentation](/packer/docs/templates/hcl_templates/blocks/data). diff --git a/website/content/docs/templates/hcl_templates/blocks/locals.mdx b/website/content/docs/templates/hcl_templates/blocks/locals.mdx index d9ee768a673..be45efb7e7d 100644 --- a/website/content/docs/templates/hcl_templates/blocks/locals.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/locals.mdx @@ -16,6 +16,6 @@ your Packer configuration. # More on variables -- Read the [full locals](/docs/templates/hcl_templates/locals) description for a more +- Read the [full locals](/packer/docs/templates/hcl_templates/locals) description for a more thorough read. -- Read the [variables guide](/guides/hcl/variables) for more examples. +- Read the [variables guide](/packer/guides/hcl/variables) for more examples. diff --git a/website/content/docs/templates/hcl_templates/blocks/packer.mdx b/website/content/docs/templates/hcl_templates/blocks/packer.mdx index 7fa8156f16e..b3e590e93c6 100644 --- a/website/content/docs/templates/hcl_templates/blocks/packer.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/packer.mdx @@ -66,7 +66,7 @@ packer { } ``` -For more information, see [Plugins](/docs/plugins). +For more information, see [Plugins](/packer/docs/plugins). ## Version Constraints @@ -83,7 +83,7 @@ other dependency management systems like Bundler and NPM. required_version = ">= 1.2.0, < 2.0.0" ``` -A version constraint is a [string literal](/docs/templates/hcl_templates/expressions#string-literals) +A version constraint is a [string literal](/packer/docs/templates/hcl_templates/expressions#string-literals) containing one or more conditions, which are separated by commas. Each condition consists of an operator and a version number. diff --git a/website/content/docs/templates/hcl_templates/blocks/source.mdx b/website/content/docs/templates/hcl_templates/blocks/source.mdx index c92704ea6e3..d4b1070809e 100644 --- a/website/content/docs/templates/hcl_templates/blocks/source.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/source.mdx @@ -19,7 +19,7 @@ once. Builders are usually found in plugins, except for the `file` and the `null` builders that will remain in Packer core. You can start builders by referring to those source blocks from a [`build` -block](/docs/templates/hcl_templates/blocks/build) : +block](/packer/docs/templates/hcl_templates/blocks/build) : ```hcl build { @@ -32,7 +32,7 @@ build { ``` The build-level [`source` -block](/docs/templates/hcl_templates/blocks/build/source) allows to set specific +block](/packer/docs/templates/hcl_templates/blocks/build/source) allows to set specific source fields. Each field must be defined only once and it is currently not allowed to override a value. @@ -52,10 +52,10 @@ build { ## Related -- The list of available builders can be found in the [builders](/docs/builders) +- The list of available builders can be found in the [builders](/packer/docs/builders) section. - A list of [community - builders](/community-tools#community-builders) is available. + builders](https://packer.io/community-tools#community-builders) is available. -- Create your own [custom builder](/docs/plugins/creation/custom-builders) ! +- Create your own [custom builder](/packer/docs/plugins/creation/custom-builders) ! diff --git a/website/content/docs/templates/hcl_templates/blocks/variable.mdx b/website/content/docs/templates/hcl_templates/blocks/variable.mdx index e7d1df180e8..38b21aae6df 100644 --- a/website/content/docs/templates/hcl_templates/blocks/variable.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/variable.mdx @@ -11,7 +11,7 @@ page_title: variable - Blocks The `variable` block, also called the `input-variable` block, defines variables within your Packer configuration. An input-variable cannot be used in another -input variable: we recommend using [locals](/docs/templates/hcl_templates/blocks/locals) for that instead. +input variable: we recommend using [locals](/packer/docs/templates/hcl_templates/blocks/locals) for that instead. `@include 'from-1.5/variables/foo-block.mdx'` @@ -34,6 +34,6 @@ Example of a variable assignment from a file: # More on variables -- Read the [full variables](/docs/templates/hcl_templates/variables) description for a more +- Read the [full variables](/packer/docs/templates/hcl_templates/variables) description for a more thorough read. -- Read the [variables guide](/guides/hcl/variables) for more examples. +- Read the [variables guide](/packer/guides/hcl/variables) for more examples. diff --git a/website/content/docs/templates/hcl_templates/contextual-variables.mdx b/website/content/docs/templates/hcl_templates/contextual-variables.mdx index cb4d0f3b072..b755e1082b7 100644 --- a/website/content/docs/templates/hcl_templates/contextual-variables.mdx +++ b/website/content/docs/templates/hcl_templates/contextual-variables.mdx @@ -66,8 +66,8 @@ Here is the list of available build variables: For backwards compatibility, `WinRMPassword` is also available through this engine, though it is no different than using the more general `Password`. -All build variables are valid to use with any of the [HCL2 functions](/docs/templates/hcl_templates/functions). -Example of using [upper](/docs/templates/hcl_templates/functions/string/upper) to upper case the build ID: +All build variables are valid to use with any of the [HCL2 functions](/packer/docs/templates/hcl_templates/functions). +Example of using [upper](/packer/docs/templates/hcl_templates/functions/string/upper) to upper case the build ID: ```hcl post-processor "shell-local" { @@ -77,11 +77,11 @@ Example of using [upper](/docs/templates/hcl_templates/functions/string/upper) t For builder-specific builder variables, please also refer to the builder docs: -- Amazon EC2: [chroot](/plugins/builders/amazon/chroot#build-shared-information-variables), - [EBS Volume](/plugins/builders/amazon/ebsvolume#build-shared-information-variables), - [EBS](/plugins/builders/amazon/ebs#build-shared-information-variables), - [EBS Surrogate](/plugins/builders/amazon/ebssurrogate#build-shared-information-variables), - [Instance](/plugins/builders/amazon/instance#build-shared-information-variables). +- Amazon EC2: [chroot](/packer/plugins/builders/amazon/chroot#build-shared-information-variables), + [EBS Volume](/packer/plugins/builders/amazon/ebsvolume#build-shared-information-variables), + [EBS](/packer/plugins/builders/amazon/ebs#build-shared-information-variables), + [EBS Surrogate](/packer/plugins/builders/amazon/ebssurrogate#build-shared-information-variables), + [Instance](/packer/plugins/builders/amazon/instance#build-shared-information-variables). The HCL2 Special Build Variables is in beta; please report any issues or requests on the Packer issue tracker on GitHub. diff --git a/website/content/docs/templates/hcl_templates/datasources.mdx b/website/content/docs/templates/hcl_templates/datasources.mdx index d0c67e89c2e..7dc98e50f91 100644 --- a/website/content/docs/templates/hcl_templates/datasources.mdx +++ b/website/content/docs/templates/hcl_templates/datasources.mdx @@ -10,8 +10,8 @@ description: >- -> **Note:** Data Sources is a feature included in Packer 1.7 and later. -Data sources allow data to be fetched or computed for use elsewhere in [locals](/docs/templates/hcl_templates/blocks/locals) and -[sources](/docs/templates/hcl_templates/blocks/source) configuration. +Data sources allow data to be fetched or computed for use elsewhere in [locals](/packer/docs/templates/hcl_templates/blocks/locals) and +[sources](/packer/docs/templates/hcl_templates/blocks/source) configuration. Use of data sources allows a Builder to make use of information defined outside of Packer. # Using Data Sources @@ -37,7 +37,7 @@ The data block creates a data instance of the given _type_ (first block label) a The combination of the type and name must be unique within a configuration. Within the block (the `{ }`) is the configuration for the data instance. The configuration is dependent on the type, -and is documented for each data source in the [data sources](/docs/datasources) section. +and is documented for each data source in the [data sources](/packer/docs/datasources) section. A data source can output one or more attributes, which can be used by adding their key name to the data source unique identifier, like `data...`. @@ -81,6 +81,6 @@ source "amazon-ebs" "basic-example" { ## Related -- The list of available data sources can be found in the [data sources](/docs/datasources) +- The list of available data sources can be found in the [data sources](/packer/docs/datasources) section. -- Create your own [custom data source](/docs/plugins/creation/custom-datasources) ! +- Create your own [custom data source](/packer/docs/plugins/creation/custom-datasources) ! diff --git a/website/content/docs/templates/hcl_templates/expressions.mdx b/website/content/docs/templates/hcl_templates/expressions.mdx index 5eb7a3bd0af..4fb50126c02 100644 --- a/website/content/docs/templates/hcl_templates/expressions.mdx +++ b/website/content/docs/templates/hcl_templates/expressions.mdx @@ -123,7 +123,7 @@ types described above: Key/value pairs can be separated by either a comma or a line break. Values can be arbitrary expressions. Keys are strings; they can be left unquoted if - they are a valid [identifier](/docs/templates/hcl_templates/syntax#identifiers), but must be quoted + they are a valid [identifier](/packer/docs/templates/hcl_templates/syntax#identifiers), but must be quoted otherwise. You can use a non-literal expression as a key by wrapping it in parentheses, like `(var.business_unit_tag_name) = "SRE"`. @@ -134,13 +134,13 @@ Packer makes one named values available. The following named values are available: - `source..` is an object representing a - [source](/docs/templates/hcl_templates/blocks/source) of the given type + [source](/packer/docs/templates/hcl_templates/blocks/source) of the given type and name. ### Available Functions For a full list of available functions, see [the function -reference](/docs/templates/hcl_templates/functions). +reference](/packer/docs/templates/hcl_templates/functions). ## `for` Expressions @@ -233,7 +233,7 @@ The above expression is equivalent to the following `for` expression: Splat expressions are for lists only (and thus cannot be used [to reference resources created with -`for_each`](https://www.terraform.io/docs/configuration/resources.html#referring-to-instances), which +`for_each`](/terraform/docs/configuration/resources#referring-to-instances), which are represented as maps). However, if a splat expression is applied to a value that is _not_ a list or tuple then the value is automatically wrapped in a single-element list before processing. @@ -255,7 +255,7 @@ set. ## `dynamic` blocks -Within top-level block constructs like [source](/docs/templates/hcl_templates/blocks/source), expressions +Within top-level block constructs like [source](/packer/docs/templates/hcl_templates/blocks/source), expressions can usually be used only when assigning a value to an argument using the `name = expression` or `key = expression` form. This covers many uses, but some source types include repeatable _nested blocks_ in their arguments, which do not accept expressions: @@ -335,8 +335,8 @@ block. If you need to declare resource instances based on a nested data structure or combinations of elements from multiple data structures you can use expressions and functions to derive a suitable value. For some common examples of such situations, see the -[`flatten`](/docs/templates/hcl_templates/functions/collection/flatten) and -[`setproduct`](/docs/templates/hcl_templates/functions/collection/setproduct) +[`flatten`](/packer/docs/templates/hcl_templates/functions/collection/flatten) and +[`setproduct`](/packer/docs/templates/hcl_templates/functions/collection/setproduct) functions. ### Best Practices for `dynamic` Blocks diff --git a/website/content/docs/templates/hcl_templates/functions/collection/coalesce.mdx b/website/content/docs/templates/hcl_templates/functions/collection/coalesce.mdx index 12f2f26b079..f46673c49d3 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/coalesce.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/coalesce.mdx @@ -31,5 +31,5 @@ b ## Related Functions -- [`coalescelist`](/docs/templates/hcl_templates/functions/collection/coalescelist) performs a similar operation with +- [`coalescelist`](/packer/docs/templates/hcl_templates/functions/collection/coalescelist) performs a similar operation with list arguments rather than individual arguments. diff --git a/website/content/docs/templates/hcl_templates/functions/collection/coalescelist.mdx b/website/content/docs/templates/hcl_templates/functions/collection/coalescelist.mdx index 219e8d098bc..79d9d85c8dc 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/coalescelist.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/coalescelist.mdx @@ -38,5 +38,5 @@ symbol to expand the outer list as arguments: ## Related Functions -- [`coalesce`](/docs/templates/hcl_templates/functions/collection/coalesce) performs a similar operation with string +- [`coalesce`](/packer/docs/templates/hcl_templates/functions/collection/coalesce) performs a similar operation with string arguments rather than list arguments. diff --git a/website/content/docs/templates/hcl_templates/functions/collection/element.mdx b/website/content/docs/templates/hcl_templates/functions/collection/element.mdx index 038b47d9423..6373cc3940c 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/element.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/element.mdx @@ -34,5 +34,5 @@ a ## Related Functions -- [`index`](/docs/templates/hcl_templates/functions/collection/index-fn) finds the index for a particular element value. -- [`lookup`](/docs/templates/hcl_templates/functions/collection/lookup) retrieves a value from a _map_ given its _key_. +- [`index`](/packer/docs/templates/hcl_templates/functions/collection/index-fn) finds the index for a particular element value. +- [`lookup`](/packer/docs/templates/hcl_templates/functions/collection/lookup) retrieves a value from a _map_ given its _key_. diff --git a/website/content/docs/templates/hcl_templates/functions/collection/flatten.mdx b/website/content/docs/templates/hcl_templates/functions/collection/flatten.mdx index bf7871fe210..a3bc2f4423e 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/flatten.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/flatten.mdx @@ -28,9 +28,9 @@ Indirectly-nested lists, such as those in maps, are _not_ flattened. ## Flattening nested structures for `for_each` The -[resource `for_each`](https://www.terraform.io/docs/configuration/resources.html#for_each-multiple-resource-instances-defined-by-a-map-or-set-of-strings) +[resource `for_each`](/terraform/docs/configuration/resources#for_each-multiple-resource-instances-defined-by-a-map-or-set-of-strings) and -[`dynamic` block](/docs/templates/hcl_templates/expressions#dynamic-blocks) +[`dynamic` block](/packer/docs/templates/hcl_templates/expressions#dynamic-blocks) language features both require a collection value that has one element for each repetition. @@ -103,6 +103,6 @@ the associations between the subnets and their containing networks. ## Related Functions -- [`setproduct`](/docs/templates/hcl_templates/functions/collection/setproduct) finds all of the combinations of multiple +- [`setproduct`](/packer/docs/templates/hcl_templates/functions/collection/setproduct) finds all of the combinations of multiple lists or sets of values, which can also be useful when preparing collections for use with `for_each` constructs. diff --git a/website/content/docs/templates/hcl_templates/functions/collection/index-fn.mdx b/website/content/docs/templates/hcl_templates/functions/collection/index-fn.mdx index b9457a6c734..80c80ca056f 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/index-fn.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/index-fn.mdx @@ -23,5 +23,5 @@ value is not present in the list. ## Related Functions -- [`element`](/docs/templates/hcl_templates/functions/collection/element) retrieves a particular element from a list given +- [`element`](/packer/docs/templates/hcl_templates/functions/collection/element) retrieves a particular element from a list given its index. diff --git a/website/content/docs/templates/hcl_templates/functions/collection/keys.mdx b/website/content/docs/templates/hcl_templates/functions/collection/keys.mdx index 58bebaf7cbd..cd955f9dfba 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/keys.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/keys.mdx @@ -23,4 +23,4 @@ be identical as long as the keys in the map don't change. ## Related Functions -- [`values`](/docs/templates/hcl_templates/functions/collection/values) returns a list of the _values_ from a map. +- [`values`](/packer/docs/templates/hcl_templates/functions/collection/values) returns a list of the _values_ from a map. diff --git a/website/content/docs/templates/hcl_templates/functions/collection/lookup.mdx b/website/content/docs/templates/hcl_templates/functions/collection/lookup.mdx index c7cdb671cf8..a936d02a70c 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/lookup.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/lookup.mdx @@ -23,4 +23,4 @@ what? ## Related Functions -- [`element`](/docs/templates/hcl_templates/functions/collection/element) retrieves a value from a _list_ given its _index_. +- [`element`](/packer/docs/templates/hcl_templates/functions/collection/element) retrieves a value from a _list_ given its _index_. diff --git a/website/content/docs/templates/hcl_templates/functions/collection/reverse.mdx b/website/content/docs/templates/hcl_templates/functions/collection/reverse.mdx index e591dc16d14..743a97a5d84 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/reverse.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/reverse.mdx @@ -21,4 +21,4 @@ with all of the same elements as the given sequence but in reverse order. ## Related Functions -- [`strrev`](/docs/templates/hcl_templates/functions/string/strrev) reverses a string. +- [`strrev`](/packer/docs/templates/hcl_templates/functions/string/strrev) reverses a string. diff --git a/website/content/docs/templates/hcl_templates/functions/collection/setintersection.mdx b/website/content/docs/templates/hcl_templates/functions/collection/setintersection.mdx index 4234ea78b6d..924b9a8b095 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/setintersection.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/setintersection.mdx @@ -30,9 +30,9 @@ the ordering of the given elements is not preserved. ## Related Functions -- [`contains`](/docs/templates/hcl_templates/functions/collection/contains) tests whether a given list or set contains +- [`contains`](/packer/docs/templates/hcl_templates/functions/collection/contains) tests whether a given list or set contains a given element value. -- [`setproduct`](/docs/templates/hcl_templates/functions/collection/setproduct) computes the _Cartesian product_ of multiple +- [`setproduct`](/packer/docs/templates/hcl_templates/functions/collection/setproduct) computes the _Cartesian product_ of multiple sets. -- [`setunion`](/docs/templates/hcl_templates/functions/collection/setunion) computes the _union_ of +- [`setunion`](/packer/docs/templates/hcl_templates/functions/collection/setunion) computes the _union_ of multiple sets. diff --git a/website/content/docs/templates/hcl_templates/functions/collection/setproduct.mdx b/website/content/docs/templates/hcl_templates/functions/collection/setproduct.mdx index 2da2ea0aa46..d9425f12027 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/setproduct.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/setproduct.mdx @@ -115,9 +115,9 @@ elements all have a consistent type: ## Finding combinations for `for_each` The -[resource `for_each`](https://www.terraform.io/docs/configuration/resources.html#for_each-multiple-resource-instances-defined-by-a-map-or-set-of-strings) +[resource `for_each`](/terraform/docs/configuration/resources#for_each-multiple-resource-instances-defined-by-a-map-or-set-of-strings) and -[`dynamic` block](/docs/templates/hcl_templates/expressions/#dynamic-blocks) +[`dynamic` block](/packer/docs/templates/hcl_templates/expressions/#dynamic-blocks) language features both require a collection value that has one element for each repetition. @@ -211,12 +211,12 @@ elements in the input variables. ## Related Functions -- [`contains`](/docs/templates/hcl_templates/functions/collection/contains) tests whether a given list or set contains +- [`contains`](/packer/docs/templates/hcl_templates/functions/collection/contains) tests whether a given list or set contains a given element value. -- [`flatten`](/docs/templates/hcl_templates/functions/collection/flatten) is useful for flattening hierarchical data +- [`flatten`](/packer/docs/templates/hcl_templates/functions/collection/flatten) is useful for flattening hierarchical data into a single list, for situations where the relationships between two object types are defined explicitly. -- [`setintersection`](/docs/templates/hcl_templates/functions/collection/setintersection) computes the _intersection_ of +- [`setintersection`](/packer/docs/templates/hcl_templates/functions/collection/setintersection) computes the _intersection_ of multiple sets. -- [`setunion`](/docs/templates/hcl_templates/functions/collection/setunion) computes the _union_ of multiple +- [`setunion`](/packer/docs/templates/hcl_templates/functions/collection/setunion) computes the _union_ of multiple sets. diff --git a/website/content/docs/templates/hcl_templates/functions/collection/setunion.mdx b/website/content/docs/templates/hcl_templates/functions/collection/setunion.mdx index 5dce94c78cd..a78e2d4896d 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/setunion.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/setunion.mdx @@ -33,9 +33,9 @@ the ordering of the given elements is not preserved. ## Related Functions -- [`contains`](/docs/templates/hcl_templates/functions/collection/contains) tests whether a given list or set contains +- [`contains`](/packer/docs/templates/hcl_templates/functions/collection/contains) tests whether a given list or set contains a given element value. -- [`setintersection`](/docs/templates/hcl_templates/functions/collection/setintersection) computes the _intersection_ of +- [`setintersection`](/packer/docs/templates/hcl_templates/functions/collection/setintersection) computes the _intersection_ of multiple sets. -- [`setproduct`](/docs/templates/hcl_templates/functions/collection/setproduct) computes the _Cartesian product_ of multiple +- [`setproduct`](/packer/docs/templates/hcl_templates/functions/collection/setproduct) computes the _Cartesian product_ of multiple sets. diff --git a/website/content/docs/templates/hcl_templates/functions/collection/slice.mdx b/website/content/docs/templates/hcl_templates/functions/collection/slice.mdx index eea7d7c12e4..f92ebc2ea9c 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/slice.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/slice.mdx @@ -27,5 +27,5 @@ list. ## Related Functions -- [`substr`](/docs/templates/hcl_templates/functions/string/substr) performs a similar function for characters in a +- [`substr`](/packer/docs/templates/hcl_templates/functions/string/substr) performs a similar function for characters in a string, although it uses a length instead of an end index. diff --git a/website/content/docs/templates/hcl_templates/functions/collection/values.mdx b/website/content/docs/templates/hcl_templates/functions/collection/values.mdx index a362d09c2c1..0fced24da20 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/values.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/values.mdx @@ -10,7 +10,7 @@ in that map. The values are returned in lexicographical order by their corresponding _keys_, so the values will be returned in the same order as their keys would be -returned from [`keys`](/docs/templates/hcl_templates/functions/collection/keys). +returned from [`keys`](/packer/docs/templates/hcl_templates/functions/collection/keys). ## Examples @@ -25,4 +25,4 @@ returned from [`keys`](/docs/templates/hcl_templates/functions/collection/keys). ## Related Functions -- [`keys`](/docs/templates/hcl_templates/functions/collection/keys) returns a list of the _keys_ from a map. +- [`keys`](/packer/docs/templates/hcl_templates/functions/collection/keys) returns a list of the _keys_ from a map. diff --git a/website/content/docs/templates/hcl_templates/functions/contextual/consul.mdx b/website/content/docs/templates/hcl_templates/functions/contextual/consul.mdx index c40a525f13c..da66b1bc44a 100644 --- a/website/content/docs/templates/hcl_templates/functions/contextual/consul.mdx +++ b/website/content/docs/templates/hcl_templates/functions/contextual/consul.mdx @@ -5,7 +5,7 @@ description: The consul function retrieves secrets from HashiCorp consul KV stor # `consul_key` Function -[Consul](https://www.consul.io) keys can be used within your template using the +[Consul](https://www.consul.io/) keys can be used within your template using the `consul_key` function. You can either use this function in a locals block or directly inline where you @@ -36,4 +36,4 @@ This will load the key stored at the path `myservice/version` from consul. The configuration for consul (address, tokens, ...) must be specified as environment variables, as specified in the -[Documentation](https://www.consul.io/docs/commands#environment-variables). +[Documentation](/consul/docs/commands#environment-variables). diff --git a/website/content/docs/templates/hcl_templates/functions/contextual/env.mdx b/website/content/docs/templates/hcl_templates/functions/contextual/env.mdx index 1085fe92a83..a7e235122fe 100644 --- a/website/content/docs/templates/hcl_templates/functions/contextual/env.mdx +++ b/website/content/docs/templates/hcl_templates/functions/contextual/env.mdx @@ -18,7 +18,7 @@ other places. In the previous example, the value of `aws_region` will be what's stored in the `AWS_DEFAULT_REGION` env var, unless aws_region is also set in a [manner that takes -precedence](/docs/templates/hcl_templates/variables#variable-definition-precedence). +precedence](/packer/docs/templates/hcl_templates/variables#variable-definition-precedence). -> **Why can't I use environment variables elsewhere?** User variables are the single source of configurable input. We felt that having environment variables @@ -30,7 +30,7 @@ template that a user can easily discover using `packer inspect`. When the environment variable is not set at all -- not even with the empty string -- the value returned by `env` will be an an empty string. It will still be possible to set it using other means but you could use [custom validation -rules](/docs/templates/hcl_templates/variables#custom-validation-rules) to error in that case +rules](/packer/docs/templates/hcl_templates/variables#custom-validation-rules) to error in that case to make sure it is set, for example: ```hcl diff --git a/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx b/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx index e818b61575c..f36e8f65823 100644 --- a/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx +++ b/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx @@ -88,4 +88,4 @@ The full list of available environment variables is: ``` and detailed documentation for usage of each of those variables can be found -[here](https://www.vaultproject.io/docs/commands/#environment-variables). +[here](/vault/docs/commands#environment-variables). diff --git a/website/content/docs/templates/hcl_templates/functions/conversion/can.mdx b/website/content/docs/templates/hcl_templates/functions/conversion/can.mdx index e3e80c772b2..4272cbbcbe5 100644 --- a/website/content/docs/templates/hcl_templates/functions/conversion/can.mdx +++ b/website/content/docs/templates/hcl_templates/functions/conversion/can.mdx @@ -12,7 +12,7 @@ whether the expression produced a result without any errors. This is a special function that is able to catch errors produced when evaluating its argument. For most situations where you could use `can` it's better to use -[`try`](/docs/templates/hcl_templates/functions/conversion/try) instead, because it allows for more concise definition of +[`try`](/packer/docs/templates/hcl_templates/functions/conversion/try) instead, because it allows for more concise definition of fallback values for failing expressions. The `can` function can only catch and handle _dynamic_ errors resulting from @@ -24,7 +24,7 @@ as a malformed resource reference. variable validation rules. Although it can technically accept any sort of expression and be used elsewhere in the configuration, we recommend against using it in other contexts. For error handling elsewhere in the configuration, -prefer to use [`try`](/docs/templates/hcl_templates/functions/conversion/try). +prefer to use [`try`](/packer/docs/templates/hcl_templates/functions/conversion/try). ## Examples @@ -53,5 +53,5 @@ A local value with the name "nonexist" has not been declared. ## Related Functions -- [`try`](/docs/templates/hcl_templates/functions/conversion/try), which tries evaluating a sequence of expressions and +- [`try`](/packer/docs/templates/hcl_templates/functions/conversion/try), which tries evaluating a sequence of expressions and returns the result of the first one that succeeds. diff --git a/website/content/docs/templates/hcl_templates/functions/conversion/try.mdx b/website/content/docs/templates/hcl_templates/functions/conversion/try.mdx index 4dc68d8637b..a34e6e293c8 100644 --- a/website/content/docs/templates/hcl_templates/functions/conversion/try.mdx +++ b/website/content/docs/templates/hcl_templates/functions/conversion/try.mdx @@ -107,5 +107,5 @@ A local value with the name "nonexist" has not been declared. ## Related Functions -- [`can`](/docs/templates/hcl_templates/functions/conversion/can), which tries evaluating an expression and returns a +- [`can`](/packer/docs/templates/hcl_templates/functions/conversion/can), which tries evaluating an expression and returns a boolean value indicating whether it succeeded. diff --git a/website/content/docs/templates/hcl_templates/functions/datetime/formatdate.mdx b/website/content/docs/templates/hcl_templates/functions/datetime/formatdate.mdx index f4fd6ae822e..708b6a6842b 100644 --- a/website/content/docs/templates/hcl_templates/functions/datetime/formatdate.mdx +++ b/website/content/docs/templates/hcl_templates/functions/datetime/formatdate.mdx @@ -99,7 +99,7 @@ configuration as needed: ## Related Functions -- [`format`](/docs/templates/hcl_templates/functions/string/format) is a more general formatting function for arbitrary +- [`format`](/packer/docs/templates/hcl_templates/functions/string/format) is a more general formatting function for arbitrary data. -- [`timestamp`](/docs/templates/hcl_templates/functions/datetime/timestamp) returns the current date and time in a format +- [`timestamp`](/packer/docs/templates/hcl_templates/functions/datetime/timestamp) returns the current date and time in a format suitable for input to `formatdate`. diff --git a/website/content/docs/templates/hcl_templates/functions/datetime/legacy_isotime.mdx b/website/content/docs/templates/hcl_templates/functions/datetime/legacy_isotime.mdx index 05c39844a74..37217a5f4de 100644 --- a/website/content/docs/templates/hcl_templates/functions/datetime/legacy_isotime.mdx +++ b/website/content/docs/templates/hcl_templates/functions/datetime/legacy_isotime.mdx @@ -9,13 +9,13 @@ description: |- The `legacy_isotime` function returns the current date and time using the given format string. The format string follows Go's datetime formatting. See -[isotime-function-format-reference](/docs/templates/legacy_json_templates/engine#isotime-function-format-reference) +[isotime-function-format-reference](/packer/docs/templates/legacy_json_templates/engine#isotime-function-format-reference) for more details. This function has been provided to create backwards compatibility with Packer's legacy JSON templates. However, we recommend that you upgrade your -HCL Packer template to use [`timestamp`](/docs/templates/hcl_templates/functions/datetime/timestamp) -and [`formatdate`](/docs/templates/hcl_templates/functions/datetime/formatdate) together as soon as is convenient. +HCL Packer template to use [`timestamp`](/packer/docs/templates/hcl_templates/functions/datetime/timestamp) +and [`formatdate`](/packer/docs/templates/hcl_templates/functions/datetime/formatdate) together as soon as is convenient. -> **Note:** If you are using a large number of builders, provisioners or post-processors, the isotime may be slightly different for each one @@ -33,9 +33,9 @@ your plugins. ## Related Functions -- [`format`](/docs/templates/hcl_templates/functions/string/format) is a more general formatting function for arbitrary +- [`format`](/packer/docs/templates/hcl_templates/functions/string/format) is a more general formatting function for arbitrary data. -- [`timestamp`](/docs/templates/hcl_templates/functions/datetime/timestamp) returns the current date and time in a format +- [`timestamp`](/packer/docs/templates/hcl_templates/functions/datetime/timestamp) returns the current date and time in a format suitable for input to `formatdate`. -- [`formatdate`](/docs/templates/hcl_templates/functions/datetime/formatdate) can convert the resulting timestamp to +- [`formatdate`](/packer/docs/templates/hcl_templates/functions/datetime/formatdate) can convert the resulting timestamp to other date and time formats. diff --git a/website/content/docs/templates/hcl_templates/functions/datetime/legacy_strftime.mdx b/website/content/docs/templates/hcl_templates/functions/datetime/legacy_strftime.mdx index 852b89add82..c993315076c 100644 --- a/website/content/docs/templates/hcl_templates/functions/datetime/legacy_strftime.mdx +++ b/website/content/docs/templates/hcl_templates/functions/datetime/legacy_strftime.mdx @@ -13,8 +13,8 @@ format string. The format string follows strftime's datetime formatting. This function has been provided to create backwards compatibility with Packer's legacy JSON templates. However, we recommend that you upgrade your HCL Packer template to use -[`timestamp`](/docs/templates/hcl_templates/functions/datetime/timestamp) and -[`formatdate`](/docs/templates/hcl_templates/functions/datetime/formatdate) +[`timestamp`](/packer/docs/templates/hcl_templates/functions/datetime/timestamp) and +[`formatdate`](/packer/docs/templates/hcl_templates/functions/datetime/formatdate) together as soon as is convenient. -> **Note:** If you are using a large number of builders, provisioners or @@ -32,9 +32,9 @@ user variable and then access the user variable within your plugins. ## Related Functions -- [`format`](/docs/templates/hcl_templates/functions/string/format) is a more general formatting function for arbitrary +- [`format`](/packer/docs/templates/hcl_templates/functions/string/format) is a more general formatting function for arbitrary data. -- [`timestamp`](/docs/templates/hcl_templates/functions/datetime/timestamp) returns the current date and time in a format +- [`timestamp`](/packer/docs/templates/hcl_templates/functions/datetime/timestamp) returns the current date and time in a format suitable for input to `formatdate`. -- [`formatdate`](/docs/templates/hcl_templates/functions/datetime/formatdate) can convert the resulting timestamp to +- [`formatdate`](/packer/docs/templates/hcl_templates/functions/datetime/formatdate) can convert the resulting timestamp to other date and time formats. diff --git a/website/content/docs/templates/hcl_templates/functions/datetime/timeadd.mdx b/website/content/docs/templates/hcl_templates/functions/datetime/timeadd.mdx index db1cfde5a5b..0a19c566b61 100644 --- a/website/content/docs/templates/hcl_templates/functions/datetime/timeadd.mdx +++ b/website/content/docs/templates/hcl_templates/functions/datetime/timeadd.mdx @@ -29,7 +29,7 @@ of adding the given direction to the given timestamp. -> **Breaking change note:** Packer previously let you decide your own "Date and Time format" syntax. With HCL2 and for parity with Terraform, Packer will be using the [RFC 3339](https://tools.ietf.org/html/rfc3339) "Date and Time -format" syntax. As a string. [`formatdate`](/docs/templates/hcl_templates/functions/datetime/formatdate) still allows you +format" syntax. As a string. [`formatdate`](/packer/docs/templates/hcl_templates/functions/datetime/formatdate) still allows you to format a date. ## Examples diff --git a/website/content/docs/templates/hcl_templates/functions/datetime/timestamp.mdx b/website/content/docs/templates/hcl_templates/functions/datetime/timestamp.mdx index 5336e77f7dd..b27eb1123a4 100644 --- a/website/content/docs/templates/hcl_templates/functions/datetime/timestamp.mdx +++ b/website/content/docs/templates/hcl_templates/functions/datetime/timestamp.mdx @@ -21,7 +21,7 @@ Packer run. -> **Breaking change note:** Packer previously let you decide your own "Date and Time format" syntax. With HCL2 and for parity with Terraform, Packer will be using the [RFC 3339](https://tools.ietf.org/html/rfc3339) "Date and Time -format" syntax. As a string. [`formatdate`](/docs/templates/hcl_templates/functions/datetime/formatdate) still allows you +format" syntax. As a string. [`formatdate`](/packer/docs/templates/hcl_templates/functions/datetime/formatdate) still allows you to format a date. ## Examples @@ -33,5 +33,5 @@ to format a date. ## Related Functions -- [`formatdate`](/docs/templates/hcl_templates/functions/datetime/formatdate) can convert the resulting timestamp to +- [`formatdate`](/packer/docs/templates/hcl_templates/functions/datetime/formatdate) can convert the resulting timestamp to other date and time formats. diff --git a/website/content/docs/templates/hcl_templates/functions/encoding/base64decode.mdx b/website/content/docs/templates/hcl_templates/functions/encoding/base64decode.mdx index 37832a0f6a7..8d918823047 100644 --- a/website/content/docs/templates/hcl_templates/functions/encoding/base64decode.mdx +++ b/website/content/docs/templates/hcl_templates/functions/encoding/base64decode.mdx @@ -32,5 +32,5 @@ Hello World ## Related Functions -- [`base64encode`](/docs/templates/hcl_templates/functions/encoding/base64encode) performs the opposite operation, +- [`base64encode`](/packer/docs/templates/hcl_templates/functions/encoding/base64encode) performs the opposite operation, encoding the UTF-8 bytes for a string as Base64. diff --git a/website/content/docs/templates/hcl_templates/functions/encoding/base64encode.mdx b/website/content/docs/templates/hcl_templates/functions/encoding/base64encode.mdx index c79efc8d800..2d3441d8887 100644 --- a/website/content/docs/templates/hcl_templates/functions/encoding/base64encode.mdx +++ b/website/content/docs/templates/hcl_templates/functions/encoding/base64encode.mdx @@ -33,5 +33,5 @@ SGVsbG8gV29ybGQ= ## Related Functions -- [`base64decode`](/docs/templates/hcl_templates/functions/encoding/base64decode) performs the opposite operation, +- [`base64decode`](/packer/docs/templates/hcl_templates/functions/encoding/base64decode) performs the opposite operation, decoding Base64 data and interpreting it as a UTF-8 string. diff --git a/website/content/docs/templates/hcl_templates/functions/encoding/csvdecode.mdx b/website/content/docs/templates/hcl_templates/functions/encoding/csvdecode.mdx index abd073ec665..88cb42d49e6 100644 --- a/website/content/docs/templates/hcl_templates/functions/encoding/csvdecode.mdx +++ b/website/content/docs/templates/hcl_templates/functions/encoding/csvdecode.mdx @@ -39,7 +39,7 @@ number of fields, or this function will produce an error. ## Use with the `for_each` meta-argument You can use the result of `csvdecode` with -[the `for_each` meta-argument](https://www.terraform.io/docs/configuration/resources.html#for_each-multiple-resource-instances-defined-by-a-map-or-set-of-strings) +[the `for_each` meta-argument](/terraform/docs/configuration/resources#for_each-multiple-resource-instances-defined-by-a-map-or-set-of-strings) to describe a collection of similar objects whose differences are described by the rows in the given CSV file. @@ -87,7 +87,7 @@ create or destroy associated instances as appropriate. If there is no reasonable value you can use as a unique identifier in your CSV then you could instead use -[the `count` meta-argument](https://www.terraform.io/docs/configuration/resources.html#count-multiple-resource-instances-by-count) +[the `count` meta-argument](/terraform/docs/configuration/resources#count-multiple-resource-instances-by-count) to define an object for each CSV row, with each one identified by its index into the list returned by `csvdecode`. However, in that case any future updates to the CSV may be disruptive if they change the positions of particular objects in diff --git a/website/content/docs/templates/hcl_templates/functions/encoding/jsondecode.mdx b/website/content/docs/templates/hcl_templates/functions/encoding/jsondecode.mdx index e8696b7e9a5..ade3fd2bd1d 100644 --- a/website/content/docs/templates/hcl_templates/functions/encoding/jsondecode.mdx +++ b/website/content/docs/templates/hcl_templates/functions/encoding/jsondecode.mdx @@ -13,7 +13,7 @@ of the result of decoding that string. The JSON encoding is defined in [RFC 7159](https://tools.ietf.org/html/rfc7159). This function maps JSON values to -[Packer language values](/docs/templates/hcl_templates/expressions#types-and-values) +[Packer language values](/packer/docs/templates/hcl_templates/expressions#types-and-values) in the following way: | JSON type | Packer type | @@ -42,5 +42,5 @@ true ## Related Functions -- [`jsonencode`](/docs/templates/hcl_templates/functions/encoding/jsonencode) performs the opposite operation, _encoding_ +- [`jsonencode`](/packer/docs/templates/hcl_templates/functions/encoding/jsonencode) performs the opposite operation, _encoding_ a value as JSON. diff --git a/website/content/docs/templates/hcl_templates/functions/encoding/jsonencode.mdx b/website/content/docs/templates/hcl_templates/functions/encoding/jsonencode.mdx index e5c02f8916d..fb75ee7fa84 100644 --- a/website/content/docs/templates/hcl_templates/functions/encoding/jsonencode.mdx +++ b/website/content/docs/templates/hcl_templates/functions/encoding/jsonencode.mdx @@ -10,7 +10,7 @@ description: The jsonencode function encodes a given value as a JSON string. The JSON encoding is defined in [RFC 7159](https://tools.ietf.org/html/rfc7159). This function maps -[Packer language values](/docs/templates/hcl_templates/expressions#types-and-values) +[Packer language values](/packer/docs/templates/hcl_templates/expressions#types-and-values) to JSON values in the following way: | Packer type | JSON type | @@ -39,5 +39,5 @@ rarely a problem in practice. ## Related Functions -- [`jsondecode`](/docs/templates/hcl_templates/functions/encoding/jsondecode) performs the opposite operation, _decoding_ +- [`jsondecode`](/packer/docs/templates/hcl_templates/functions/encoding/jsondecode) performs the opposite operation, _decoding_ a JSON string to obtain its represented value. diff --git a/website/content/docs/templates/hcl_templates/functions/encoding/yamldecode.mdx b/website/content/docs/templates/hcl_templates/functions/encoding/yamldecode.mdx index cb853e66a70..ea787ca2c06 100644 --- a/website/content/docs/templates/hcl_templates/functions/encoding/yamldecode.mdx +++ b/website/content/docs/templates/hcl_templates/functions/encoding/yamldecode.mdx @@ -14,7 +14,7 @@ This function supports a subset of [YAML 1.2](https://yaml.org/spec/1.2/spec.htm as described below. This function maps YAML values to -[Packer language values](/docs/templates/hcl_templates/expressions#types-and-values) +[Packer language values](/packer/docs/templates/hcl_templates/expressions#types-and-values) in the following way: | YAML type | Packer type | @@ -93,7 +93,7 @@ Call to function "yamldecode" failed: unsupported tag "!not-supported". ## Related Functions -- [`jsondecode`](/docs/templates/hcl_templates/functions/encoding/jsondecode) is a similar operation using JSON instead +- [`jsondecode`](/packer/docs/templates/hcl_templates/functions/encoding/jsondecode) is a similar operation using JSON instead of YAML. -- [`yamlencode`](/docs/templates/hcl_templates/functions/encoding/yamlencode) performs the opposite operation, _encoding_ +- [`yamlencode`](/packer/docs/templates/hcl_templates/functions/encoding/yamlencode) performs the opposite operation, _encoding_ a value as YAML. diff --git a/website/content/docs/templates/hcl_templates/functions/encoding/yamlencode.mdx b/website/content/docs/templates/hcl_templates/functions/encoding/yamlencode.mdx index 3627ebdbd01..2aa0174714c 100644 --- a/website/content/docs/templates/hcl_templates/functions/encoding/yamlencode.mdx +++ b/website/content/docs/templates/hcl_templates/functions/encoding/yamlencode.mdx @@ -12,7 +12,7 @@ description: The yamlencode function encodes a given value as a YAML string. result format may change in future versions of Packer, based on feedback. Do not use `yamldecode` to construct a value for any resource argument where changes to the result would be disruptive. To get a consistent string -representation of a value use [`jsonencode`](/docs/templates/hcl_templates/functions/encoding/jsonencode) instead; its +representation of a value use [`jsonencode`](/packer/docs/templates/hcl_templates/functions/encoding/jsonencode) instead; its results are also valid YAML because YAML is a JSON superset. This function maps -[Packer language values](/docs/templates/hcl_templates/expressions#types-and-values) +[Packer language values](/packer/docs/templates/hcl_templates/expressions#types-and-values) to YAML tags in the following way: | Packer type | YAML type | @@ -74,12 +74,12 @@ mean that this is rarely a problem in practice. `yamlencode` always uses YAML's "block style" for mappings and sequences, unless the mapping or sequence is empty. To generate flow-style YAML, use -[`jsonencode`](/docs/templates/hcl_templates/functions/encoding/jsonencode) instead: YAML flow-style is a superset +[`jsonencode`](/packer/docs/templates/hcl_templates/functions/encoding/jsonencode) instead: YAML flow-style is a superset of JSON syntax. ## Related Functions -- [`jsonencode`](/docs/templates/hcl_templates/functions/encoding/jsonencode) is a similar operation using JSON instead +- [`jsonencode`](/packer/docs/templates/hcl_templates/functions/encoding/jsonencode) is a similar operation using JSON instead of YAML. -- [`yamldecode`](/docs/templates/hcl_templates/functions/encoding/yamldecode) performs the opposite operation, _decoding_ +- [`yamldecode`](/packer/docs/templates/hcl_templates/functions/encoding/yamldecode) performs the opposite operation, _decoding_ a YAML string to obtain its represented value. diff --git a/website/content/docs/templates/hcl_templates/functions/file/abspath.mdx b/website/content/docs/templates/hcl_templates/functions/file/abspath.mdx index 243327e5b96..b9c28ca976f 100644 --- a/website/content/docs/templates/hcl_templates/functions/file/abspath.mdx +++ b/website/content/docs/templates/hcl_templates/functions/file/abspath.mdx @@ -13,7 +13,7 @@ Referring directly to filesystem paths in resource arguments may cause spurious diffs if the same configuration is applied from multiple systems or on different host operating systems. We recommend using filesystem paths only for transient values, such as the argument to -[`file`](/docs/templates/hcl_templates/functions/file) (where only the contents are then +[`file`](/packer/docs/templates/hcl_templates/functions/file) (where only the contents are then stored). ## Examples diff --git a/website/content/docs/templates/hcl_templates/functions/file/basename.mdx b/website/content/docs/templates/hcl_templates/functions/file/basename.mdx index c77be75b691..70a05e08a02 100644 --- a/website/content/docs/templates/hcl_templates/functions/file/basename.mdx +++ b/website/content/docs/templates/hcl_templates/functions/file/basename.mdx @@ -24,7 +24,7 @@ it uses backslash `\` as the path segment separator. On Unix systems, the slash Referring directly to filesystem paths in resource arguments may cause spurious diffs if the same configuration is applied from multiple systems or on different host operating systems. We recommend using filesystem paths only -for transient values, such as the argument to [`file`](/docs/templates/hcl_templates/functions/file) (where +for transient values, such as the argument to [`file`](/packer/docs/templates/hcl_templates/functions/file) (where only the contents are then stored) or in `connection` and `provisioner` blocks. ## Examples @@ -36,6 +36,6 @@ baz.txt ## Related Functions -- [`dirname`](/docs/templates/hcl_templates/functions/file/dirname) returns all of the segments of a filesystem path +- [`dirname`](/packer/docs/templates/hcl_templates/functions/file/dirname) returns all of the segments of a filesystem path _except_ the last, discarding the portion that would be returned by `basename`. diff --git a/website/content/docs/templates/hcl_templates/functions/file/dirname.mdx b/website/content/docs/templates/hcl_templates/functions/file/dirname.mdx index cb3b42a6e94..348c0363ab6 100644 --- a/website/content/docs/templates/hcl_templates/functions/file/dirname.mdx +++ b/website/content/docs/templates/hcl_templates/functions/file/dirname.mdx @@ -23,7 +23,7 @@ any slashes in the given path will be replaced by backslashes before returning. Referring directly to filesystem paths in resource arguments may cause spurious diffs if the same configuration is applied from multiple systems or on different host operating systems. We recommend using filesystem paths only -for transient values, such as the argument to [`file`](/docs/templates/hcl_templates/functions/file) (where +for transient values, such as the argument to [`file`](/packer/docs/templates/hcl_templates/functions/file) (where only the contents are then stored) or in `connection` and `provisioner` blocks. ## Examples @@ -35,5 +35,5 @@ foo/bar ## Related Functions -- [`basename`](/docs/templates/hcl_templates/functions/file/basename) returns _only_ the last portion of a filesystem +- [`basename`](/packer/docs/templates/hcl_templates/functions/file/basename) returns _only_ the last portion of a filesystem path, discarding the portion that would be returned by `dirname`. diff --git a/website/content/docs/templates/hcl_templates/functions/file/file.mdx b/website/content/docs/templates/hcl_templates/functions/file/file.mdx index 3b146a3b718..6dd36ee3a5c 100644 --- a/website/content/docs/templates/hcl_templates/functions/file/file.mdx +++ b/website/content/docs/templates/hcl_templates/functions/file/file.mdx @@ -33,5 +33,5 @@ Hello World ## Related Functions -- [`fileexists`](/docs/templates/hcl_templates/functions/file/fileexists) determines whether a file exists +- [`fileexists`](/packer/docs/templates/hcl_templates/functions/file/fileexists) determines whether a file exists at a given path. diff --git a/website/content/docs/templates/hcl_templates/functions/file/fileexists.mdx b/website/content/docs/templates/hcl_templates/functions/file/fileexists.mdx index 772b7923626..b8b0b3fe2b4 100644 --- a/website/content/docs/templates/hcl_templates/functions/file/fileexists.mdx +++ b/website/content/docs/templates/hcl_templates/functions/file/fileexists.mdx @@ -31,5 +31,5 @@ fileexists("custom-section.sh") ? file("custom-section.sh") : local.default_cont ## Related Functions -- [`file`](/docs/templates/hcl_templates/functions/file/file) reads the contents +- [`file`](/packer/docs/templates/hcl_templates/functions/file/file) reads the contents of a file at a given path. diff --git a/website/content/docs/templates/hcl_templates/functions/file/fileset.mdx b/website/content/docs/templates/hcl_templates/functions/file/fileset.mdx index 227a46873dc..e60dd126d33 100644 --- a/website/content/docs/templates/hcl_templates/functions/file/fileset.mdx +++ b/website/content/docs/templates/hcl_templates/functions/file/fileset.mdx @@ -96,7 +96,7 @@ build { List of provisioners with a `scripts` field: -- [`shell`](/docs/provisioners/shell) -- [`powershell`](/docs/provisioners/powershell) -- [`shell-local`](/docs/provisioners/shell-local) -- [`windows-shell`](/docs/provisioners/windows-shell) +- [`shell`](/packer/docs/provisioners/shell) +- [`powershell`](/packer/docs/provisioners/powershell) +- [`shell-local`](/packer/docs/provisioners/shell-local) +- [`windows-shell`](/packer/docs/provisioners/windows-shell) diff --git a/website/content/docs/templates/hcl_templates/functions/file/templatefile.mdx b/website/content/docs/templates/hcl_templates/functions/file/templatefile.mdx index f7e1907b15a..68cc8cf4706 100644 --- a/website/content/docs/templates/hcl_templates/functions/file/templatefile.mdx +++ b/website/content/docs/templates/hcl_templates/functions/file/templatefile.mdx @@ -132,7 +132,7 @@ For more information, see the main documentation for jsonencode and yamlencode. ## Related Functions -- [`file`](/docs/templates/hcl_templates/functions/file/file) reads the contents +- [`file`](/packer/docs/templates/hcl_templates/functions/file/file) reads the contents of a file at a given path. -- [`fileexists`](/docs/templates/hcl_templates/functions/file/fileexists) +- [`fileexists`](/packer/docs/templates/hcl_templates/functions/file/fileexists) determines whether a file exists at a given path. diff --git a/website/content/docs/templates/hcl_templates/functions/index.mdx b/website/content/docs/templates/hcl_templates/functions/index.mdx index 29f568aedaa..eb64615db6f 100644 --- a/website/content/docs/templates/hcl_templates/functions/index.mdx +++ b/website/content/docs/templates/hcl_templates/functions/index.mdx @@ -19,7 +19,7 @@ max(5, 12, 9) ``` For more details on syntax, see -[_Function Calls_](/docs/templates/hcl_templates/expressions#function-calls) +[_Function Calls_](/packer/docs/templates/hcl_templates/expressions#function-calls) on the Expressions page. The HCL language does not support user-defined functions, and so only diff --git a/website/content/docs/templates/hcl_templates/functions/ipnet/cidrhost.mdx b/website/content/docs/templates/hcl_templates/functions/ipnet/cidrhost.mdx index e8096807ea7..77c5679990c 100644 --- a/website/content/docs/templates/hcl_templates/functions/ipnet/cidrhost.mdx +++ b/website/content/docs/templates/hcl_templates/functions/ipnet/cidrhost.mdx @@ -21,7 +21,7 @@ cidrhost(prefix, hostnum) no more than the number of digits remaining in the address after the given prefix. For more details on how this function interprets CIDR prefixes and populates host numbers, see the worked example for -[`cidrsubnet`](/docs/templates/hcl_templates/functions/ipnet/cidrsubnet). +[`cidrsubnet`](/packer/docs/templates/hcl_templates/functions/ipnet/cidrsubnet). Conventionally host number zero is used to represent the address of the network itself and the host number that would fill all the host bits with @@ -45,5 +45,5 @@ fd00:fd12:3456:7890::22 ## Related Functions -- [`cidrsubnet`](/docs/templates/hcl_templates/functions/ipnet/cidrsubnet) calculates a subnet address under a given +- [`cidrsubnet`](/packer/docs/templates/hcl_templates/functions/ipnet/cidrsubnet) calculates a subnet address under a given network address prefix. diff --git a/website/content/docs/templates/hcl_templates/functions/ipnet/cidrsubnet.mdx b/website/content/docs/templates/hcl_templates/functions/ipnet/cidrsubnet.mdx index 388ce65db67..fbe916df750 100644 --- a/website/content/docs/templates/hcl_templates/functions/ipnet/cidrsubnet.mdx +++ b/website/content/docs/templates/hcl_templates/functions/ipnet/cidrsubnet.mdx @@ -27,7 +27,7 @@ additional bits added to the prefix. This function accepts both IPv6 and IPv4 prefixes, and the result always uses the same addressing scheme as the given prefix. -Unlike the related function [`cidrsubnets`](/docs/templates/hcl_templates/functions/ipnet/cidrsubnets), `cidrsubnet` +Unlike the related function [`cidrsubnets`](/packer/docs/templates/hcl_templates/functions/ipnet/cidrsubnets), `cidrsubnet` allows you to give a specific network number to use. `cidrsubnets` can allocate multiple network addresses at once, but numbers them automatically starting with zero. @@ -88,7 +88,7 @@ This gives us some additional information but also confirms (using a slightly different notation) the conversion from decimal to binary and shows the range of possible host addresses in this network. -While [`cidrhost`](/docs/templates/hcl_templates/functions/ipnet/cidrhost) allows calculating single host IP addresses, +While [`cidrhost`](/packer/docs/templates/hcl_templates/functions/ipnet/cidrhost) allows calculating single host IP addresses, `cidrsubnet` on the other hand creates a new network prefix _within_ the given network prefix. In other words, it creates a subnet. @@ -143,7 +143,7 @@ Hosts/Net: 14 Class A, Private Internet The new subnet has four bits available for host numbering, which means that there are 14 host addresses available for assignment once we subtract the network's own address and the broadcast address. You can thus use -[`cidrhost`](/docs/templates/hcl_templates/functions/ipnet/cidrhost) function to calculate those host addresses by +[`cidrhost`](/packer/docs/templates/hcl_templates/functions/ipnet/cidrhost) function to calculate those host addresses by providing it a value between 1 and 14: ```shell-session @@ -158,9 +158,9 @@ For more information on CIDR notation and subnetting, see ## Related Functions -- [`cidrhost`](/docs/templates/hcl_templates/functions/ipnet/cidrhost) calculates the IP address for a single host +- [`cidrhost`](/packer/docs/templates/hcl_templates/functions/ipnet/cidrhost) calculates the IP address for a single host within a given network address prefix. -- [`cidrnetmask`](/docs/templates/hcl_templates/functions/ipnet/cidrnetmask) converts an IPv4 network prefix in CIDR +- [`cidrnetmask`](/packer/docs/templates/hcl_templates/functions/ipnet/cidrnetmask) converts an IPv4 network prefix in CIDR notation into netmask notation. -- [`cidrsubnets`](/docs/templates/hcl_templates/functions/ipnet/cidrsubnets) can allocate multiple consecutive +- [`cidrsubnets`](/packer/docs/templates/hcl_templates/functions/ipnet/cidrsubnets) can allocate multiple consecutive addresses under a prefix at once, numbering them automatically. diff --git a/website/content/docs/templates/hcl_templates/functions/ipnet/cidrsubnets.mdx b/website/content/docs/templates/hcl_templates/functions/ipnet/cidrsubnets.mdx index 6eafaf12668..faac15f8b84 100644 --- a/website/content/docs/templates/hcl_templates/functions/ipnet/cidrsubnets.mdx +++ b/website/content/docs/templates/hcl_templates/functions/ipnet/cidrsubnets.mdx @@ -23,7 +23,7 @@ value is therefore a list with one element per `newbits` argument, each a string containing an address range in CIDR notation. For more information on IP addressing concepts, see the documentation for the -related function [`cidrsubnet`](/docs/templates/hcl_templates/functions/ipnet/cidrsubnet). `cidrsubnet` calculates +related function [`cidrsubnet`](/packer/docs/templates/hcl_templates/functions/ipnet/cidrsubnet). `cidrsubnet` calculates a single subnet address within a prefix while allowing you to specify its subnet number, while `cidrsubnets` can calculate many at once, potentially of different sizes, and assigns subnet numbers automatically. @@ -58,7 +58,7 @@ the same addressing scheme as the given prefix. ``` You can use nested `cidrsubnets` calls with -[`for` expressions](/docs/templates/hcl_templates/expressions#for-expressions) +[`for` expressions](/packer/docs/templates/hcl_templates/expressions#for-expressions) to concisely allocate groups of network address blocks: ```shell-session @@ -85,9 +85,9 @@ to concisely allocate groups of network address blocks: ## Related Functions -- [`cidrhost`](/docs/templates/hcl_templates/functions/ipnet/cidrhost) calculates the IP address for a single host +- [`cidrhost`](/packer/docs/templates/hcl_templates/functions/ipnet/cidrhost) calculates the IP address for a single host within a given network address prefix. -- [`cidrnetmask`](/docs/templates/hcl_templates/functions/ipnet/cidrnetmask) converts an IPv4 network prefix in CIDR +- [`cidrnetmask`](/packer/docs/templates/hcl_templates/functions/ipnet/cidrnetmask) converts an IPv4 network prefix in CIDR notation into netmask notation. -- [`cidrsubnet`](/docs/templates/hcl_templates/functions/ipnet/cidrsubnet) calculates a single subnet address, allowing +- [`cidrsubnet`](/packer/docs/templates/hcl_templates/functions/ipnet/cidrsubnet) calculates a single subnet address, allowing you to specify its network number. diff --git a/website/content/docs/templates/hcl_templates/functions/numeric/ceil.mdx b/website/content/docs/templates/hcl_templates/functions/numeric/ceil.mdx index 6701d086f38..2c3e9a70f10 100644 --- a/website/content/docs/templates/hcl_templates/functions/numeric/ceil.mdx +++ b/website/content/docs/templates/hcl_templates/functions/numeric/ceil.mdx @@ -21,5 +21,5 @@ given value, which may be a fraction. ## Related Functions -- [`floor`](/docs/templates/hcl_templates/functions/numeric/floor), which rounds to the nearest whole number _less than_ +- [`floor`](/packer/docs/templates/hcl_templates/functions/numeric/floor), which rounds to the nearest whole number _less than_ or equal. diff --git a/website/content/docs/templates/hcl_templates/functions/numeric/floor.mdx b/website/content/docs/templates/hcl_templates/functions/numeric/floor.mdx index 0737b815521..66faf73f200 100644 --- a/website/content/docs/templates/hcl_templates/functions/numeric/floor.mdx +++ b/website/content/docs/templates/hcl_templates/functions/numeric/floor.mdx @@ -21,5 +21,5 @@ given value, which may be a fraction. ## Related Functions -- [`ceil`](/docs/templates/hcl_templates/functions/numeric/ceil), which rounds to the nearest whole number _greater than_ +- [`ceil`](/packer/docs/templates/hcl_templates/functions/numeric/ceil), which rounds to the nearest whole number _greater than_ or equal. diff --git a/website/content/docs/templates/hcl_templates/functions/numeric/max.mdx b/website/content/docs/templates/hcl_templates/functions/numeric/max.mdx index 3de1e4d09d3..36f8ac2554e 100644 --- a/website/content/docs/templates/hcl_templates/functions/numeric/max.mdx +++ b/website/content/docs/templates/hcl_templates/functions/numeric/max.mdx @@ -24,4 +24,4 @@ to individual arguments: ## Related Functions -- [`min`](/docs/templates/hcl_templates/functions/numeric/min), which returns the _smallest_ number from a set. +- [`min`](/packer/docs/templates/hcl_templates/functions/numeric/min), which returns the _smallest_ number from a set. diff --git a/website/content/docs/templates/hcl_templates/functions/numeric/min.mdx b/website/content/docs/templates/hcl_templates/functions/numeric/min.mdx index 53894266b0b..64e697143ab 100644 --- a/website/content/docs/templates/hcl_templates/functions/numeric/min.mdx +++ b/website/content/docs/templates/hcl_templates/functions/numeric/min.mdx @@ -24,4 +24,4 @@ to individual arguments: ## Related Functions -- [`max`](/docs/templates/hcl_templates/functions/numeric/max), which returns the _greatest_ number from a set. +- [`max`](/packer/docs/templates/hcl_templates/functions/numeric/max), which returns the _greatest_ number from a set. diff --git a/website/content/docs/templates/hcl_templates/functions/numeric/parseint.mdx b/website/content/docs/templates/hcl_templates/functions/numeric/parseint.mdx index 3ab7892b754..3b8ac241185 100644 --- a/website/content/docs/templates/hcl_templates/functions/numeric/parseint.mdx +++ b/website/content/docs/templates/hcl_templates/functions/numeric/parseint.mdx @@ -46,5 +46,5 @@ Invalid value for "number" parameter: cannot parse "12" as a base 2 integer. ## Related Functions -- [`format`](/docs/templates/hcl_templates/functions/string/format) can format numbers and other values into strings, +- [`format`](/packer/docs/templates/hcl_templates/functions/string/format) can format numbers and other values into strings, with optional zero padding, alignment, etc. diff --git a/website/content/docs/templates/hcl_templates/functions/string/chomp.mdx b/website/content/docs/templates/hcl_templates/functions/string/chomp.mdx index 3c902dec19c..9586ab280ed 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/chomp.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/chomp.mdx @@ -23,5 +23,5 @@ hello ## Related Functions -- [`trimspace`](/docs/templates/hcl_templates/functions/string/trimspace), which removes all types of whitespace from +- [`trimspace`](/packer/docs/templates/hcl_templates/functions/string/trimspace), which removes all types of whitespace from both the start and the end of a string. diff --git a/website/content/docs/templates/hcl_templates/functions/string/format.mdx b/website/content/docs/templates/hcl_templates/functions/string/format.mdx index 6ab8946711c..7ac645ffedf 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/format.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/format.mdx @@ -113,7 +113,7 @@ for an unsupported format verb. ## Related Functions -- [`formatdate`](/docs/templates/hcl_templates/functions/datetime/formatdate) is a specialized formatting function for +- [`formatdate`](/packer/docs/templates/hcl_templates/functions/datetime/formatdate) is a specialized formatting function for human-readable timestamps. -- [`formatlist`](/docs/templates/hcl_templates/functions/string/formatlist) uses the same specification syntax to +- [`formatlist`](/packer/docs/templates/hcl_templates/functions/string/formatlist) uses the same specification syntax to produce a list of strings. diff --git a/website/content/docs/templates/hcl_templates/functions/string/formatlist.mdx b/website/content/docs/templates/hcl_templates/functions/string/formatlist.mdx index f13cad18216..6d110ae2065 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/formatlist.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/formatlist.mdx @@ -15,7 +15,7 @@ formatlist(spec, values...) ``` The specification string uses -[the same syntax as `format`](/docs/templates/hcl_templates/functions/string/format#specification-syntax). +[the same syntax as `format`](/packer/docs/templates/hcl_templates/functions/string/format#specification-syntax). The given values can be a mixture of list and non-list arguments. Any given lists must be the same length, which decides the length of the resulting list. @@ -45,5 +45,5 @@ once per element of the list arguments. ## Related Functions -- [`format`](/docs/templates/hcl_templates/functions/string/format) defines the specification syntax used by this +- [`format`](/packer/docs/templates/hcl_templates/functions/string/format) defines the specification syntax used by this function and produces a single string as its result. diff --git a/website/content/docs/templates/hcl_templates/functions/string/join.mdx b/website/content/docs/templates/hcl_templates/functions/string/join.mdx index 96c0a6f0e08..acdbaa8ae03 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/join.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/join.mdx @@ -25,5 +25,5 @@ foo ## Related Functions -- [`split`](/docs/templates/hcl_templates/functions/string/split) performs the opposite operation: producing a list +- [`split`](/packer/docs/templates/hcl_templates/functions/string/split) performs the opposite operation: producing a list by separating a single string using a given delimiter. diff --git a/website/content/docs/templates/hcl_templates/functions/string/lower.mdx b/website/content/docs/templates/hcl_templates/functions/string/lower.mdx index 4fbf6b1f88f..65482482207 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/lower.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/lower.mdx @@ -22,5 +22,5 @@ This function uses Unicode's definition of letters and of upper- and lowercase. ## Related Functions -- [`upper`](/docs/templates/hcl_templates/functions/string/upper) converts letters in a string to _uppercase_. -- [`title`](/docs/templates/hcl_templates/functions/string/title) converts the first letter of each word in a string to uppercase. +- [`upper`](/packer/docs/templates/hcl_templates/functions/string/upper) converts letters in a string to _uppercase_. +- [`title`](/packer/docs/templates/hcl_templates/functions/string/title) converts the first letter of each word in a string to uppercase. diff --git a/website/content/docs/templates/hcl_templates/functions/string/regex.mdx b/website/content/docs/templates/hcl_templates/functions/string/regex.mdx index 571344254f8..74d55a647a4 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/regex.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/regex.mdx @@ -30,7 +30,7 @@ It's not valid to mix both named and unnamed capture groups in the same pattern. If the given pattern does not match at all, the `regex` raises an error. To _test_ whether a given pattern matches a string, use -[`regexall`](/docs/templates/hcl_templates/functions/string/regexall) and test that the result has length greater than +[`regexall`](/packer/docs/templates/hcl_templates/functions/string/regexall) and test that the result has length greater than zero. The pattern is a string containing a mixture of literal characters and special @@ -152,8 +152,8 @@ string. ## Related Functions -- [`regexall`](/docs/templates/hcl_templates/functions/string/regexall) searches for potentially multiple matches of a given pattern in a string. -- [`replace`](/docs/templates/hcl_templates/functions/string/replace) replaces a substring of a string with another string, optionally matching using the same regular expression syntax as `regex`. +- [`regexall`](/packer/docs/templates/hcl_templates/functions/string/regexall) searches for potentially multiple matches of a given pattern in a string. +- [`replace`](/packer/docs/templates/hcl_templates/functions/string/replace) replaces a substring of a string with another string, optionally matching using the same regular expression syntax as `regex`. If Packer already has a more specialized function to parse the syntax you are trying to match, prefer to use that function instead. Regular expressions diff --git a/website/content/docs/templates/hcl_templates/functions/string/regex_replace.mdx b/website/content/docs/templates/hcl_templates/functions/string/regex_replace.mdx index a679a2bc76f..9e665baa94c 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/regex_replace.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/regex_replace.mdx @@ -43,5 +43,5 @@ hello everybody ## Related Functions -- [`replace`](/docs/templates/hcl_templates/functions/string/replace) searches a given string for another given +- [`replace`](/packer/docs/templates/hcl_templates/functions/string/replace) searches a given string for another given substring, and replaces all occurrences with a given replacement string. diff --git a/website/content/docs/templates/hcl_templates/functions/string/regexall.mdx b/website/content/docs/templates/hcl_templates/functions/string/regexall.mdx index 6722588a881..96900698148 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/regexall.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/regexall.mdx @@ -14,7 +14,7 @@ to a string and returns a list of all matches. regexall(pattern, string) ``` -`regexall` is a variant of [`regex`](/docs/templates/hcl_templates/functions/string/regex) and uses the same pattern +`regexall` is a variant of [`regex`](/packer/docs/templates/hcl_templates/functions/string/regex) and uses the same pattern syntax. For any given input to `regex`, `regexall` returns a list of whatever type `regex` would've returned, with one element per match. That is: @@ -47,7 +47,7 @@ false ## Related Functions -- [`regex`](/docs/templates/hcl_templates/functions/string/regex) searches for a single match of a given pattern, and +- [`regex`](/packer/docs/templates/hcl_templates/functions/string/regex) searches for a single match of a given pattern, and returns an error if no match is found. If Packer already has a more specialized function to parse the syntax you diff --git a/website/content/docs/templates/hcl_templates/functions/string/replace.mdx b/website/content/docs/templates/hcl_templates/functions/string/replace.mdx index 2490a6ce03d..4097756f9b1 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/replace.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/replace.mdx @@ -26,5 +26,5 @@ hello everybody ## Related Functions -- [`regex_replace`](/docs/templates/hcl_templates/functions/string/regex_replace) searches a given string for another given substring, +- [`regex_replace`](/packer/docs/templates/hcl_templates/functions/string/regex_replace) searches a given string for another given substring, and replaces each occurrence with a given replacement string. diff --git a/website/content/docs/templates/hcl_templates/functions/string/split.mdx b/website/content/docs/templates/hcl_templates/functions/string/split.mdx index 0b19f6811d0..677b10a924b 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/split.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/split.mdx @@ -35,5 +35,5 @@ split(separator, string) ## Related Functions -- [`join`](/docs/templates/hcl_templates/functions/string/join) performs the opposite operation: producing a string +- [`join`](/packer/docs/templates/hcl_templates/functions/string/join) performs the opposite operation: producing a string joining together a list of strings with a given separator. diff --git a/website/content/docs/templates/hcl_templates/functions/string/strrev.mdx b/website/content/docs/templates/hcl_templates/functions/string/strrev.mdx index 035fbd0698f..c543bfeb93a 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/strrev.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/strrev.mdx @@ -23,4 +23,4 @@ olleh ## Related Functions -- [`reverse`](/docs/templates/hcl_templates/functions/collection/reverse) reverses a sequence. +- [`reverse`](/packer/docs/templates/hcl_templates/functions/collection/reverse) reverses a sequence. diff --git a/website/content/docs/templates/hcl_templates/functions/string/title.mdx b/website/content/docs/templates/hcl_templates/functions/string/title.mdx index bb1b9454e43..15d40f3d0b8 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/title.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/title.mdx @@ -20,5 +20,5 @@ This function uses Unicode's definition of letters and of upper- and lowercase. ## Related Functions -- [`upper`](/docs/templates/hcl_templates/functions/string/upper) converts _all_ letters in a string to uppercase. -- [`lower`](/docs/templates/hcl_templates/functions/string/lower) converts all letters in a string to lowercase. +- [`upper`](/packer/docs/templates/hcl_templates/functions/string/upper) converts _all_ letters in a string to uppercase. +- [`lower`](/packer/docs/templates/hcl_templates/functions/string/lower) converts all letters in a string to lowercase. diff --git a/website/content/docs/templates/hcl_templates/functions/string/trim.mdx b/website/content/docs/templates/hcl_templates/functions/string/trim.mdx index 273388a44ce..321a46eac0e 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/trim.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/trim.mdx @@ -19,7 +19,7 @@ hello ## Related Functions -- [`trimprefix`](/docs/templates/hcl_templates/functions/string/trimprefix) removes a word from the start of a string. -- [`trimsuffix`](/docs/templates/hcl_templates/functions/string/trimsuffix) removes a word from the end of a string. -- [`trimspace`](/docs/templates/hcl_templates/functions/string/trimspace) removes all types of whitespace from +- [`trimprefix`](/packer/docs/templates/hcl_templates/functions/string/trimprefix) removes a word from the start of a string. +- [`trimsuffix`](/packer/docs/templates/hcl_templates/functions/string/trimsuffix) removes a word from the end of a string. +- [`trimspace`](/packer/docs/templates/hcl_templates/functions/string/trimspace) removes all types of whitespace from both the start and the end of a string. diff --git a/website/content/docs/templates/hcl_templates/functions/string/trimprefix.mdx b/website/content/docs/templates/hcl_templates/functions/string/trimprefix.mdx index 337662d2be1..f9396edc0fd 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/trimprefix.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/trimprefix.mdx @@ -18,7 +18,7 @@ world ## Related Functions -- [`trim`](/docs/templates/hcl_templates/functions/string/trim) removes characters at the start and end of a string. -- [`trimsuffix`](/docs/templates/hcl_templates/functions/string/trimsuffix) removes a word from the end of a string. -- [`trimspace`](/docs/templates/hcl_templates/functions/string/trimspace) removes all types of whitespace from +- [`trim`](/packer/docs/templates/hcl_templates/functions/string/trim) removes characters at the start and end of a string. +- [`trimsuffix`](/packer/docs/templates/hcl_templates/functions/string/trimsuffix) removes a word from the end of a string. +- [`trimspace`](/packer/docs/templates/hcl_templates/functions/string/trimspace) removes all types of whitespace from both the start and the end of a string. diff --git a/website/content/docs/templates/hcl_templates/functions/string/trimspace.mdx b/website/content/docs/templates/hcl_templates/functions/string/trimspace.mdx index aa73177569b..a1f619083a9 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/trimspace.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/trimspace.mdx @@ -23,5 +23,5 @@ hello ## Related Functions -- [`chomp`](/docs/templates/hcl_templates/functions/string/chomp) removes just line ending characters from the _end_ of +- [`chomp`](/packer/docs/templates/hcl_templates/functions/string/chomp) removes just line ending characters from the _end_ of a string. diff --git a/website/content/docs/templates/hcl_templates/functions/string/trimsuffix.mdx b/website/content/docs/templates/hcl_templates/functions/string/trimsuffix.mdx index 8385f5d97b9..e69644ca374 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/trimsuffix.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/trimsuffix.mdx @@ -18,7 +18,7 @@ hello ## Related Functions -- [`trim`](/docs/templates/hcl_templates/functions/string/trim) removes characters at the start and end of a string. -- [`trimprefix`](/docs/templates/hcl_templates/functions/string/trimprefix) removes a word from the start of a string. -- [`trimspace`](/docs/templates/hcl_templates/functions/string/trimspace) removes all types of whitespace from +- [`trim`](/packer/docs/templates/hcl_templates/functions/string/trim) removes characters at the start and end of a string. +- [`trimprefix`](/packer/docs/templates/hcl_templates/functions/string/trimprefix) removes a word from the start of a string. +- [`trimspace`](/packer/docs/templates/hcl_templates/functions/string/trimspace) removes all types of whitespace from both the start and the end of a string. diff --git a/website/content/docs/templates/hcl_templates/functions/string/upper.mdx b/website/content/docs/templates/hcl_templates/functions/string/upper.mdx index 172da4e329e..7a6bb0a5b64 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/upper.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/upper.mdx @@ -22,5 +22,5 @@ This function uses Unicode's definition of letters and of upper- and lowercase. ## Related Functions -- [`lower`](/docs/templates/hcl_templates/functions/string/lower) converts letters in a string to _lowercase_. -- [`title`](/docs/templates/hcl_templates/functions/string/title) converts the first letter of each word in a string to uppercase. +- [`lower`](/packer/docs/templates/hcl_templates/functions/string/lower) converts letters in a string to _lowercase_. +- [`title`](/packer/docs/templates/hcl_templates/functions/string/title) converts the first letter of each word in a string to uppercase. diff --git a/website/content/docs/templates/hcl_templates/functions/uuid/uuidv4.mdx b/website/content/docs/templates/hcl_templates/functions/uuid/uuidv4.mdx index 6fc9430af6f..d3135ae2278 100644 --- a/website/content/docs/templates/hcl_templates/functions/uuid/uuidv4.mdx +++ b/website/content/docs/templates/hcl_templates/functions/uuid/uuidv4.mdx @@ -24,4 +24,4 @@ b5ee72a3-54dd-c4b8-551c-4bdc0204cedb ## Related Functions -- [`uuidv5`](/docs/templates/hcl_templates/functions/uuid/uuidv5), which generates name-based UUIDs. +- [`uuidv5`](/packer/docs/templates/hcl_templates/functions/uuid/uuidv5), which generates name-based UUIDs. diff --git a/website/content/docs/templates/hcl_templates/functions/uuid/uuidv5.mdx b/website/content/docs/templates/hcl_templates/functions/uuid/uuidv5.mdx index fa4e14c3260..310b4b1305c 100644 --- a/website/content/docs/templates/hcl_templates/functions/uuid/uuidv5.mdx +++ b/website/content/docs/templates/hcl_templates/functions/uuid/uuidv5.mdx @@ -15,7 +15,7 @@ description: |- uuidv5(namespace, name) ``` -Unlike the pseudo-random UUIDs generated by [`uuidv4`](/docs/templates/hcl_templates/functions/uuid/uuidv4), +Unlike the pseudo-random UUIDs generated by [`uuidv4`](/packer/docs/templates/hcl_templates/functions/uuid/uuidv4), name-based UUIDs derive from namespace and an name, producing the same UUID value every time if the namespace and name are unchanged. @@ -75,4 +75,4 @@ human-significant manner, such as by reference to the standard that defined it. ## Related Functions -- [`uuidv4`](/docs/templates/hcl_templates/functions/uuid/uuidv4), which generates pseudorandom UUIDs. +- [`uuidv4`](/packer/docs/templates/hcl_templates/functions/uuid/uuidv4), which generates pseudorandom UUIDs. diff --git a/website/content/docs/templates/hcl_templates/index.mdx b/website/content/docs/templates/hcl_templates/index.mdx index 73869587c8c..72d845f8f29 100644 --- a/website/content/docs/templates/hcl_templates/index.mdx +++ b/website/content/docs/templates/hcl_templates/index.mdx @@ -14,7 +14,7 @@ Packer uses the HashiCorp Configuration Language - HCL - designed to allow concise descriptions of the required steps to get to a build file. This page describes the features of HCL2 exhaustively, if you would like to give a quick try to HCL2, you can also read the quicker [HCL2 getting started -guide](/guides/hcl). +guide](/packer/guides/hcl). ## Builds @@ -55,14 +55,14 @@ source "amazon-ebs" "main" { For full details about Packer's syntax, see: -- [Configuration Syntax](/docs/templates/hcl_templates/syntax) -- [Expressions](/docs/templates/hcl_templates/expressions) +- [Configuration Syntax](/packer/docs/templates/hcl_templates/syntax) +- [Expressions](/packer/docs/templates/hcl_templates/expressions) ## Code Organization The HCL language uses configuration files that are named with the `.pkr.hcl` file extension. There is also [a JSON-based variant of the -language](/docs/templates/hcl_templates/syntax-json) that is named with the `.pkr.json` file +language](/packer/docs/templates/hcl_templates/syntax-json) that is named with the `.pkr.json` file extension. Configuration files must always use UTF-8 encoding, and by convention are diff --git a/website/content/docs/templates/hcl_templates/locals.mdx b/website/content/docs/templates/hcl_templates/locals.mdx index 93f73c80a10..21f6914b464 100644 --- a/website/content/docs/templates/hcl_templates/locals.mdx +++ b/website/content/docs/templates/hcl_templates/locals.mdx @@ -16,16 +16,16 @@ be overridden from the command line or special variable files. Local variables can be thought of as constants, and are not able to be overridden at runtime. This page is about local variables. To learn about input variables, see the -[input variables](/docs/templates/hcl_templates/variables) page. +[input variables](/packer/docs/templates/hcl_templates/variables) page. Local values assign a name to an expression, that can then be used multiple times within a folder. -If [variables](/docs/templates/hcl_templates/variables) are analogous to function arguments then +If [variables](/packer/docs/templates/hcl_templates/variables) are analogous to function arguments then _local values_ are comparable to a function's local variables. Input variable and local variable usage are introduced in the [_Variables -Guide_](/guides/hcl/variables). +Guide_](/packer/guides/hcl/variables). ## Examples diff --git a/website/content/docs/templates/hcl_templates/path-variables.mdx b/website/content/docs/templates/hcl_templates/path-variables.mdx index 5484b57a93f..fb9b74defc9 100644 --- a/website/content/docs/templates/hcl_templates/path-variables.mdx +++ b/website/content/docs/templates/hcl_templates/path-variables.mdx @@ -25,16 +25,16 @@ locals { ## Related Functions -- [`abspath`](/docs/templates/hcl_templates/functions/file/abspath) takes a string containing +- [`abspath`](/packer/docs/templates/hcl_templates/functions/file/abspath) takes a string containing a filesystem path and converts it to an absolute path. -- [`basename`](/docs/templates/hcl_templates/functions/file/basename) returns _only_ the last +- [`basename`](/packer/docs/templates/hcl_templates/functions/file/basename) returns _only_ the last portion of a filesystem path, discarding the portion that would be returned by `dirname`. -- [`fileset`](/docs/templates/hcl_templates/functions/file/fileset) enumerates a set of +- [`fileset`](/packer/docs/templates/hcl_templates/functions/file/fileset) enumerates a set of regular file names given a path and pattern. -- [`dirname`](/docs/templates/hcl_templates/functions/file/dirname) returns all of the +- [`dirname`](/packer/docs/templates/hcl_templates/functions/file/dirname) returns all of the segments of a filesystem path _except_ the last, discarding the portion that would be returned by `basename`. diff --git a/website/content/docs/templates/hcl_templates/syntax-json.mdx b/website/content/docs/templates/hcl_templates/syntax-json.mdx index 13bc168545b..414f864a0ec 100644 --- a/website/content/docs/templates/hcl_templates/syntax-json.mdx +++ b/website/content/docs/templates/hcl_templates/syntax-json.mdx @@ -10,7 +10,7 @@ description: |- `@include 'from-1.5/beta-hcl2-note.mdx'` Most Packer configurations are written in [the native HCL -syntax](/docs/templates/hcl_templates/syntax), which is designed to be easy for humans to read and +syntax](/packer/docs/templates/hcl_templates/syntax), which is designed to be easy for humans to read and update. Packer also supports an alternative syntax that is JSON-compatible. This @@ -96,7 +96,7 @@ different (see [block-type-specific exceptions](#block-type-specific-exceptions) correspond either to argument names or to nested block type names. - Where a property corresponds to an argument that accepts - [arbitrary expressions](/docs/templates/hcl_templates/expressions) in the native syntax, the + [arbitrary expressions](/packer/docs/templates/hcl_templates/expressions) in the native syntax, the property value is mapped to an expression as described under [_Expression Mapping_](#expression-mapping) below. For arguments that do _not_ accept arbitrary expressions, the interpretation of the property @@ -113,20 +113,20 @@ different (see [block-type-specific exceptions](#block-type-specific-exceptions) ## Expression Mapping Since JSON grammar is not able to represent all of the Packer language -[expression syntax](/docs/templates/hcl_templates/expressions), JSON values interpreted as expressions +[expression syntax](/packer/docs/templates/hcl_templates/expressions), JSON values interpreted as expressions are mapped as follows: | JSON | Packer Language Interpretation | | ------- | -------------------------------------------------------------------------------------------------------------------------------- | | Boolean | A literal `bool` value. | | Number | A literal `number` value. | -| String | Parsed as a [string template](/docs/templates/hcl_templates/expressions#string-templates) and then evaluated as described below. | +| String | Parsed as a [string template](/packer/docs/templates/hcl_templates/expressions#string-templates) and then evaluated as described below. | | Object | Each property value is mapped per this table, producing an `object(...)` value with suitable attribute types. | | Array | Each element is mapped per this table, producing a `tuple(...)` value with suitable element types. | | Null | A literal `null`. | When a JSON string is encountered in a location where arbitrary expressions are -expected, its value is first parsed as a [string template](/docs/templates/hcl_templates/expressions#string-templates) +expected, its value is first parsed as a [string template](/packer/docs/templates/hcl_templates/expressions#string-templates) and then it is evaluated to produce the final result. If the given template consists _only_ of a single interpolation sequence, diff --git a/website/content/docs/templates/hcl_templates/syntax.mdx b/website/content/docs/templates/hcl_templates/syntax.mdx index e031dd6300d..7ed024eca5d 100644 --- a/website/content/docs/templates/hcl_templates/syntax.mdx +++ b/website/content/docs/templates/hcl_templates/syntax.mdx @@ -17,7 +17,7 @@ are built from. This page describes the _native syntax_ of HCL, which is a rich language designed to be easy for humans to read and write. The constructs in HCL can -also be expressed in [JSON syntax](/docs/templates/hcl_templates/syntax-json), which is harder for +also be expressed in [JSON syntax](/packer/docs/templates/hcl_templates/syntax-json), which is harder for humans to read and edit but easier to generate and parse programmatically. This low-level syntax of HCL is defined in terms of a syntax called _HCL_, @@ -47,7 +47,7 @@ after the equals sign is the argument's value. The context where the argument appears determines what value types are valid (for example, each source type has a schema that defines the types of its arguments), but many arguments accept arbitrary -[expressions](/docs/templates/hcl_templates/expressions), which allow the value to +[expressions](/packer/docs/templates/hcl_templates/expressions), which allow the value to either be specified literally or generated from other values programmatically. ### Blocks diff --git a/website/content/docs/templates/hcl_templates/variables.mdx b/website/content/docs/templates/hcl_templates/variables.mdx index 1e0386f9f86..43b2a7db16f 100644 --- a/website/content/docs/templates/hcl_templates/variables.mdx +++ b/website/content/docs/templates/hcl_templates/variables.mdx @@ -16,7 +16,7 @@ be overridden from the command line or special variable files. Local variables can be thought of as constants, and are not able to be overridden at runtime. This page is about input variables. To learn about local variables, see the -[locals](/docs/templates/hcl_templates/locals) page. +[locals](/packer/docs/templates/hcl_templates/locals) page. Input variables serve as parameters for a Packer build, allowing aspects of the build to be customized without altering the build's own source code. @@ -25,14 +25,14 @@ When you declare variables in the build of your configuration, you can set their values using CLI options and environment variables. Input variable and local variable usage are introduced in the [_Variables -Guide_](/guides/hcl/variables). +Guide_](/packer/guides/hcl/variables). -> **Note:** For brevity, input variables are often referred to as just "variables" or "Packer variables" when it is clear from context what sort of variable is being discussed. Other kinds of variables in Packer include _environment variables_ (set by the shell where Packer runs) and _expression variables_ (used to indirectly represent a value in an -[expression](/docs/templates/hcl_templates/expressions)). +[expression](/packer/docs/templates/hcl_templates/expressions)). ## Declaring an Input Variable @@ -107,7 +107,7 @@ configuration. [inpage-type]: #type-constraints The `type` argument in a `variable` block allows you to restrict the [type of -value](/docs/templates/hcl_templates/expressions#types-and-values) that will be accepted as the value +value](/packer/docs/templates/hcl_templates/expressions#types-and-values) that will be accepted as the value for a variable. If no type constraint is set then a value of any type is accepted. @@ -133,7 +133,7 @@ The type constructors allow you to specify complex types such as collections: The keyword `any` may be used to indicate that any type is acceptable. For more information on the meaning and behavior of these different types, as well as detailed information about automatic conversion of complex types, see [Type -Constraints](https://www.terraform.io/docs/configuration/types.html). +Constraints](/terraform/docs/configuration/types). If both the `type` and `default` arguments are specified, the given default value must be convertible to the specified type. @@ -174,7 +174,7 @@ maintainers, use comments. ## Using Input Variable Values Within the build that declared a variable, its value can be accessed from -within [expressions](/docs/templates/hcl_templates/expressions) as `var.`, where `` +within [expressions](/packer/docs/templates/hcl_templates/expressions) as `var.`, where `` matches the label given in the declaration block: ```hcl @@ -282,7 +282,7 @@ case letters as in the above example. ### Complex-typed Values When variable values are provided in a variable definitions file, Packer's -[usual syntax](/docs/templates/hcl_templates/expressions) can be used to assign +[usual syntax](/packer/docs/templates/hcl_templates/expressions) can be used to assign complex-typed values, like lists and maps. Some special rules apply to the `-var` command line option and to environment diff --git a/website/content/docs/templates/index.mdx b/website/content/docs/templates/index.mdx index 6d064dd97ad..b3c0ccd661b 100644 --- a/website/content/docs/templates/index.mdx +++ b/website/content/docs/templates/index.mdx @@ -28,4 +28,4 @@ From version **1.7.0**, HCL2 becomes officially the preferred way to write Packe configuration(s). If you need help upgrading a JSON template to an HCL template, check -our upgrade guide [here](https://developer.hashicorp.com/packer/tutorials/configuration-language/hcl2-upgrade). +our upgrade guide [here](/packer/tutorials/configuration-language/hcl2-upgrade). diff --git a/website/content/docs/templates/legacy_json_templates/builders.mdx b/website/content/docs/templates/legacy_json_templates/builders.mdx index bac3b52ebd0..42d3afa15b4 100644 --- a/website/content/docs/templates/legacy_json_templates/builders.mdx +++ b/website/content/docs/templates/legacy_json_templates/builders.mdx @@ -36,7 +36,7 @@ Within a template, a section of builder definitions looks like this: ## Builder Definition A single builder definition maps to exactly one -[build](/docs/terminology#builds). A builder definition is a +[build](/packer/docs/terminology#builds). A builder definition is a JSON object that requires at least a `type` key. The `type` is the name of the builder that will be used to create a machine image for the build. @@ -69,10 +69,10 @@ of them since the names must be unique. ## Communicators Every build is associated with a single -[communicator](/docs/templates/legacy_json_templates/communicator). Communicators are used to +[communicator](/packer/docs/templates/legacy_json_templates/communicator). Communicators are used to establish a connection for provisioning a remote machine (such as an AWS instance or local virtual machine). All the examples for the various builders show some communicator (usually SSH), but the communicators are highly customizable so we recommend reading the -[communicator documentation](/docs/templates/legacy_json_templates/communicator). +[communicator documentation](/packer/docs/templates/legacy_json_templates/communicator). diff --git a/website/content/docs/templates/legacy_json_templates/communicator.mdx b/website/content/docs/templates/legacy_json_templates/communicator.mdx index 7da238e849e..a1c32a9c69b 100644 --- a/website/content/docs/templates/legacy_json_templates/communicator.mdx +++ b/website/content/docs/templates/legacy_json_templates/communicator.mdx @@ -13,7 +13,7 @@ Communicators are the mechanism Packer uses to upload files, execute scripts, etc. with the machine being created. Communicators are configured within the -[builder](/docs/templates/legacy_json_templates/builders) section. +[builder](/packer/docs/templates/legacy_json_templates/builders) section. All communicators have the following options: @@ -32,7 +32,7 @@ the Packer template. However, if you are building from a brand-new and unconfigured operating system image, you will almost always have to perform some extra work to configure SSH on the guest machine. For most operating system distributions, this work will -be performed by a [boot_command](/plugins/builders/vmware/iso#boot-configuration) that references a file which +be performed by a [boot_command](/packer/plugins/builders/vmware/iso#boot-configuration) that references a file which provides answers to the normally-interactive questions you get asked when installing an operating system. The name of this file varies by operating system; some common examples are the "preseed" file required by Debian, the @@ -49,4 +49,4 @@ system is critical for being able to successfully use Packer. ## Communicator-Specific Options For more details on how to use each communicator, visit the -[communicators](/docs/communicators) page. +[communicators](/packer/docs/communicators) page. diff --git a/website/content/docs/templates/legacy_json_templates/engine.mdx b/website/content/docs/templates/legacy_json_templates/engine.mdx index f657ca09354..e603320c5ef 100644 --- a/website/content/docs/templates/legacy_json_templates/engine.mdx +++ b/website/content/docs/templates/legacy_json_templates/engine.mdx @@ -59,7 +59,7 @@ Here is a full list of the available functions for reference. each function will behave. - `env` - Returns environment variables. See example in [using home - variable](/docs/templates/legacy_json_templates/user-variables#using-home-variable) + variable](/packer/docs/templates/legacy_json_templates/user-variables#using-home-variable) - `build` - This engine will allow you to access, from provisioners and post-processors, special variables that provide connection information and basic instance state information. Usage example: @@ -109,11 +109,11 @@ Here is a full list of the available functions for reference. For builder-specific builder variables, please also refer to the builder docs: - - Amazon EC2: [chroot](/plugins/builders/amazon/chroot#build-shared-information-variables), - [EBS Volume](/plugins/builders/amazon/ebsvolume#build-shared-information-variables), - [EBS](/plugins/builders/amazon/ebs#build-shared-information-variables), - [EBS Surrogate](/plugins/builders/amazon/ebssurrogate#build-shared-information-variables), - [Instance](/plugins/builders/amazon/instance#build-shared-information-variables). + - Amazon EC2: [chroot](/packer/plugins/builders/amazon/chroot#build-shared-information-variables), + [EBS Volume](/packer/plugins/builders/amazon/ebsvolume#build-shared-information-variables), + [EBS](/packer/plugins/builders/amazon/ebs#build-shared-information-variables), + [EBS Surrogate](/packer/plugins/builders/amazon/ebssurrogate#build-shared-information-variables), + [Instance](/packer/plugins/builders/amazon/instance#build-shared-information-variables). This engine is in beta; please report any issues or requests on the Packer issue tracker on GitHub. @@ -121,7 +121,7 @@ Here is a full list of the available functions for reference. - `isotime [FORMAT]` - UTC time, which can be [formatted](https://pkg.go.dev/time#example_Time_Format). See more examples below in [the `isotime` format - reference](/docs/templates/legacy_json_templates/engine#isotime-function-format-reference). + reference](/packer/docs/templates/legacy_json_templates/engine#isotime-function-format-reference). `strftime FORMAT` - UTC time, formated using the ISO C standard format `FORMAT`. See [jehiah/go-strftime](https://github.com/jehiah/go-strftime) for a list @@ -209,9 +209,9 @@ Template variables are special variables automatically set by Packer at build time. Some builders, provisioners and other components have template variables that are available only for that component. Template variables are recognizable because they're prefixed by a period, such as `{{ .Name }}`. For example, when -using the [`shell`](/plugins/builders/vmware/iso) builder template variables +using the [`shell`](/packer/plugins/builders/vmware/iso) builder template variables are available to customize the -[`execute_command`](/docs/provisioners/shell#execute_command) parameter +[`execute_command`](/packer/docs/provisioners/shell#execute_command) parameter used to determine how Packer will run the shell command. ```json @@ -231,7 +231,7 @@ the list of the environment variables and the path to the script to be executed respectively. -> **Note:** In addition to template variables, you can specify your own -user variables. See the [user variable](/docs/templates/legacy_json_templates/user-variables) +user variables. See the [user variable](/packer/docs/templates/legacy_json_templates/user-variables) documentation for more information on user variables. # isotime Function Format Reference diff --git a/website/content/docs/templates/legacy_json_templates/index.mdx b/website/content/docs/templates/legacy_json_templates/index.mdx index 9f169963cb9..3a01ca7a5b6 100644 --- a/website/content/docs/templates/legacy_json_templates/index.mdx +++ b/website/content/docs/templates/legacy_json_templates/index.mdx @@ -31,11 +31,11 @@ Along with each key, it is noted whether it is required or not. builders that will be used to create machine images for this template, and configures each of those builders. For more information on how to define and configure a builder, read the sub-section on [configuring builders in - templates](/docs/templates/legacy_json_templates/builders). + templates](/packer/docs/templates/legacy_json_templates/builders). - `description` (optional) is a string providing a description of what the template does. This output is used only in the [inspect - command](/docs/commands/inspect). + command](/packer/docs/commands/inspect). - `min_packer_version` (optional) is a string that has a minimum Packer version that is required to parse the template. This can be used to ensure @@ -48,20 +48,20 @@ Along with each key, it is noted whether it is required or not. not specified, then no post-processing will be done. For more information on what post-processors do and how they're defined, read the sub-section on [configuring post-processors in - templates](/docs/templates/legacy_json_templates/post-processors). + templates](/packer/docs/templates/legacy_json_templates/post-processors). - `provisioners` (optional) is an array of one or more objects that defines the provisioners that will be used to install and configure software for the machines created by each of the builders. If it is not specified, then no provisioners will be run. For more information on how to define and configure a provisioner, read the sub-section on [configuring provisioners - in templates](/docs/templates/legacy_json_templates/provisioners). + in templates](/packer/docs/templates/legacy_json_templates/provisioners). - `variables` (optional) is an object of one or more key/value strings that defines user variables contained in the template. If it is not specified, then no variables are defined. For more information on how to define and use user variables, read the sub-section on [user variables in - templates](/docs/templates/legacy_json_templates/user-variables). + templates](/packer/docs/templates/legacy_json_templates/user-variables). ## Comments @@ -155,7 +155,7 @@ script to it and run that script using SSH. -> **Note:** This example requires an account with Amazon Web Services. There are a number of parameters which need to be provided for a functional -build to take place. See the [Amazon builder](/plugins/builders/amazon) +build to take place. See the [Amazon builder](/packer/plugins/builders/amazon) documentation for more information. ```json diff --git a/website/content/docs/templates/legacy_json_templates/provisioners.mdx b/website/content/docs/templates/legacy_json_templates/provisioners.mdx index 0b78248cdf2..5ecf6602391 100644 --- a/website/content/docs/templates/legacy_json_templates/provisioners.mdx +++ b/website/content/docs/templates/legacy_json_templates/provisioners.mdx @@ -150,7 +150,7 @@ This example is shown below: As you can see, the `override` key is used. The value of this key is another JSON object where the key is the name of a [builder -definition](/docs/templates/legacy_json_templates/builders). The value of this is in turn +definition](/packer/docs/templates/legacy_json_templates/builders). The value of this is in turn another JSON object. This JSON object simply contains the provisioner configuration as normal. This configuration is merged into the default provisioner configuration. diff --git a/website/content/docs/templates/legacy_json_templates/user-variables.mdx b/website/content/docs/templates/legacy_json_templates/user-variables.mdx index f7eda22a5bd..b3c00d620f4 100644 --- a/website/content/docs/templates/legacy_json_templates/user-variables.mdx +++ b/website/content/docs/templates/legacy_json_templates/user-variables.mdx @@ -19,7 +19,7 @@ environment-specific data, and other types of information out of your templates. This maximizes the portability of the template. Using user variables expects you to know how [configuration -templates](/docs/templates/legacy_json_templates/engine) work. If you don't know how +templates](/packer/docs/templates/legacy_json_templates/engine) work. If you don't know how configuration templates work yet, please read that page first. ## Usage @@ -117,7 +117,7 @@ This will default `soft_versions` to the value of the key The configuration for consul (address, tokens, ...) must be specified as environment variables, as specified in the -[Documentation](https://www.consul.io/docs/commands#environment-variables). +[Documentation](/consul/docs/commands#environment-variables). ## Vault Variables @@ -186,7 +186,7 @@ The full list of available environment variables is: ``` and detailed documentation for usage of each of those variables can be found -[here](https://www.vaultproject.io/docs/commands/#environment-variables). +[here](/vault/docs/commands#environment-variables). ## AWS Secrets Manager Variables diff --git a/website/content/docs/terminology.mdx b/website/content/docs/terminology.mdx index 27036a51929..d7ddeffd2c7 100644 --- a/website/content/docs/terminology.mdx +++ b/website/content/docs/terminology.mdx @@ -58,7 +58,7 @@ for quick referencing. image. They perform the major work of making the image contain useful software. Example provisioners include shell scripts, Chef, Puppet, etc. -- `Templates` are either [HCL](templates/hcl_templates) or JSON files which +- `Templates` are either [HCL](https://packer.io/templates/hcl_templates) or JSON files which define one or more builds by configuring the various components of Packer. Packer is able to read a template and use that information to create multiple machine images in parallel. diff --git a/website/content/guides/1.7-plugin-upgrade.mdx b/website/content/guides/1.7-plugin-upgrade.mdx index 6e2e849e4c1..71cc577d2bc 100644 --- a/website/content/guides/1.7-plugin-upgrade.mdx +++ b/website/content/guides/1.7-plugin-upgrade.mdx @@ -27,7 +27,7 @@ There are two main reasons we wrote the new server type. First, it enables multiple related components, for example a builder and a post-processor that share a hypervisor or cloud, to live together in the same plugin. This helps maintainers who are experts in a specific technology to focus on that technology without having to maintain several repositories that submodule the same common code. You can think of a multi-component plugin as being in some ways analogous to Terraform providers, in the sense that both frequently bundle common resources or components by hypervisor or cloud. -Second, the new server provides the Packer core with structured metadata that allows the new `packer init` feature to work. This data includes semantic versioning that we need to implement the new [`required_plugins`](/docs/templates/hcl_templates/blocks/packer#specifying-plugin-requirements) block, which allows us to ensure that users are using the correct _version_ of their plugin for a given Packer template. If you don't upgrade, your users cannot take advantage of the `packer init` tooling. +Second, the new server provides the Packer core with structured metadata that allows the new `packer init` feature to work. This data includes semantic versioning that we need to implement the new [`required_plugins`](/packer/docs/templates/hcl_templates/blocks/packer#specifying-plugin-requirements) block, which allows us to ensure that users are using the correct _version_ of their plugin for a given Packer template. If you don't upgrade, your users cannot take advantage of the `packer init` tooling. ### How to upgrade the plugin @@ -105,12 +105,12 @@ When you do this, if you install your plugin as `packer-plugin-foo`, the Packer ## Registering multiple components -The goal of this guide is to help you upgrade a single-component plugin to use the new SDK and plugin server; check out our [Plugin Development Basics](/docs/plugins/creation#plugin-development-basics) guide for details on how to add new components to your plugin. +The goal of this guide is to help you upgrade a single-component plugin to use the new SDK and plugin server; check out our [Plugin Development Basics](/packer/docs/plugins/creation#plugin-development-basics) guide for details on how to add new components to your plugin. ## Distributing migrated plugins -Once a plugin has been migrated to use the `packer-plugin-sdk` it can be released as it normally would and used by Packer by [installing the plugin](/docs/plugins#installing-plugins) manually into the Packer plugin directory. But this method will not allow your users to take advantage of the `packer init` command. +Once a plugin has been migrated to use the `packer-plugin-sdk` it can be released as it normally would and used by Packer by [installing the plugin](/packer/docs/plugins#installing-plugins) manually into the Packer plugin directory. But this method will not allow your users to take advantage of the `packer init` command. If you want Packer to be able to automatically install your plugin for your users via`packer init` -- the preferred method of installation -- you need to make the plugin available on GitHub in a repository named after the multi-component plugin. `https://github.com//packer-plugin-name`. We recognize that this may require you to rename or fork your plugin repository, but we think that it is worth the inconvenience to reduce ambiguity in the `init` call. -See our documentation on [Creating a GitHub Release](/docs/plugins/creation#creating-a-github-release) for details on the recommended practice for releasing Packer plugins on GitHub. +See our documentation on [Creating a GitHub Release](/packer/docs/plugins/creation#creating-a-github-release) for details on the recommended practice for releasing Packer plugins on GitHub. diff --git a/website/content/guides/1.7-template-upgrade.mdx b/website/content/guides/1.7-template-upgrade.mdx index 32b06c5a138..cb3ce7d960a 100644 --- a/website/content/guides/1.7-template-upgrade.mdx +++ b/website/content/guides/1.7-template-upgrade.mdx @@ -9,10 +9,10 @@ usage within a Packer template configuration. In short, `packer init` will look at the `required_plugins` block definition within a template, and download the correct binaries for that template. For details about how the command works and where the plugins will be installed, please -refer to the [`packer init`](/docs/commands/init) documentation. +refer to the [`packer init`](/packer/docs/commands/init) documentation. -> **Note:** `packer init` is only supported for HCL templates. You can -upgrade legacy JSON templates to HCL using the [hcl2_upgrade](/docs/commands/hcl2_upgrade) command. +upgrade legacy JSON templates to HCL using the [hcl2_upgrade](/packer/docs/commands/hcl2_upgrade) command. ## Updating your template with the `required_plugins` block @@ -25,7 +25,7 @@ won't work if no `required_plugins` is provided. We strongly encourage you to upgrade and start using `required_plugins` block within your templates to manage plugin installation, but if you prefer not to use the `required_plugins` block you can continue to -[install plugins manually](/docs/plugins#installing-plugins). +[install plugins manually](/packer/docs/plugins#installing-plugins). ### What if you only use components that are built into the Packer core? @@ -48,7 +48,7 @@ that the plugin is ready for use with `packer init`: `packer init`. If the repository has a name that references a specific Packer component (for example, `packer-provisioner-*`, `packer-builder-*`, or `packer-post-processor-*`) then the plugin likely still needs to be upgraded to be compatible with `packer init`. Reach out to your plugin maintainer to request that they upgrade; the - Packer team has written a maintainer-focused guide [here](/guides/1.7-plugin-upgrade). + Packer team has written a maintainer-focused guide [here](/packer/guides/1.7-plugin-upgrade). If the plugin(s) have been upgraded, then they can be used with the `required_plugins` block in your upgraded template. @@ -60,7 +60,7 @@ in touch with all currently known plugin maintainers to provide support during t If you are willing to upgrade your template but found out that the plugin you are using hasn't been upgraded yet, we suggest you reach out to the plugin maintainers and ask for an upgrade; the Packer team has written a -maintainer-focused guide [here](/guides/1.7-plugin-upgrade). +maintainer-focused guide [here](/packer/guides/1.7-plugin-upgrade). Check the table below to better understand whether your plugin is compatible with `packer init`, with manual installation, or with both for the the Packer version you are using. @@ -133,13 +133,13 @@ in the rest of the template. Here it is a brief explanation of each field: -- `version` - Should follow the [version constraints](/docs/templates/hcl_templates/blocks/packer#version-constraints). +- `version` - Should follow the [version constraints](/packer/docs/templates/hcl_templates/blocks/packer#version-constraints). - `source` - Should have the GitHub hostname, the plugin's organizational namespace, and its short name. Packer will be responsible for determining the full GitHub address. For example, if the source is `github.com/sylviamoss/comment`, Packer will download the binaries from `github.com/sylviamoss/packer-plugin-comment`. To learn more about the source field, check out the [Source - Address](/docs/plugins#source-addresses) documentation. + Address](/packer/docs/plugins#source-addresses) documentation. - `local_name`- Can be replaced with whatever you want, and the new value will become the name of the plugin. For example: diff --git a/website/content/guides/automatic-operating-system-installs/autounattend_windows.mdx b/website/content/guides/automatic-operating-system-installs/autounattend_windows.mdx index 9f920a241ae..b34ea843bae 100644 --- a/website/content/guides/automatic-operating-system-installs/autounattend_windows.mdx +++ b/website/content/guides/automatic-operating-system-installs/autounattend_windows.mdx @@ -23,9 +23,9 @@ for the official documentation. If you are installing the Windows Operating System from a mounted iso as part of your Packer build, you will need to use an Answer file. For example, you're -building an image from scratch using the [vmware-iso](/plugins/builders/vmware/iso), -[virtualbox-iso](/plugins/builders/virtualbox/iso), or -[hyperv-iso](/plugins/builders/hyperv/iso) builders. +building an image from scratch using the [vmware-iso](/packer/plugins/builders/vmware/iso), +[virtualbox-iso](/packer/plugins/builders/virtualbox/iso), or +[hyperv-iso](/packer/plugins/builders/hyperv/iso) builders. If you are not installing the operating system, you won't need to provide an answer file. If you are using a pre-built image diff --git a/website/content/guides/automatic-operating-system-installs/preseed_ubuntu.mdx b/website/content/guides/automatic-operating-system-installs/preseed_ubuntu.mdx index dedc5cd3690..c5c9ea2040f 100644 --- a/website/content/guides/automatic-operating-system-installs/preseed_ubuntu.mdx +++ b/website/content/guides/automatic-operating-system-installs/preseed_ubuntu.mdx @@ -23,9 +23,9 @@ for the official documentation. If you are installing the operating system from a mounted iso as part of your Packer build, you will need to use a preseed file. For example, you're -building an image from scratch using the [vmware-iso](/plugins/builders/vmware/iso), -[virtualbox-iso](/plugins/builders/virtualbox/iso), or -[hyperv-iso](/plugins/builders/hyperv/iso) builders. +building an image from scratch using the [vmware-iso](/packer/plugins/builders/vmware/iso), +[virtualbox-iso](/packer/plugins/builders/virtualbox/iso), or +[hyperv-iso](/packer/plugins/builders/hyperv/iso) builders. If you are not installing the operating system, you won't need to provide a preseed file. If you are using a pre-built image in a cloud, you don't need to diff --git a/website/content/guides/index.mdx b/website/content/guides/index.mdx index 5e5f5915ba2..347e876c167 100644 --- a/website/content/guides/index.mdx +++ b/website/content/guides/index.mdx @@ -14,4 +14,4 @@ please see the [Packer introduction][intro] instead and then continue on to the guides. These guides provide examples for common Packer workflows and actions for users of Packer. -[intro]: /docs/intro +[intro]: /packer/docs/intro diff --git a/website/content/guides/packer-on-cicd/build-image-in-cicd.mdx b/website/content/guides/packer-on-cicd/build-image-in-cicd.mdx index bd998c731be..99d8fe1141b 100644 --- a/website/content/guides/packer-on-cicd/build-image-in-cicd.mdx +++ b/website/content/guides/packer-on-cicd/build-image-in-cicd.mdx @@ -10,18 +10,18 @@ images with Packer. - [How to Build Immutable Infrastructure with Packer and CircleCI Workflows](https://circleci.com/blog/how-to-build-immutable-infrastructure-with-packer-and-circleci-workflows/) - [Using Packer and Ansible to Build Immutable Infrastructure in CodeShip](https://blog.codeship.com/packer-ansible/) -The majority of the [Packer Builders](/docs/builders) can run just fine in a +The majority of the [Packer Builders](/packer/docs/builders) can run just fine in a container, a common model used by most CI/CD services. However, while it is possible to run many builders in containers or nested virtualization, this may require advanced configuration; examples include the [QEMU -builder](/plugins/builders/qemu) for +builder](/packer/plugins/builders/qemu) for [KVM](https://www.linux-kvm.org/page/Main_Page) or [Xen](https://www.xenproject.org/), the [VirtualBox -builder](/plugins/builders/virtualbox) for OVA or OVF virtual machines, and the -[VMware builder](/plugins/builders/vmware) for use with VMware products that are +builder](/packer/plugins/builders/virtualbox) for OVA or OVF virtual machines, and the +[VMware builder](/packer/plugins/builders/vmware) for use with VMware products that are all designed to run on a bare-metal machine or within nested virtualization. The [Building a VirtualBox Image with Packer in -TeamCity](/guides/packer-on-cicd/build-virtualbox-image) guide shows +TeamCity](/packer/guides/packer-on-cicd/build-virtualbox-image) guide shows how to create a VirtualBox image using TeamCity's support for running scripts on bare-metal machines. diff --git a/website/content/guides/packer-on-cicd/build-virtualbox-image.mdx b/website/content/guides/packer-on-cicd/build-virtualbox-image.mdx index d2445d04207..0dace68ab1e 100644 --- a/website/content/guides/packer-on-cicd/build-virtualbox-image.mdx +++ b/website/content/guides/packer-on-cicd/build-virtualbox-image.mdx @@ -12,7 +12,7 @@ The Packer VirtualBox builder requires access to VirtualBox. Virtualization is not universally supported on cloud instances, so we recommend you run these builds on either a bare metal server, or cloud instances which support nested virtualization, such as Azure or GCP. This is also true for the -[VMware](/plugins/builders/vmware) and the [QEMU](/plugins/builders/qemu) +[VMware](/packer/plugins/builders/vmware) and the [QEMU](/packer/plugins/builders/qemu) Packer builders. We will use Chef's [Bento boxes](https://github.com/chef/bento) to provision an @@ -71,7 +71,7 @@ $ dpkg -i virtualbox-5.2_5.2.2-119230~Ubuntu~xenial_amd64.deb ``` You can also use the [`remote-exec` -provisioner](https://www.terraform.io/docs/provisioners/remote-exec.html) in +provisioner](/terraform/docs/provisioners/remote-exec) in your Terraform configuration to automatically run these commands when provisioning the new instance. @@ -79,7 +79,7 @@ provisioning the new instance. The TeamCity Agent machine will also need Packer Installed. You can find the latest download link from the [Packer -Download](/downloads) page. +Download](/packer/downloads) page. ```shell-session $ curl -OL "https://releases.hashicorp.com/packer/1.1.2/packer_1.1.2_linux_amd64.zip" @@ -127,10 +127,10 @@ This will use the `build` command in Packer to build the image defined in using is a fork of [Chef/Bento](https://github.com/chef/bento). Packer defaults to building VirtualBox machines by launching a GUI that shows the console. Since this will run in CI/CD, use the [`headless` -variable](/plugins/builders/virtualbox/iso#headless) to instruct Packer to +variable](/packer/plugins/builders/virtualbox/iso#headless) to instruct Packer to start the machine without the console. Packer can build multiple image types, so the [`-only=virtualbox-iso` -option](/docs/commands/build#only-foo-bar-baz) instructs Packer to only +option](/packer/docs/commands/build#only-foo-bar-baz) instructs Packer to only build the builds with the name `virtualbox-iso`. ## 6. Run a build in TeamCity diff --git a/website/content/guides/packer-on-cicd/index.mdx b/website/content/guides/packer-on-cicd/index.mdx index 24719d95466..50621a2a973 100644 --- a/website/content/guides/packer-on-cicd/index.mdx +++ b/website/content/guides/packer-on-cicd/index.mdx @@ -10,6 +10,6 @@ implemented with a variety of technologies. The goal of this guide is to show how this workflow can be fully automated using Packer for building images from a continuous integration/continuous deployment (CI/CD) pipeline. -1. [Build Images using Packer in CI/CD](/guides/packer-on-cicd/build-image-in-cicd) -2. [Upload the new image to S3](/guides/packer-on-cicd/upload-images-to-artifact) for future deployment or use during development -3. [Create new Terraform Enterprise runs](/guides/packer-on-cicd/trigger-tfe) to provision new instances with the images +1. [Build Images using Packer in CI/CD](/packer/guides/packer-on-cicd/build-image-in-cicd) +2. [Upload the new image to S3](/packer/guides/packer-on-cicd/upload-images-to-artifact) for future deployment or use during development +3. [Create new Terraform Enterprise runs](/packer/guides/packer-on-cicd/trigger-tfe) to provision new instances with the images diff --git a/website/content/guides/packer-on-cicd/pipelineing-builds.mdx b/website/content/guides/packer-on-cicd/pipelineing-builds.mdx index 53729d61315..32f95f3e73e 100644 --- a/website/content/guides/packer-on-cicd/pipelineing-builds.mdx +++ b/website/content/guides/packer-on-cicd/pipelineing-builds.mdx @@ -117,7 +117,7 @@ build { In order to build using this template, create a directory named "http" in your current working directory. Copy the minimal example from our -[preseed guide](https://packer.io/guides/automatic-operating-system-installs/preseed_ubuntu#examples) +[preseed guide](/packer/guides/automatic-operating-system-installs/preseed_ubuntu#examples) into a file in your http directory and name it "ubuntu_preseed.cfg". Copy the above json template into your current working directory and save it as "example_virtualbox_iso.json" @@ -127,7 +127,7 @@ To run the build, call `packer build example_virtualbox_iso.json`. This example does not set the output_directory or output_filename, so the file will be placed in a default name of "output-virtualbox-iso/vbox-example.ovf" -- the builder will print this file name to the UI output, but in this example the -[manifest](/docs/post-processors/manifest) post-processor +[manifest](/packer/docs/post-processors/manifest) post-processor to will store build information, including the names of the output files, in a json file named "stage-1-manifest.json". From there, you can programmatically look up the output file information. @@ -135,7 +135,7 @@ look up the output file information. ## Customizing the iso using the virtualbox-ovf builder That output filename generated in the first stage can be used as the -[source_path](/plugins/builders/virtualbox/ovf#source_path) +[source_path](/packer/plugins/builders/virtualbox/ovf#source_path) for the virtualbox-ovf builder. diff --git a/website/content/guides/packer-on-cicd/trigger-tfe.mdx b/website/content/guides/packer-on-cicd/trigger-tfe.mdx index 6afe4bccc47..13463ccc99a 100644 --- a/website/content/guides/packer-on-cicd/trigger-tfe.mdx +++ b/website/content/guides/packer-on-cicd/trigger-tfe.mdx @@ -46,12 +46,12 @@ complete and uploaded. 1. Add a new step to the CI/CD pipeline. 2. In the new step add a `curl` call to update the variables in the workspace using the [update variables - API](https://www.terraform.io/docs/enterprise/api/variables.html#update-variables), + API](/terraform/docs/enterprise/api/variables#update-variables), so that Terraform has a reference to the latest image. For the sample configuration above, the `aws_ami_id` variable should be updated to the AMI ID of the latest image. 3. In that same step, add another `curl` call to [create a new run via the - API](https://www.terraform.io/docs/enterprise/api/run.html#create-a-run). + API](/terraform/docs/enterprise/api/run#create-a-run). A run performs a plan and apply on the last configuration version created, using the variables set in the workspace. In the previous step we update the variables, so the new run can be created using the previous configuration diff --git a/website/content/partials/from-1.5/beta-hcl2-note.mdx b/website/content/partials/from-1.5/beta-hcl2-note.mdx index 3d95218b6fa..190ee93e6ea 100644 --- a/website/content/partials/from-1.5/beta-hcl2-note.mdx +++ b/website/content/partials/from-1.5/beta-hcl2-note.mdx @@ -2,6 +2,6 @@ were first introduced as a beta feature into Packer version 1.5. As of v1.7, HCL2 support is no longer in beta, and is the preferred way to write Packer configuration. For the old-style stable configuration language see -[template docs](/docs/templates/legacy_json_templates). As of v1.6.2, you can +[template docs](/packer/docs/templates/legacy_json_templates). As of v1.6.2, you can convert your legacy JSON template into an HCL2 config file using the -[hcl2_upgrade command](/docs/commands/hcl2_upgrade). +[hcl2_upgrade command](/packer/docs/commands/hcl2_upgrade). diff --git a/website/content/partials/from-1.5/legacy-json-warning.mdx b/website/content/partials/from-1.5/legacy-json-warning.mdx index 0ca7245b738..026ac2368d9 100644 --- a/website/content/partials/from-1.5/legacy-json-warning.mdx +++ b/website/content/partials/from-1.5/legacy-json-warning.mdx @@ -3,4 +3,4 @@ templates are still supported by the Packer core, but new features added to the Packer core may not be implemented for JSON templates. We recommend you transition to HCL templates as soon as is convenient for you, in order to have the best possible experience with Packer. To help you upgrade your templates, -we have written an [hcl2_upgrade command](/docs/commands/hcl2_upgrade) command. +we have written an [hcl2_upgrade command](/packer/docs/commands/hcl2_upgrade) command. diff --git a/website/content/partials/from-1.5/variables/custom-validation.mdx b/website/content/partials/from-1.5/variables/custom-validation.mdx index c875a28d499..c89806fe1dd 100644 --- a/website/content/partials/from-1.5/variables/custom-validation.mdx +++ b/website/content/partials/from-1.5/variables/custom-validation.mdx @@ -24,7 +24,7 @@ The expression can refer only to the variable that the condition applies to, and _must not_ produce errors. If the failure of an expression is the basis of the validation decision, use -[the `can` function](/docs/templates/hcl_templates/functions/conversion/can) to detect such errors. For example: +[the `can` function](/packer/docs/templates/hcl_templates/functions/conversion/can) to detect such errors. For example: ```hcl variable "image_id" { diff --git a/website/content/partials/packer-plugin-sdk/bootcommand/BootConfig-not-required.mdx b/website/content/partials/packer-plugin-sdk/bootcommand/BootConfig-not-required.mdx index 622e739c1eb..74a6556eebf 100644 --- a/website/content/partials/packer-plugin-sdk/bootcommand/BootConfig-not-required.mdx +++ b/website/content/partials/packer-plugin-sdk/bootcommand/BootConfig-not-required.mdx @@ -18,3 +18,5 @@ initialize the operating system installer. Special keys can be typed as well, and are covered in the section below on the boot command. If this is not specified, it is assumed the installer will start itself. + + diff --git a/website/content/partials/packer-plugin-sdk/bootcommand/BootConfig.mdx b/website/content/partials/packer-plugin-sdk/bootcommand/BootConfig.mdx index 52efd6fff27..3faa491f04d 100644 --- a/website/content/partials/packer-plugin-sdk/bootcommand/BootConfig.mdx +++ b/website/content/partials/packer-plugin-sdk/bootcommand/BootConfig.mdx @@ -125,4 +125,6 @@ boot_command = [ ``` For more examples of various boot commands, see the sample projects from our -[community templates page](/community-tools#templates). +[community templates page](https://packer.io/community-tools#templates). + + diff --git a/website/content/partials/packer-plugin-sdk/bootcommand/VNCConfig-not-required.mdx b/website/content/partials/packer-plugin-sdk/bootcommand/VNCConfig-not-required.mdx index 0c9b8b381f3..c65d8ae5d48 100644 --- a/website/content/partials/packer-plugin-sdk/bootcommand/VNCConfig-not-required.mdx +++ b/website/content/partials/packer-plugin-sdk/bootcommand/VNCConfig-not-required.mdx @@ -4,3 +4,5 @@ when this is true. Defaults to false. - `boot_key_interval` (duration string | ex: "1h5m2s") - Time in ms to wait between each key press + + diff --git a/website/content/partials/packer-plugin-sdk/bootcommand/VNCConfig.mdx b/website/content/partials/packer-plugin-sdk/bootcommand/VNCConfig.mdx index 0eb6bcd13f8..d699fdab36c 100644 --- a/website/content/partials/packer-plugin-sdk/bootcommand/VNCConfig.mdx +++ b/website/content/partials/packer-plugin-sdk/bootcommand/VNCConfig.mdx @@ -7,3 +7,5 @@ Keystrokes are typed as separate key up/down events over VNC with a default 100ms delay. The delay alleviates issues with latency and CPU contention. You can tune this delay on a per-builder basis by specifying "boot_key_interval" in your Packer template. + + diff --git a/website/content/partials/packer-plugin-sdk/communicator/Config-not-required.mdx b/website/content/partials/packer-plugin-sdk/communicator/Config-not-required.mdx index 43413e44830..d7a9db5f99d 100644 --- a/website/content/partials/packer-plugin-sdk/communicator/Config-not-required.mdx +++ b/website/content/partials/packer-plugin-sdk/communicator/Config-not-required.mdx @@ -26,3 +26,5 @@ can connect, as normal. But once a connection attempt is successful, it will disconnect and then wait 10 minutes before connecting to the guest and beginning provisioning. + + diff --git a/website/content/partials/packer-plugin-sdk/communicator/Config.mdx b/website/content/partials/packer-plugin-sdk/communicator/Config.mdx index b569865c0db..adc4de37d48 100644 --- a/website/content/partials/packer-plugin-sdk/communicator/Config.mdx +++ b/website/content/partials/packer-plugin-sdk/communicator/Config.mdx @@ -3,3 +3,5 @@ Config is the common configuration a builder uses to define and configure a Packer communicator. Embed this struct in your builder config to implement communicator support. + + diff --git a/website/content/partials/packer-plugin-sdk/communicator/SSH-not-required.mdx b/website/content/partials/packer-plugin-sdk/communicator/SSH-not-required.mdx index 61b1be6ac7c..99706b6aec8 100644 --- a/website/content/partials/packer-plugin-sdk/communicator/SSH-not-required.mdx +++ b/website/content/partials/packer-plugin-sdk/communicator/SSH-not-required.mdx @@ -9,7 +9,7 @@ - `ssh_password` (string) - A plaintext password to use to authenticate with SSH. -- `ssh_ciphers` ([]string) - This overrides the value of ciphers supported by default by Go. +- `ssh_ciphers` ([]string) - This overrides the value of ciphers supported by default by Golang. The default value is [ "aes128-gcm@openssh.com", "chacha20-poly1305@openssh.com", @@ -28,8 +28,8 @@ (unless the user has set the `-debug` flag). Defaults to "false"; currently only works on guests with `sed` installed. -- `ssh_key_exchange_algorithms` ([]string) - If set, Packer will override the value of key exchange (kex) altorighms - supported by default by Go. Acceptable values include: +- `ssh_key_exchange_algorithms` ([]string) - If set, Packer will override the value of key exchange (kex) algorithms + supported by default by Golang. Acceptable values include: "curve25519-sha256@libssh.org", "ecdh-sha2-nistp256", "ecdh-sha2-nistp384", "ecdh-sha2-nistp521", "diffie-hellman-group14-sha1", and "diffie-hellman-group1-sha1". @@ -44,11 +44,12 @@ - `ssh_timeout` (duration string | ex: "1h5m2s") - The time to wait for SSH to become available. Packer uses this to determine when the machine has booted so this is usually quite long. Example value: `10m`. + This defaults to `5m`, unless `ssh_handshake_attempts` is set. - `ssh_disable_agent_forwarding` (bool) - If true, SSH agent forwarding will be disabled. Defaults to `false`. -- `ssh_handshake_attempts` (int) - The number of handshakes to attempt with SSH once it can connect. This - defaults to `10`. +- `ssh_handshake_attempts` (int) - The number of handshakes to attempt with SSH once it can connect. + This defaults to `10`, unless a `ssh_timeout` is set. - `ssh_bastion_host` (string) - A bastion host to use for the actual SSH connection. @@ -73,6 +74,11 @@ - `ssh_file_transfer_method` (string) - `scp` or `sftp` - How to transfer files, Secure copy (default) or SSH File Transfer Protocol. + + **NOTE**: Guests using Windows with Win32-OpenSSH v9.1.0.0p1-Beta, scp + (the default protocol for copying data) returns a a non-zero error code since the MOTW + cannot be set, which cause any file transfer to fail. As a workaround you can override the transfer protocol + with SFTP instead `ssh_file_transfer_protocol = "sftp"`. - `ssh_proxy_host` (string) - A SOCKS proxy host to use for SSH connection @@ -92,3 +98,5 @@ - `ssh_remote_tunnels` ([]string) - - `ssh_local_tunnels` ([]string) - + + diff --git a/website/content/partials/packer-plugin-sdk/communicator/SSH.mdx b/website/content/partials/packer-plugin-sdk/communicator/SSH.mdx new file mode 100644 index 00000000000..1749b71b82a --- /dev/null +++ b/website/content/partials/packer-plugin-sdk/communicator/SSH.mdx @@ -0,0 +1,5 @@ + + +The SSH config defines configuration for the SSH communicator. + + diff --git a/website/content/partials/packer-plugin-sdk/communicator/SSHInterface-not-required.mdx b/website/content/partials/packer-plugin-sdk/communicator/SSHInterface-not-required.mdx index a62a267c4cd..8a853482f34 100644 --- a/website/content/partials/packer-plugin-sdk/communicator/SSHInterface-not-required.mdx +++ b/website/content/partials/packer-plugin-sdk/communicator/SSHInterface-not-required.mdx @@ -16,3 +16,5 @@ Useful on dual stacked instances where the default behavior is to connect via whichever IP address is returned first from the OpenStack API. + + diff --git a/website/content/partials/packer-plugin-sdk/communicator/SSHInterface.mdx b/website/content/partials/packer-plugin-sdk/communicator/SSHInterface.mdx new file mode 100644 index 00000000000..2a49158b246 --- /dev/null +++ b/website/content/partials/packer-plugin-sdk/communicator/SSHInterface.mdx @@ -0,0 +1,6 @@ + + +SSHInterface defines whether to use public or private, addresses, and whether +to use IPv4 or IPv6. + + diff --git a/website/content/partials/packer-plugin-sdk/communicator/SSHTemporaryKeyPair-not-required.mdx b/website/content/partials/packer-plugin-sdk/communicator/SSHTemporaryKeyPair-not-required.mdx index bc173365040..f0f5813ab42 100644 --- a/website/content/partials/packer-plugin-sdk/communicator/SSHTemporaryKeyPair-not-required.mdx +++ b/website/content/partials/packer-plugin-sdk/communicator/SSHTemporaryKeyPair-not-required.mdx @@ -13,3 +13,5 @@ bits. Attempting to use bit lengths other than these three values for ECDSA keys will fail. Ed25519 keys have a fixed length and bits will be ignored. + + diff --git a/website/content/partials/packer-plugin-sdk/communicator/SSHTemporaryKeyPair.mdx b/website/content/partials/packer-plugin-sdk/communicator/SSHTemporaryKeyPair.mdx index df1a1265863..61a6e430314 100644 --- a/website/content/partials/packer-plugin-sdk/communicator/SSHTemporaryKeyPair.mdx +++ b/website/content/partials/packer-plugin-sdk/communicator/SSHTemporaryKeyPair.mdx @@ -1,5 +1,7 @@ -When no SSH credentials are specified, Packer will generate a temporary SSH +When no ssh credentials are specified, Packer will generate a temporary SSH keypair for the instance. You can change the algorithm type and bits settings. + + diff --git a/website/content/partials/packer-plugin-sdk/communicator/WinRM-not-required.mdx b/website/content/partials/packer-plugin-sdk/communicator/WinRM-not-required.mdx index 6e51877e350..f6b5de07df0 100644 --- a/website/content/partials/packer-plugin-sdk/communicator/WinRM-not-required.mdx +++ b/website/content/partials/packer-plugin-sdk/communicator/WinRM-not-required.mdx @@ -5,10 +5,10 @@ - `winrm_password` (string) - The password to use to connect to WinRM. - `winrm_host` (string) - The address for WinRM to connect to. - + NOTE: If using an Amazon EBS builder, you can specify the interface WinRM connects to via - [`ssh_interface`](/plugins/builders/amazon/ebs#ssh_interface) + [`ssh_interface`](/packer/plugins/builders/amazon/ebs#ssh_interface) - `winrm_no_proxy` (bool) - Setting this to `true` adds the remote `host:port` to the `NO_PROXY` environment variable. This has the effect of @@ -30,4 +30,6 @@ for WinRM, rather than default (basic authentication), removing the requirement for basic authentication to be enabled within the target guest. Further reading for remote connection authentication can be found - [here](). + [here](https://msdn.microsoft.com/en-us/library/aa384295(v=vs.85).aspx). + + diff --git a/website/content/partials/packer-plugin-sdk/communicator/WinRM.mdx b/website/content/partials/packer-plugin-sdk/communicator/WinRM.mdx new file mode 100644 index 00000000000..82309b7b3c7 --- /dev/null +++ b/website/content/partials/packer-plugin-sdk/communicator/WinRM.mdx @@ -0,0 +1,5 @@ + + +The WinRM config defines configuration for the WinRM communicator. + + diff --git a/website/content/partials/packer-plugin-sdk/multistep/commonsteps/CDConfig-not-required.mdx b/website/content/partials/packer-plugin-sdk/multistep/commonsteps/CDConfig-not-required.mdx index d07273c70ea..686caf335e7 100644 --- a/website/content/partials/packer-plugin-sdk/multistep/commonsteps/CDConfig-not-required.mdx +++ b/website/content/partials/packer-plugin-sdk/multistep/commonsteps/CDConfig-not-required.mdx @@ -44,4 +44,22 @@ * hdiutil (normally found in macOS) * oscdimg (normally found in Windows as part of the Windows ADK) +- `cd_content` (map[string]string) - Key/Values to add to the CD. The keys represent the paths, and the values + contents. It can be used alongside `cd_files`, which is useful to add large + files without loading them into memory. If any paths are specified by both, + the contents in `cd_content` will take precedence. + + Usage example (HCL): + + ```hcl + cd_files = ["vendor-data"] + cd_content = { + "meta-data" = jsonencode(local.instance_data) + "user-data" = templatefile("user-data", { packages = ["nginx"] }) + } + cd_label = "cidata" + ``` + - `cd_label` (string) - CD Label + + diff --git a/website/content/partials/packer-plugin-sdk/multistep/commonsteps/CDConfig.mdx b/website/content/partials/packer-plugin-sdk/multistep/commonsteps/CDConfig.mdx index 5a59e6eaf02..087804a6bdc 100644 --- a/website/content/partials/packer-plugin-sdk/multistep/commonsteps/CDConfig.mdx +++ b/website/content/partials/packer-plugin-sdk/multistep/commonsteps/CDConfig.mdx @@ -9,3 +9,5 @@ second CD device. This config exists to work around modern operating systems that have no way to mount floppy disks, which was our previous go-to for adding files at boot time. + + diff --git a/website/content/partials/packer-plugin-sdk/multistep/commonsteps/FloppyConfig-not-required.mdx b/website/content/partials/packer-plugin-sdk/multistep/commonsteps/FloppyConfig-not-required.mdx index 607c6844831..325b13f40a7 100644 --- a/website/content/partials/packer-plugin-sdk/multistep/commonsteps/FloppyConfig-not-required.mdx +++ b/website/content/partials/packer-plugin-sdk/multistep/commonsteps/FloppyConfig-not-required.mdx @@ -13,4 +13,23 @@ characters (\\*, ?, and \[\]) are allowed. The maximum summary size of all files in the listed directories are the same as in `floppy_files`. +- `floppy_content` (map[string]string) - Key/Values to add to the floppy disk. The keys represent the paths, and + the values contents. It can be used alongside `floppy_files` or + `floppy_dirs`, which is useful to add large files without loading them + into memory. If any paths are specified by both, the contents in + `floppy_content` will take precedence. + + Usage example (HCL): + + ```hcl + floppy_files = ["vendor-data"] + floppy_content = { + "meta-data" = jsonencode(local.instance_data) + "user-data" = templatefile("user-data", { packages = ["nginx"] }) + } + floppy_label = "cidata" + ``` + - `floppy_label` (string) - Floppy Label + + diff --git a/website/content/partials/packer-plugin-sdk/multistep/commonsteps/FloppyConfig.mdx b/website/content/partials/packer-plugin-sdk/multistep/commonsteps/FloppyConfig.mdx index e906b9ec8da..b7c307c32cc 100644 --- a/website/content/partials/packer-plugin-sdk/multistep/commonsteps/FloppyConfig.mdx +++ b/website/content/partials/packer-plugin-sdk/multistep/commonsteps/FloppyConfig.mdx @@ -7,4 +7,6 @@ this setting get placed into the root directory of the floppy and the floppy is attached as the first floppy device. The summary size of the listed files must not exceed 1.44 MB. The supported ways to move large files into the OS are using `http_directory` or [the file -provisioner](/docs/provisioners/file). +provisioner](/packer/docs/provisioners/file). + + diff --git a/website/content/partials/packer-plugin-sdk/multistep/commonsteps/HTTPConfig.mdx b/website/content/partials/packer-plugin-sdk/multistep/commonsteps/HTTPConfig.mdx index 44aec2280e7..b3cdfc96adc 100644 --- a/website/content/partials/packer-plugin-sdk/multistep/commonsteps/HTTPConfig.mdx +++ b/website/content/partials/packer-plugin-sdk/multistep/commonsteps/HTTPConfig.mdx @@ -1,9 +1,11 @@ -Packer will create an HTTP server serving `http_directory` when it is set, a +Packer will create an http server serving `http_directory` when it is set, a random free port will be selected and the architecture of the directory referenced will be available in your builder. Example usage from a builder: `wget http://{{ .HTTPIP }}:{{ .HTTPPort }}/foo/bar/preseed.cfg` + + diff --git a/website/content/partials/packer-plugin-sdk/multistep/commonsteps/ISOConfig-not-required.mdx b/website/content/partials/packer-plugin-sdk/multistep/commonsteps/ISOConfig-not-required.mdx index cd3a59aa277..63950176e8a 100644 --- a/website/content/partials/packer-plugin-sdk/multistep/commonsteps/ISOConfig-not-required.mdx +++ b/website/content/partials/packer-plugin-sdk/multistep/commonsteps/ISOConfig-not-required.mdx @@ -11,3 +11,5 @@ checksum as its name. - `iso_target_extension` (string) - The extension of the iso file after download. This defaults to `iso`. + + diff --git a/website/content/partials/packer-plugin-sdk/multistep/commonsteps/ISOConfig-required.mdx b/website/content/partials/packer-plugin-sdk/multistep/commonsteps/ISOConfig-required.mdx index c2b104b6dc3..b8598ce3b21 100644 --- a/website/content/partials/packer-plugin-sdk/multistep/commonsteps/ISOConfig-required.mdx +++ b/website/content/partials/packer-plugin-sdk/multistep/commonsteps/ISOConfig-required.mdx @@ -23,3 +23,5 @@ - `iso_url` (string) - A URL to the ISO containing the installation image or virtual hard drive (VHD or VHDX) file to clone. + + diff --git a/website/content/partials/packer-plugin-sdk/multistep/commonsteps/ISOConfig.mdx b/website/content/partials/packer-plugin-sdk/multistep/commonsteps/ISOConfig.mdx index 87e8030d1be..58293cd774d 100644 --- a/website/content/partials/packer-plugin-sdk/multistep/commonsteps/ISOConfig.mdx +++ b/website/content/partials/packer-plugin-sdk/multistep/commonsteps/ISOConfig.mdx @@ -60,3 +60,5 @@ In HCL2: iso_checksum = "file:./shasums.txt", iso_url = "ubuntu.org/.../ubuntu-14.04.1-server-amd64.iso" ``` + + diff --git a/website/content/partials/packer-plugin-sdk/provisioners/common-config.mdx b/website/content/partials/packer-plugin-sdk/provisioners/common-config.mdx new file mode 100644 index 00000000000..15cd1b81465 --- /dev/null +++ b/website/content/partials/packer-plugin-sdk/provisioners/common-config.mdx @@ -0,0 +1,68 @@ +Parameters common to all provisioners: + +- `pause_before` (duration) - Sleep for duration before execution. + +- `max_retries` (int) - Max times the provisioner will retry in case of failure. Defaults to zero (0). Zero means an error will not be retried. + +- `only` (array of string) - Only run the provisioner for listed builder(s) + by name. + +- `override` (object) - Override the builder with different settings for a + specific builder, eg : + + In HCL2: + + ```hcl + source "null" "example1" { + communicator = "none" + } + + source "null" "example2" { + communicator = "none" + } + + build { + sources = ["source.null.example1", "source.null.example2"] + provisioner "shell-local" { + inline = ["echo not overridden"] + override = { + example1 = { + inline = ["echo yes overridden"] + } + } + } + } + ``` + + In JSON: + + ```json + { + "builders": [ + { + "type": "null", + "name": "example1", + "communicator": "none" + }, + { + "type": "null", + "name": "example2", + "communicator": "none" + } + ], + "provisioners": [ + { + "type": "shell-local", + "inline": ["echo not overridden"], + "override": { + "example1": { + "inline": ["echo yes overridden"] + } + } + } + ] + } + ``` + +- `timeout` (duration) - If the provisioner takes more than for example + `1h10m1s` or `10m` to finish, the provisioner will timeout and fail. diff --git a/website/content/partials/packer-plugin-sdk/provisioners/shell-config.mdx b/website/content/partials/packer-plugin-sdk/provisioners/shell-config.mdx new file mode 100644 index 00000000000..009040c5b96 --- /dev/null +++ b/website/content/partials/packer-plugin-sdk/provisioners/shell-config.mdx @@ -0,0 +1,30 @@ +The reference of available configuration options is listed below. The only +required element is either "inline" or "script". Every other option is +optional. + +Exactly _one_ of the following is required: + +- `inline` (array of strings) - This is an array of commands to execute. The + commands are concatenated by newlines and turned into a single file, so + they are all executed within the same context. This allows you to change + directories in one command and use something in the directory in the next + and so on. Inline scripts are the easiest way to pull off simple tasks + within the machine. + +- `script` (string) - The path to a script to upload and execute in the + machine. This path can be absolute or relative. If it is relative, it is + relative to the working directory when Packer is executed. + +- `scripts` (array of strings) - An array of scripts to execute. The scripts + will be uploaded and executed in the order specified. Each script is + executed in isolation, so state such as variables from one script won't + carry on to the next. + +Optional parameters: + +- `binary` (boolean) - If true, specifies that the script(s) are binary + files, and Packer should therefore not convert Windows line endings to Unix + line endings (if there are any). By default this is false. + +- `valid_exit_codes` (list of ints) - Valid exit codes for the script. By + default this is just 0. diff --git a/website/content/partials/packer-plugin-sdk/provisioners/unmaintained-plugin.mdx b/website/content/partials/packer-plugin-sdk/provisioners/unmaintained-plugin.mdx new file mode 100644 index 00000000000..f59f4b39804 --- /dev/null +++ b/website/content/partials/packer-plugin-sdk/provisioners/unmaintained-plugin.mdx @@ -0,0 +1 @@ +~> **This community maintained provisioner is currently unmaintained**; if you are interested in contributing or taking ownership of it, please reach out to us at [packer@hashicorp.com](mailto://packer@hashicorp.com). More details can be found in the [README](https://github.com/hashicorp/packer/blob/master/README.md#unmaintained-plugins). diff --git a/website/content/partials/packer-plugin-sdk/shutdowncommand/ShutdownConfig-not-required.mdx b/website/content/partials/packer-plugin-sdk/shutdowncommand/ShutdownConfig-not-required.mdx index 8e83e72a1bb..9cabd8e00c3 100644 --- a/website/content/partials/packer-plugin-sdk/shutdowncommand/ShutdownConfig-not-required.mdx +++ b/website/content/partials/packer-plugin-sdk/shutdowncommand/ShutdownConfig-not-required.mdx @@ -13,3 +13,5 @@ virtual machine to actually shut down. If the machine doesn't shut down in this time it is considered an error. By default, the time out is "5m" (five minutes). + + diff --git a/website/content/partials/packer-plugin-sdk/shutdowncommand/ShutdownConfig.mdx b/website/content/partials/packer-plugin-sdk/shutdowncommand/ShutdownConfig.mdx index 2221fc1840e..51ceae9abea 100644 --- a/website/content/partials/packer-plugin-sdk/shutdowncommand/ShutdownConfig.mdx +++ b/website/content/partials/packer-plugin-sdk/shutdowncommand/ShutdownConfig.mdx @@ -8,3 +8,5 @@ consider implementing these options, which we believe are valuable for all builders. It also helps guarantee that option names for similar options are the same across the various builders. Embed it in your builder config using the `mapstructure:",squash"` struct tag. + + diff --git a/website/content/partials/plugins/plugin-location.mdx b/website/content/partials/plugins/plugin-location.mdx index 5fb7e80344c..eec78bf10b9 100644 --- a/website/content/partials/plugins/plugin-location.mdx +++ b/website/content/partials/plugins/plugin-location.mdx @@ -1,7 +1,7 @@ Plugins will usually be located in the -[PACKER_HOME_DIR](/docs/configure#packer-s-home-directory). +[PACKER_HOME_DIR](/packer/docs/configure#packer-s-home-directory). -* [`packer init`](/docs/commands/init) will install plugins in the **last** directory +* [`packer init`](/packer/docs/commands/init) will install plugins in the **last** directory in the following numbered list. * During the initialization of Packer, any plugin required in the @@ -13,7 +13,7 @@ found version matching `required_plugins` will be taken into consideration. 1. The directory where `packer` is, or the executable directory. 1. The current working directory. (`"."`) 1. The `PACKER_HOME_DIR/plugins` directory. `PACKER_HOME_DIR` refers to *[Packer's home -directory](/docs/configure#packer-s-home-directory)*, if it could be found. +directory](/packer/docs/configure#packer-s-home-directory)*, if it could be found. 1. The director(y/ies) under the `PACKER_PLUGIN_PATH` env var, if `PACKER_PLUGIN_PATH` is set. diff --git a/website/content/partials/post-processor/manifest/Config-not-required.mdx b/website/content/partials/post-processor/manifest/Config-not-required.mdx index 10f37a6b575..060a79a9205 100644 --- a/website/content/partials/post-processor/manifest/Config-not-required.mdx +++ b/website/content/partials/post-processor/manifest/Config-not-required.mdx @@ -9,7 +9,7 @@ - `strip_time` (bool) - Don't write the `build_time` field from the output. - `custom_data` (map[string]string) - Arbitrary data to add to the manifest. This is a [template - engine](https://packer.io/docs/templates/legacy_json_templates/engine.html). Therefore, you + engine](/packer/docs/templates/legacy_json_templates/engine). Therefore, you may use user variables and template functions in this field. diff --git a/website/content/plugins/index.mdx b/website/content/plugins/index.mdx index 0ed8e857a54..92414fcbb3b 100644 --- a/website/content/plugins/index.mdx +++ b/website/content/plugins/index.mdx @@ -6,7 +6,7 @@ page_title: Packer plugins # External Packer Plugins -External Packer plugins are standalone applications that extend Packer functionality without modifying the core source code. Plugins can add new components to Packer, such as builders, provisioners, post-processors, and data sources. Refer to [Packer Plugins](/docs/plugins) for details about installing and developing external plugins. +External Packer plugins are standalone applications that extend Packer functionality without modifying the core source code. Plugins can add new components to Packer, such as builders, provisioners, post-processors, and data sources. Refer to [Packer Plugins](/packer/docs/plugins) for details about installing and developing external plugins. This section contains the documentation for available external Packer plugins. From 1feff937914dd6ed14060f4e9360cbd1dcb0bd06 Mon Sep 17 00:00:00 2001 From: Kendall Strautman <36613477+kendallstrautman@users.noreply.github.com> Date: Fri, 27 Jan 2023 10:02:30 -0800 Subject: [PATCH 031/381] Update community-tools.mdx --- website/content/community-tools.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/community-tools.mdx b/website/content/community-tools.mdx index 2858d9cb734..ea75ef3df23 100644 --- a/website/content/community-tools.mdx +++ b/website/content/community-tools.mdx @@ -19,7 +19,7 @@ vendors. These plugins are not officially tested nor officially maintained by HashiCorp, and are listed here in order to help users find them easily. To learn more about how to use community plugins, or how to build your own, -check out the docs on [extending Packer](/packer/docs/plugins/install-plugins) +check out the docs on [extending Packer](https://developer.hashicorp.com/packer/docs/plugins/install-plugins) If you have built a plugin and would like to add it to this community list, please make a pull request so that we can document your From d880d1bca7a0acae9fbe001cd38658f565710aac Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 30 Jan 2023 14:09:59 -0500 Subject: [PATCH 032/381] Update ReadFromHCLBuildBlock to use the hcp_packer_registry.Description In packer v1.8.5, the bucket's description was not properly set in the bucket object we use for HCP, therefore all the buckets created by Packer did not have their description updated. Before the change ``` --- FAIL: TestReadFromHCLBuildBlock (0.00s) --- FAIL: TestReadFromHCLBuildBlock/configure_bucket_using_only_hcp_packer_registry_block (0.00s) types.bucket_test.go:380: expected the build to to have contents of hcp_packer_registry block but it does not: ®istry.Bucket{ Slug: "hcp_packer_registry-block-test", - Description: "", + Description: "description from hcp_packer_registry block", Destination: "", BucketLabels: {"org": "test"}, ... // 5 identical fields } FAIL FAIL github.com/hashicorp/packer/internal/hcp/registry 1.072s FAIL ``` After Change ``` ~> go test ./... ? github.com/hashicorp/packer/internal/hcp/api [no test files] ok github.com/hashicorp/packer/internal/hcp/env (cached) ok github.com/hashicorp/packer/internal/hcp/registry 1.130s ``` --- internal/hcp/registry/types.bucket.go | 16 +++---- internal/hcp/registry/types.bucket_test.go | 49 ++++++++++++++++++++++ 2 files changed, 57 insertions(+), 8 deletions(-) diff --git a/internal/hcp/registry/types.bucket.go b/internal/hcp/registry/types.bucket.go index 597128dac07..869398a2401 100644 --- a/internal/hcp/registry/types.bucket.go +++ b/internal/hcp/registry/types.bucket.go @@ -64,23 +64,23 @@ func (b *Bucket) Validate() error { } // ReadFromHCLBuildBlock reads the information for initialising a Bucket from a HCL2 build block -func (b *Bucket) ReadFromHCLBuildBlock(hcpBlock *hcl2template.BuildBlock) { +func (b *Bucket) ReadFromHCLBuildBlock(build *hcl2template.BuildBlock) { if b == nil { return } - b.Description = hcpBlock.Description - hcp := hcpBlock.HCPPackerRegistry - if hcp == nil { + registryBlock := build.HCPPackerRegistry + if registryBlock == nil { return } - b.BucketLabels = hcp.BucketLabels - b.BuildLabels = hcp.BuildLabels + b.Description = registryBlock.Description + b.BucketLabels = registryBlock.BucketLabels + b.BuildLabels = registryBlock.BuildLabels // If there's already a Slug this was set from env variable. // In Packer, env variable overrides config values so we keep it that way for consistency. - if b.Slug == "" && hcp.Slug != "" { - b.Slug = hcp.Slug + if b.Slug == "" && registryBlock.Slug != "" { + b.Slug = registryBlock.Slug } } diff --git a/internal/hcp/registry/types.bucket_test.go b/internal/hcp/registry/types.bucket_test.go index 922916b461a..d4cb7b1ac40 100644 --- a/internal/hcp/registry/types.bucket_test.go +++ b/internal/hcp/registry/types.bucket_test.go @@ -6,6 +6,7 @@ import ( "testing" "github.com/google/go-cmp/cmp" + "github.com/hashicorp/packer/hcl2template" "github.com/hashicorp/packer/internal/hcp/api" ) @@ -333,3 +334,51 @@ func TestBucket_PopulateIteration(t *testing.T) { }) } } + +func TestReadFromHCLBuildBlock(t *testing.T) { + tc := []struct { + desc string + buildBlock *hcl2template.BuildBlock + expectedBucket *Bucket + }{ + { + desc: "configure bucket using only hcp_packer_registry block", + buildBlock: &hcl2template.BuildBlock{ + HCPPackerRegistry: &hcl2template.HCPPackerRegistryBlock{ + Slug: "hcp_packer_registry-block-test", + Description: "description from hcp_packer_registry block", + BucketLabels: map[string]string{ + "org": "test", + }, + BuildLabels: map[string]string{ + "version": "1.7.0", + "based_off": "alpine", + }, + }, + }, + expectedBucket: &Bucket{ + Slug: "hcp_packer_registry-block-test", + Description: "description from hcp_packer_registry block", + BucketLabels: map[string]string{ + "org": "test", + }, + BuildLabels: map[string]string{ + "version": "1.7.0", + "based_off": "alpine", + }, + }, + }, + } + for _, tt := range tc { + tt := tt + t.Run(tt.desc, func(t *testing.T) { + bucket := &Bucket{} + bucket.ReadFromHCLBuildBlock(tt.buildBlock) + + diff := cmp.Diff(bucket, tt.expectedBucket, cmp.AllowUnexported(Bucket{})) + if diff != "" { + t.Errorf("expected the build to to have contents of hcp_packer_registry block but it does not: %v", diff) + } + }) + } +} From 65bd40c75076923d74f8da7c2c29e559cd8fe82f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Jan 2023 19:02:11 +0000 Subject: [PATCH 033/381] build(deps): bump github/issue-labeler from 2.5 to 2.6 Bumps [github/issue-labeler](https://github.com/github/issue-labeler) from 2.5 to 2.6. - [Release notes](https://github.com/github/issue-labeler/releases) - [Commits](https://github.com/github/issue-labeler/compare/v2.5...v2.6) --- updated-dependencies: - dependency-name: github/issue-labeler dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/issues-opened.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/issues-opened.yml b/.github/workflows/issues-opened.yml index b9304f2746b..082a8cc51d6 100644 --- a/.github/workflows/issues-opened.yml +++ b/.github/workflows/issues-opened.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: github/issue-labeler@v2.5 + - uses: github/issue-labeler@v2.6 with: repo-token: "${{ secrets.GITHUB_TOKEN }}" configuration-path: .github/labeler-issue-triage.yml From 150767792c996208f76b6f99b17e9f1f1292bbea Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 6 Feb 2023 14:22:45 -0500 Subject: [PATCH 034/381] Add release branches to CRT build pipeline This change will allow for release branches `release/..x` to be built add uploaded to the CRT build tool chain, which can then be promoted and released publicly if needed. --- .github/workflows/build.yml | 8 +++++++- .release/ci.hcl | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f37a0436c91..72632706685 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,7 +6,13 @@ name: build -on: [ workflow_dispatch, push, workflow_call ] +on: + workflow_dispatch: + workflow_call: + push: + branches: + - main + - release/** env: REPO_NAME: "packer" diff --git a/.release/ci.hcl b/.release/ci.hcl index b1f995952e5..4bff4dc72ab 100644 --- a/.release/ci.hcl +++ b/.release/ci.hcl @@ -10,6 +10,7 @@ project "packer" { repository = "packer" release_branches = [ "main", + "release/**" ] } } From b278e5e2d471131b0f019e8d0baca9735c42c000 Mon Sep 17 00:00:00 2001 From: Claire Date: Mon, 6 Feb 2023 15:32:39 -0600 Subject: [PATCH 035/381] add changelog update for vendor label for linux packaging --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c088426505..eb65a7a3c5e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,9 @@ it difficult to identify the broken build block. Packer has been updated to display the proper filename and line number where the unknown reference resides. [GH-12167](https://github.com/hashicorp/packer/pull/12167) +* core: Linux packages now have vendor label and set the default label to HashiCorp. + This fix is implemented for any future releases, but will not be + updated for historical releases. ### NOTES: * core: Users will see some changes in how names are displayed during a Packer From f84c4e6182a063c40fee10437c080dcc87aeaa5a Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 3 Feb 2023 14:05:04 -0500 Subject: [PATCH 036/381] copywrite: setup configuration for licensing Copywrite is a tool developed internally at Hashicorp in order to maintain our source code up-to-date in terms of license headers. Since this will be monitored soon, we are preparing for this by adding the configuration for files to ignore. --- .copywrite.hcl | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .copywrite.hcl diff --git a/.copywrite.hcl b/.copywrite.hcl new file mode 100644 index 00000000000..2c6f279b065 --- /dev/null +++ b/.copywrite.hcl @@ -0,0 +1,13 @@ +project { + license = "MPL-2.0" + copyright_year = 2013 + header_ignore = [ + "*.hcl2spec.go", # generated code specs, since they'll be wiped out until we support adding the headers at generation-time + "hcl2template/testdata/**", + "test/**", + "**/test-fixtures/**", + "examples/**", + "hcl2template/fixtures/**", + "website/**" # candidates for copyright are coming from external sources, so we should not handle those in Packer + ] +} From dfa5b5881e54c7f8e1d52367322d53c5c3690281 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 7 Feb 2023 17:01:37 -0500 Subject: [PATCH 037/381] copywrite: add command/plugin.go to ignore list The command/plugin.go file is auto-generated and should not be processed as part of copywrite headers. --- .copywrite.hcl | 1 + 1 file changed, 1 insertion(+) diff --git a/.copywrite.hcl b/.copywrite.hcl index 2c6f279b065..2e86e1c3cc1 100644 --- a/.copywrite.hcl +++ b/.copywrite.hcl @@ -8,6 +8,7 @@ project { "**/test-fixtures/**", "examples/**", "hcl2template/fixtures/**", + "command/plugin.go", "website/**" # candidates for copyright are coming from external sources, so we should not handle those in Packer ] } From b986a7c9485820076255913e84f41315740443eb Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 7 Feb 2023 13:31:24 -0500 Subject: [PATCH 038/381] Bump development version to 1.9.0 Stable releases for 1.8.x will be made off of the release/1.8.x branch. Main will represent the next minor version. When ready for a release a new release branch will be created for the version. --- version/VERSION | 2 +- version/version.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/version/VERSION b/version/VERSION index 9eadd6baad8..f8e233b2733 100644 --- a/version/VERSION +++ b/version/VERSION @@ -1 +1 @@ -1.8.6 \ No newline at end of file +1.9.0 diff --git a/version/version.go b/version/version.go index 5e6f85b8f71..1fa6f345fcd 100644 --- a/version/version.go +++ b/version/version.go @@ -19,7 +19,7 @@ var ( // A pre-release marker for the version can also be specified (e.g -dev). If this is omitted // The main version number that is being run at the moment. - Version = "1.8.6" + Version = "1.9.0" // A pre-release marker for the version. If this is "" (empty string) // then it means that it is a final release. Otherwise, this is a pre-release From 095959ed6dc1f378ccf499e927da10845ed7808e Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 7 Feb 2023 13:23:01 -0500 Subject: [PATCH 039/381] Fix crash when variables block is undefined This change fixes a crash that occurs when trying to add undeclared variables into an empty variables map. The variables block when defined will always be non-nil but in the case where variables are declared and initialized from a legacy JSON variables file the map must be initialized first. --- command/hcl2_upgrade.go | 3 ++ command/hcl2_upgrade_test.go | 1 + .../expected.pkr.hcl | 33 +++++++++++++++++++ .../input.json | 18 ++++++++++ .../variables.json | 6 ++++ 5 files changed, 61 insertions(+) create mode 100644 command/test-fixtures/hcl2_upgrade/varfile-with-no-variables-block/expected.pkr.hcl create mode 100644 command/test-fixtures/hcl2_upgrade/varfile-with-no-variables-block/input.json create mode 100644 command/test-fixtures/hcl2_upgrade/varfile-with-no-variables-block/variables.json diff --git a/command/hcl2_upgrade.go b/command/hcl2_upgrade.go index e149e1af0b2..3df4fb45296 100644 --- a/command/hcl2_upgrade.go +++ b/command/hcl2_upgrade.go @@ -870,6 +870,9 @@ func (p *VariableParser) Parse(tpl *template.Template) error { p.localsOut = []byte{} } + if len(tpl.Variables) == 0 { + tpl.Variables = make(map[string]*template.Variable) + } // JSON supports variable declaration via var-files. // User variables that might be defined in a var-file // but not in the actual JSON template should be accounted for. diff --git a/command/hcl2_upgrade_test.go b/command/hcl2_upgrade_test.go index 45da6a1cd59..d7899fe6e9a 100644 --- a/command/hcl2_upgrade_test.go +++ b/command/hcl2_upgrade_test.go @@ -34,6 +34,7 @@ func Test_hcl2_upgrade(t *testing.T) { {folder: "variables-with-variables", flags: []string{}}, {folder: "complete-variables-with-template-engine", flags: []string{}}, {folder: "undeclared-variables", flags: []string{}, exitCode: 0}, + {folder: "varfile-with-no-variables-block", flags: []string{}, exitCode: 0}, } for _, tc := range tc { diff --git a/command/test-fixtures/hcl2_upgrade/varfile-with-no-variables-block/expected.pkr.hcl b/command/test-fixtures/hcl2_upgrade/varfile-with-no-variables-block/expected.pkr.hcl new file mode 100644 index 00000000000..c2e5767f86a --- /dev/null +++ b/command/test-fixtures/hcl2_upgrade/varfile-with-no-variables-block/expected.pkr.hcl @@ -0,0 +1,33 @@ + +variable "ssh_host" { + type = string +} + +variable "ssh_password" { + type = string +} + +variable "ssh_username" { + type = string +} + +variable "version_tag" { + type = string +} + +source "null" "autogenerated_1" { + communicator = "ssh" + ssh_host = "${var.ssh_host}" + ssh_password = "${var.ssh_password}" + ssh_username = "${var.ssh_username}" +} + +build { + sources = ["source.null.autogenerated_1"] + + provisioner "shell-local" { + inline = ["echo ${var.version_tag} > provision.txt"] + pause_before = "20s" + } + +} diff --git a/command/test-fixtures/hcl2_upgrade/varfile-with-no-variables-block/input.json b/command/test-fixtures/hcl2_upgrade/varfile-with-no-variables-block/input.json new file mode 100644 index 00000000000..bb901d095d9 --- /dev/null +++ b/command/test-fixtures/hcl2_upgrade/varfile-with-no-variables-block/input.json @@ -0,0 +1,18 @@ +{ + "builders": [ + { + "type": "null", + "communicator": "ssh", + "ssh_host": "{{ user `ssh_host` }}", + "ssh_password": "{{ user `ssh_password` }}", + "ssh_username": "{{ user `ssh_username` }}" + } + ], + "provisioners": [ + { + "pause_before": "20s", + "type": "shell-local", + "inline": [ "echo {{ user `version_tag` }} > provision.txt" ] + } + ] +} diff --git a/command/test-fixtures/hcl2_upgrade/varfile-with-no-variables-block/variables.json b/command/test-fixtures/hcl2_upgrade/varfile-with-no-variables-block/variables.json new file mode 100644 index 00000000000..4e4b93c64b8 --- /dev/null +++ b/command/test-fixtures/hcl2_upgrade/varfile-with-no-variables-block/variables.json @@ -0,0 +1,6 @@ +{ + "version_tag": "1.0.0", + "ssh_host": "localhost", + "ssh_username": "packer", + "ssh_password": "packer" +} From a00eed90f4344b39acd0ca909a669bacb9a4e44a Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 7 Feb 2023 12:29:06 -0500 Subject: [PATCH 040/381] Update instance runner for workflow Small Linux runners are only supported within on-prem actions. This change updates the workflow to use a public Linux runner. --- .github/workflows/create-release-branch.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/create-release-branch.yml b/.github/workflows/create-release-branch.yml index 12f67225365..bde81745517 100644 --- a/.github/workflows/create-release-branch.yml +++ b/.github/workflows/create-release-branch.yml @@ -1,8 +1,8 @@ -name: create a release branch +name: Create a release branch on: [workflow_dispatch] jobs: create-branch: - runs-on: [linux, small] + runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: hashicorp/actions-create-release-branch@v1 From 40557017e02f01ec50b89f849fff9a965f18e8be Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 8 Feb 2023 15:45:59 -0500 Subject: [PATCH 041/381] Update CHANGELOG for 1.8.6 and 1.9.0 --- CHANGELOG.md | 59 +++++++++++++++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb65a7a3c5e..2eb70463fce 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,27 +1,24 @@ -## 1.8.6 (Upcoming) +## 1.9.0 (Unreleased) +### NOTES: +* **Breaking Change**: Iteration fingerprints used to be computed from the Git SHA of the + repository where the template is located when running packer build. This + changes with this release, and now fingerprints are automatically generated + as a ULID. This implies that continuing an existing iteration will require + users to define the fingerprint in the environment manually in order to + adopt this behaviour, otherwise, by default, a new iteration will be + created. This does not impact workflows where the fingerprint was defined + through the HCP_PACKER_ITERATION_FINGERPRINT environment variable, and + these builds will work exactly as they did before. + [GH-12172](https://github.com/hashicorp/packer/pull/12172) ### IMPROVEMENTS: -* bump github.com/hashicorp/hcp-sdk-go from 0.28.0 to 0.29.0. - [GH-12163](https://github.com/hashicorp/packer/pull/12163) -* hcp: iteration fingerprints used to be computed from the Git SHA of the repository - where the template is located when running packer build. This changes with this - release, and now fingerprints are automatically generated as a ULID. This implies - that continuing an existing iteration will require users to define the - fingerprint in the environment manually in order to adopt this behaviour, - otherwise, by default, a new iteration will be created. This does not impact - workflows where the fingerprint was defined through the - HCP_PACKER_ITERATION_FINGERPRINT environment variable, and these builds will work - exactly as they did before. -### BUG FIXES: -* core/hcl2: Templates with build blocks referencing an unknown source block - would display an empty string for the template filename at line 0, which made - it difficult to identify the broken build block. Packer has been updated to - display the proper filename and line number where the unknown reference - resides. [GH-12167](https://github.com/hashicorp/packer/pull/12167) -* core: Linux packages now have vendor label and set the default label to HashiCorp. - This fix is implemented for any future releases, but will not be - updated for historical releases. +* core/hcp: Now, fingerprints used by HCP Packer are randomly generated ULIDs + instead of a Git SHA, and a new one is always generated, unless one is + already specified in the environment. + [GH-12172](https://github.com/hashicorp/packer/pull/12172) + +## 1.8.6 (Unreleased) ### NOTES: * core: Users will see some changes in how names are displayed during a Packer @@ -31,6 +28,26 @@ ".mybuilder". This does not impact the behavior of options such as only or except, they will continue to work as they did before.) +### IMPROVEMENTS: +* bump github.com/hashicorp/hcp-sdk-go from 0.28.0 to 0.29.0. + [GH-12163](https://github.com/hashicorp/packer/pull/12163) +* core/hcl2: Packer will no longer warn on excluded post-processors when using + `-only/exlude` filters for running select builds. + [GH-12187](https://github.com/hashicorp/packer/pull/12187) + +### BUG FIXES: +* cmd/hcl2_upgrade: Fix crash when variables block is undefined. + [GH-12250](https://github.com/hashicorp/packer/pull/12250) +* core/hcl2: Templates with build blocks referencing an unknown source block + would display an empty string for the template filename at line 0, which + made it difficult to identify the broken build block. Packer has been + updated to display the proper filename and line number where the unknown + reference resides. + [GH-12167](https://github.com/hashicorp/packer/pull/12167) +* core: Linux packages now have vendor label and set the default label to + HashiCorp. This fix is implemented for any future releases, but will not be + updated for historical releases. + ## 1.8.5 (December 12, 2022) ### NOTES: From 8a3caa1599a4fda3a32052de30944302bc4c918e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 31 Jan 2023 19:02:12 +0000 Subject: [PATCH 042/381] build(deps): bump hashicorp/actions-go-build from 0.1.7 to 0.1.9 Bumps [hashicorp/actions-go-build](https://github.com/hashicorp/actions-go-build) from 0.1.7 to 0.1.9. - [Release notes](https://github.com/hashicorp/actions-go-build/releases) - [Changelog](https://github.com/hashicorp/actions-go-build/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/actions-go-build/compare/v0.1.7...v0.1.9) --- updated-dependencies: - dependency-name: hashicorp/actions-go-build dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 72632706685..9eb20afc6d0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -112,7 +112,7 @@ jobs: PRERELEASE_VERSION: ${{ needs.set-product-version.outputs.product-prerelease-version }} LD_FLAGS: "${{ needs.set-product-version.outputs.set-ld-flags}}" CGO_ENABLED: "0" - uses: hashicorp/actions-go-build@v0.1.7 + uses: hashicorp/actions-go-build@v0.1.9 with: product_name: ${{ env.REPO_NAME }} product_version: ${{ needs.set-product-version.outputs.product-version }} @@ -149,7 +149,7 @@ jobs: PRERELEASE_VERSION: ${{ needs.set-product-version.outputs.product-prerelease-version }} LD_FLAGS: "${{ needs.set-product-version.outputs.set-ld-flags}}" CGO_ENABLED: "0" - uses: hashicorp/actions-go-build@v0.1.7 + uses: hashicorp/actions-go-build@v0.1.9 with: product_name: ${{ env.REPO_NAME }} product_version: ${{ needs.set-product-version.outputs.product-version }} @@ -211,7 +211,7 @@ jobs: PRERELEASE_VERSION: ${{ needs.set-product-version.outputs.product-prerelease-version }} LD_FLAGS: "${{ needs.set-product-version.outputs.set-ld-flags}}" CGO_ENABLED: "0" - uses: hashicorp/actions-go-build@v0.1.7 + uses: hashicorp/actions-go-build@v0.1.9 with: product_name: ${{ env.REPO_NAME }} product_version: ${{ needs.set-product-version.outputs.product-version }} From ab90025dc2e9071019263d1f31ddf14ee59d7440 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Feb 2023 19:00:24 +0000 Subject: [PATCH 043/381] build(deps): bump github.com/hashicorp/hcp-sdk-go from 0.31.0 to 0.33.0 Bumps [github.com/hashicorp/hcp-sdk-go](https://github.com/hashicorp/hcp-sdk-go) from 0.31.0 to 0.33.0. - [Release notes](https://github.com/hashicorp/hcp-sdk-go/releases) - [Changelog](https://github.com/hashicorp/hcp-sdk-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/hcp-sdk-go/compare/v0.31.0...v0.33.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/hcp-sdk-go dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 8 ++++---- go.sum | 16 ++++++---------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/go.mod b/go.mod index dc491c56b70..689e5dc7685 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/hashicorp/go-uuid v1.0.2 github.com/hashicorp/go-version v1.6.0 github.com/hashicorp/hcl/v2 v2.14.1 - github.com/hashicorp/hcp-sdk-go v0.31.0 + github.com/hashicorp/hcp-sdk-go v0.33.0 github.com/hashicorp/packer-plugin-amazon v1.1.6 github.com/hashicorp/packer-plugin-sdk v0.3.4 github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 @@ -94,6 +94,7 @@ require ( github.com/hashicorp/packer-plugin-vmware v1.0.7 github.com/hashicorp/packer-plugin-vsphere v1.1.1 github.com/hashicorp/packer-plugin-yandex v1.1.2 + github.com/oklog/ulid v1.3.1 ) require ( @@ -158,10 +159,10 @@ require ( github.com/go-openapi/jsonpointer v0.19.5 // indirect github.com/go-openapi/jsonreference v0.20.0 // indirect github.com/go-openapi/loads v0.21.2 // indirect - github.com/go-openapi/spec v0.20.7 // indirect + github.com/go-openapi/spec v0.20.8 // indirect github.com/go-openapi/strfmt v0.21.3 // indirect github.com/go-openapi/swag v0.22.3 // indirect - github.com/go-openapi/validate v0.22.0 // indirect + github.com/go-openapi/validate v0.22.1 // indirect github.com/go-resty/resty/v2 v2.6.0 // indirect github.com/gofrs/uuid v4.0.0+incompatible // indirect github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3 // indirect @@ -226,7 +227,6 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d // indirect - github.com/oklog/ulid v1.3.1 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/pkg/errors v0.9.1 // indirect diff --git a/go.sum b/go.sum index 9db88ef83bf..a1bacecff01 100644 --- a/go.sum +++ b/go.sum @@ -564,8 +564,8 @@ github.com/go-openapi/runtime v0.25.0 h1:7yQTCdRbWhX8vnIjdzU8S00tBYf7Sg71EBeorlP github.com/go-openapi/runtime v0.25.0/go.mod h1:Ux6fikcHXyyob6LNWxtE96hWwjBPYF0DXgVFuMTneOs= github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= github.com/go-openapi/spec v0.20.6/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= -github.com/go-openapi/spec v0.20.7 h1:1Rlu/ZrOCCob0n+JKKJAWhNWMPW8bOZRg8FJaY+0SKI= -github.com/go-openapi/spec v0.20.7/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= +github.com/go-openapi/spec v0.20.8 h1:ubHmXNY3FCIOinT8RNrrPfGc9t7I1qhPtdOGoG2AxRU= +github.com/go-openapi/spec v0.20.8/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= github.com/go-openapi/strfmt v0.21.0/go.mod h1:ZRQ409bWMj+SOgXofQAGTIo2Ebu72Gs+WaRADcS5iNg= github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k= github.com/go-openapi/strfmt v0.21.3 h1:xwhj5X6CjXEZZHMWy1zKJxvW9AfHC9pkyUjLvHtKG7o= @@ -575,8 +575,8 @@ github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/ github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-openapi/validate v0.22.0 h1:b0QecH6VslW/TxtpKgzpO1SNG7GU2FsaqKdP1E2T50Y= -github.com/go-openapi/validate v0.22.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= +github.com/go-openapi/validate v0.22.1 h1:G+c2ub6q47kfX1sOBLwIQwzBVt8qmOAARyo/9Fqs9NU= +github.com/go-openapi/validate v0.22.1/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= github.com/go-resty/resty/v2 v2.6.0 h1:joIR5PNLM2EFqqESUjCMGXrWmXNHEU9CEiK813oKYS4= github.com/go-resty/resty/v2 v2.6.0/go.mod h1:PwvJS6hvaPkjtjNg9ph+VrSD92bi5Zq73w/BIH7cC3Q= @@ -830,8 +830,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.14.1 h1:x0BpjfZ+CYdbiz+8yZTQ+gdLO7IXvOut7Da+XJayx34= github.com/hashicorp/hcl/v2 v2.14.1/go.mod h1:e4z5nxYlWNPdDSNYX+ph14EvWYMFm3eP0zIUqPc2jr0= -github.com/hashicorp/hcp-sdk-go v0.31.0 h1:Xp/v1MlAWyQpcd01tqRaFC6TTTf7Gj26LkWqAxDBxlg= -github.com/hashicorp/hcp-sdk-go v0.31.0/go.mod h1:n9Obsd+GShhLkyxzrOQOEIMMpOmLYPBT5CiZFwUeaaE= +github.com/hashicorp/hcp-sdk-go v0.33.0 h1:adlaLXlrKP1CHSt2vnXeBN3g3jK3cgDfyi7B4WcBLTo= +github.com/hashicorp/hcp-sdk-go v0.33.0/go.mod h1:7TtPQnTEE/WCdUTetjMD00NMmtsW1OGU6sTgN9GNYT0= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= github.com/hashicorp/memberlist v0.2.2 h1:5+RffWKwqJ71YPu9mWsF7ZOscZmwfasdA8kbdC7AO2g= @@ -888,10 +888,6 @@ github.com/hashicorp/packer-plugin-qemu v1.0.8 h1:7RBToKsCH50vo7H+gviuYR+3dknIQh github.com/hashicorp/packer-plugin-qemu v1.0.8/go.mod h1:BpWIpVpOoPFV9Ppmzq4DP/S0QNoh1R+7DUCqxHdXc+Y= github.com/hashicorp/packer-plugin-salt v1.0.0 h1:bLGdlDG2nLyOzjp/5d2rmZ9XVxDeDUGejOK3wayqEL4= github.com/hashicorp/packer-plugin-salt v1.0.0/go.mod h1:onggPITzeB6LPSW8XlSobu8eI6yj3IMUi5cS6vWnL7s= -github.com/hashicorp/packer-plugin-sdk v0.3.2 h1:4Kqq7B8CRDMbfZmkloyz11t1hfqazJuBbW8ZFo4QlN4= -github.com/hashicorp/packer-plugin-sdk v0.3.2/go.mod h1:XZRvL9kRqJJtB6rf9Lu2zWLJbf2/4ImWXDjp9O9UQGE= -github.com/hashicorp/packer-plugin-sdk v0.3.3 h1:YgA3B/aoG3WTq1sjNJ+1SyLISZIag4+yoDMa6CmhmUw= -github.com/hashicorp/packer-plugin-sdk v0.3.3/go.mod h1:XZRvL9kRqJJtB6rf9Lu2zWLJbf2/4ImWXDjp9O9UQGE= github.com/hashicorp/packer-plugin-sdk v0.3.4 h1:fmcHQtCGVa4tY2zeu/UffUHz0f3Y5RYc0OgR4XWf5oA= github.com/hashicorp/packer-plugin-sdk v0.3.4/go.mod h1:XZRvL9kRqJJtB6rf9Lu2zWLJbf2/4ImWXDjp9O9UQGE= github.com/hashicorp/packer-plugin-tencentcloud v1.0.5 h1:L0OWx9fSu785mCoCA9dr15WTup6ILNFAYV6HTld0OXQ= From b3a1e98889a98fe9b1931bde926ff2cbff3a909d Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 14 Feb 2023 14:39:57 -0500 Subject: [PATCH 044/381] Update github.com/hashicorp/go-getter/v2 pkgs to address CVE-2023-0475 --- go.mod | 7 +- go.sum | 710 +-------------------------------------------------------- 2 files changed, 14 insertions(+), 703 deletions(-) diff --git a/go.mod b/go.mod index 689e5dc7685..1bc8d6f0fde 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( github.com/hako/durafmt v0.0.0-20200710122514-c0fb7b4da026 github.com/hashicorp/go-checkpoint v0.0.0-20171009173528-1545e56e46de github.com/hashicorp/go-cty-funcs v0.0.0-20200930094925-2721b1e36840 - github.com/hashicorp/go-getter/v2 v2.1.1 + github.com/hashicorp/go-getter/v2 v2.2.0 github.com/hashicorp/go-multierror v1.1.1 github.com/hashicorp/go-uuid v1.0.2 github.com/hashicorp/go-version v1.6.0 @@ -140,6 +140,7 @@ require ( github.com/bmatcuk/doublestar v1.1.5 // indirect github.com/c2h5oh/datasize v0.0.0-20200825124411-48ed595a09d2 // indirect github.com/cenkalti/backoff/v3 v3.2.2 // indirect + github.com/chzyer/test v1.0.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/digitalocean/go-libvirt v0.0.0-20201209184759-e2a69bcd5bd1 // indirect github.com/digitalocean/go-qemu v0.0.0-20210326154740-ac9e0b687001 // indirect @@ -184,8 +185,8 @@ require ( github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-azure-helpers v0.16.5 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter/gcs/v2 v2.1.1 // indirect - github.com/hashicorp/go-getter/s3/v2 v2.1.1 // indirect + github.com/hashicorp/go-getter/gcs/v2 v2.2.0 // indirect + github.com/hashicorp/go-getter/s3/v2 v2.2.0 // indirect github.com/hashicorp/go-hclog v0.16.2 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-retryablehttp v0.7.0 // indirect diff --git a/go.sum b/go.sum index a1bacecff01..d8c1472259a 100644 --- a/go.sum +++ b/go.sum @@ -1,280 +1,17 @@ bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= -cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= -cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= cloud.google.com/go v0.105.0 h1:DNtEKRBAAzeS4KyIory52wWHuClNaXJ5x1F7xa4q+5Y= cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= -cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= -cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= -cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= -cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= -cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= -cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= -cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= -cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= -cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno= -cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= -cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= -cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= -cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= -cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= -cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= -cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= -cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= -cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ= -cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= -cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= -cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= -cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= -cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= -cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= -cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= -cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= -cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= -cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= -cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= -cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= -cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= -cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= -cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= -cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= -cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= -cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= -cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= -cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= -cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= -cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= -cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= -cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= -cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= -cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= -cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= -cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= cloud.google.com/go/compute v1.12.1 h1:gKVJMEyqV5c/UnpzjjQbo3Rjvvqpr9B1DFSbJC4OXr0= cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= -cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= cloud.google.com/go/compute/metadata v0.1.1 h1:/sxEbyrm6cw+XOUw1YxBHlatV71z4vpnmO7z2IZ0h3I= cloud.google.com/go/compute/metadata v0.1.1/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= -cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= -cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= -cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= -cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= -cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= -cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= -cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= -cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE= -cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= -cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= -cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= -cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= -cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= -cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= -cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= -cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= -cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= -cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= -cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= -cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= -cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= -cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= -cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= -cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= -cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= -cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek= -cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= -cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= -cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= -cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= -cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= -cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= -cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= -cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= -cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= -cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= -cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= -cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= -cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= -cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= -cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= -cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= -cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= -cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= -cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= -cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= -cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= -cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= -cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= -cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= -cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= -cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= -cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= cloud.google.com/go/iam v0.6.0 h1:nsqQC88kT5Iwlm4MeNGTpfMWddp6NB/UOLFTH6m1QfQ= cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= -cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= -cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= -cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= -cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= -cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= -cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= -cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= -cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= -cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= cloud.google.com/go/longrunning v0.1.1 h1:y50CXG4j0+qvEukslYFBCrzaXX0qpFbBzc3PchSu/LE= -cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= -cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= -cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= -cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= -cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= -cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= -cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= -cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= -cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= -cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= -cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= -cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= -cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= -cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= -cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= -cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= -cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= -cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= -cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= -cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= -cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= -cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= -cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= -cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= -cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= -cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= -cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= -cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= -cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= -cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= -cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= -cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= -cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= -cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= -cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= -cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= -cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= -cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE= -cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= -cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= -cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= -cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= -cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= -cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= -cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= -cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= -cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= -cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= -cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= -cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= -cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= -cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= -cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= -cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= -cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= -cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= -cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= -cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= -cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= -cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= -cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q= -cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= -cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= -cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= -cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= -cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= -cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= -cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4= -cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= -cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E= -cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= -cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= -cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= -cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= -cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0 h1:YOO045NZI9RKfCj1c5A/ZtuuENUc8OAW+gHdGnDgyMQ= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= -cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= -cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= -cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= -cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= -cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= -cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= -cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= -cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= -cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= -cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= -cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= -cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= -cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= -cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= -cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY= -cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= -cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= -cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= -cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= -cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= -cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= -cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= -cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/1and1/oneandone-cloudserver-sdk-go v1.0.1 h1:RMTyvS5bjvSWiUcfqfr/E2pxHEMrALvU+E12n6biymg= github.com/1and1/oneandone-cloudserver-sdk-go v1.0.1/go.mod h1:61apmbkVJH4kg+38ftT+/l0XxdUCVnHggqcOTqZRSEE= @@ -424,24 +161,19 @@ github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghf github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cheggaaa/pb v1.0.27 h1:wIkZHkNfC7R6GI5w7l/PdAdzXzlrbcI3p8OAlnkTsnc= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= -github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM= +github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04= +github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= @@ -495,12 +227,9 @@ github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3 github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -527,7 +256,6 @@ github.com/go-git/go-git-fixtures/v4 v4.2.1 h1:n9gGL1Ct/yIw+nfsfr8s4+sbhT+Ncu2Su github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0= github.com/go-git/go-git/v5 v5.4.2 h1:BXyZu9t0VkbiHtqrsvdq39UDhGJTl1h55VW6CSC4aY4= github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= @@ -631,19 +359,10 @@ github.com/golang-jwt/jwt/v4 v4.2.0 h1:besgBTC8w8HjP6NzQdxwKH9Z5oQMZ24ThTrHp3cZ8 github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -652,7 +371,6 @@ github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -662,11 +380,9 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -677,16 +393,10 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= -github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github/v33 v33.0.1-0.20210113204525-9318e629ec69 h1:zL0/Ug5CMhV0XRb3A6vnK1SQ9kJM3VIyRxPQ5t9w8Bg= @@ -695,48 +405,17 @@ github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.2.1 h1:d8MncMlErDFTwQGBK1xhv026j9kqhvw1Qv9IbWT1VLQ= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.2.0 h1:y8Yozv7SZtlU//QXbezB6QkpuE6jMD2/gfzk4AftXjs= github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= -github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= -github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= -github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= github.com/googleapis/gax-go/v2 v2.6.0 h1:SXk3ABtQYDT/OH8jAyvEOQ58mgawq5C4o/4/89qN2ZU= github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/gophercloud/gophercloud v0.6.1-0.20191122030953-d8ac278c1c9d/go.mod h1:ozGNgr9KYOVATV5jsgHl/ceCDXGuguqOZAzoQ/2vcNM= github.com/gophercloud/gophercloud v0.12.0 h1:mZrie07npp6ODiwHZolTicr5jV8Ogn43AvAsSMm6Ork= github.com/gophercloud/gophercloud v0.12.0/go.mod h1:gmC5oQqMDOMO1t1gq5DquX/yAU808e/4mzjjDA76+Ss= @@ -773,12 +452,12 @@ github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9n github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-cty-funcs v0.0.0-20200930094925-2721b1e36840 h1:kgvybwEeu0SXktbB2y3uLHX9lklLo+nzUwh59A3jzQc= github.com/hashicorp/go-cty-funcs v0.0.0-20200930094925-2721b1e36840/go.mod h1:Abjk0jbRkDaNCzsRhOv2iDCofYpX1eVsjozoiK63qLA= -github.com/hashicorp/go-getter/gcs/v2 v2.1.1 h1:avdlHkb/EMnFN1UwLSNaiyzfKBMJ20cVp5TEjwlcmt0= -github.com/hashicorp/go-getter/gcs/v2 v2.1.1/go.mod h1:TnBlrQbjB/ZYgZD2ep7j7hAE3CunUnujgiv+efLvQgM= -github.com/hashicorp/go-getter/s3/v2 v2.1.1 h1:gUi9i3DMVgCAhYmZ69lvMlgzjc5nAiYFhczKokYdDKc= -github.com/hashicorp/go-getter/s3/v2 v2.1.1/go.mod h1:n/SQItXL7oz4n1hDaP/IU8VIZEuqxrOfcC15YFxDDE4= -github.com/hashicorp/go-getter/v2 v2.1.1 h1:lrJijcgvu3TYQXwXjqJ4idoXMySj67It5NzcUf0kQi4= -github.com/hashicorp/go-getter/v2 v2.1.1/go.mod h1:w65fE5glbccYjndAuj1kA5lnVBGZYEaH0e5qA1kpIks= +github.com/hashicorp/go-getter/gcs/v2 v2.2.0 h1:oo6LVXva9I4CZzv531mn/FY5gtRx540I6eWwJVPWA4o= +github.com/hashicorp/go-getter/gcs/v2 v2.2.0/go.mod h1:oDHNhZN2Gf6UqfIol4S9PkbzMFlf8rBctrJvAHDTtOM= +github.com/hashicorp/go-getter/s3/v2 v2.2.0 h1:JGZihrdkZnuw+bDf8BnxuRLPwi0cfL2mwRlWA2lREAg= +github.com/hashicorp/go-getter/s3/v2 v2.2.0/go.mod h1:hj0uM2nGIi0rln/VcvxjaQYQg3WGssfUh/ya5jA555g= +github.com/hashicorp/go-getter/v2 v2.2.0 h1:vLenCsJqB5oNE141xKtT6cajhwAE8dneiNgzZA3oOqs= +github.com/hashicorp/go-getter/v2 v2.2.0/go.mod h1:EcJx6oZE8hmGuRR1l38QrfnyiujQbwsEAn11eHv6l2M= github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= @@ -924,8 +603,6 @@ github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/hyperonecom/h1-client-go v0.0.0-20191203060043-b46280e4c4a4 h1:mSmyzhwBeQt2TlHbsXYLona9pwjWAvYGwQJ2Cq/k3VE= github.com/hyperonecom/h1-client-go v0.0.0-20191203060043-b46280e4c4a4/go.mod h1:yNUVHSleURKSaYUKq4Wx0i/vjCen2aq7CvPyHd/Vj2Q= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= @@ -957,8 +634,6 @@ github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCV github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= @@ -1044,7 +719,6 @@ github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa1 github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-fs v0.0.0-20180402235330-b7b9ca407fff h1:bFJ74ac7ZK/jyislqiWdzrnENesFt43sNEBRh1xk/+g= github.com/mitchellh/go-fs v0.0.0-20180402235330-b7b9ca407fff/go.mod h1:g7SZj7ABpStq3tM4zqHiVEG5un/DZ1+qJJKO7qx1EvU= -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= @@ -1242,7 +916,6 @@ github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljT github.com/ugorji/go/codec v1.2.6 h1:7kbGefxLoDBuYXOms4yD7223OpNMMPNPZxXk5TvFcyQ= github.com/ugorji/go/codec v1.2.6/go.mod h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxWFFpvxTw= github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= -github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= @@ -1265,12 +938,8 @@ github.com/yandex-cloud/go-genproto v0.0.0-20211202135052-789603780fb2/go.mod h1 github.com/yandex-cloud/go-sdk v0.0.0-20211206101223-7c4e7926bf53 h1:SOTpRQ+mqmu3IbemdahJSev3Srp7CYNUzjDbFlBPeHU= github.com/yandex-cloud/go-sdk v0.0.0-20211206101223-7c4e7926bf53/go.mod h1:fjnP1VWobOVjfhIfeOZvq+zxhdTbqsddVXUm4psPkRU= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/zclconf/go-cty v1.0.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= @@ -1285,12 +954,7 @@ go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4x go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8= go.mongodb.org/mongo-driver v1.11.0 h1:FZKhBSTydeuffHj9CBjXlR8vQLee1cQyTWYPA6/tqiE= go.mongodb.org/mongo-driver v1.11.0/go.mod h1:s7p5vEtfbeR1gYi6pnj3c3/urpbLv2T5Sfd6Rp2HBB8= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/otel v1.11.1 h1:4WLLAmcfkmDk2ukNXJyq3/kiz/3UzCaYq6PskJsaou4= @@ -1313,7 +977,6 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20190418165655-df01cb2cc480/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -1333,42 +996,23 @@ golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d h1:sK3txAijHtOK88l68nt020 golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mobile v0.0.0-20210901025245-1fde1d6c3ca1 h1:t3ZHqovedSY8DEAUmZA99fPJhUhOb176PLACYA1sJ8Y= golang.org/x/mobile v0.0.0-20210901025245-1fde1d6c3ca1/go.mod h1:jFTmtFYCV0MFtXBU+J5V/+5AUeVS0ON/0WkE/KSrl6E= -golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= @@ -1385,85 +1029,33 @@ golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.4.0 h1:Q5QPcMlvfxFTAPV0+07Xz/MpK9NTXu2VDUuy0FeMfaU= golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0 h1:isLCZuhj4v+tYv7eskaN4v/TM+A1begWWgyVJDdl1+Y= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1473,14 +1065,8 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1503,9 +1089,6 @@ golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1514,33 +1097,17 @@ golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1549,56 +1116,26 @@ golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.3.0 h1:qoo4akIqOcDME5bhc/NgxUdovd6BSS2uMsVjB56q1xI= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1609,281 +1146,64 @@ golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191203134012-c197fd4bf371/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200711155855-7342f9734a7d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= -google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= -google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= -google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= -google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= -google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= -google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= -google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= -google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08= -google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= google.golang.org/api v0.101.0 h1:lJPPeEBIRxGpGLwnBTam1NPEM8Z2BmmXEd3z812pjwM= google.golang.org/api v0.101.0/go.mod h1:CjxAAWWt3A3VrUE2IGDY2bgK5qhoG/OkyWVlYcP05MY= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211021150943-2b146023228c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= -google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= -google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= -google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= -google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221018160656-63c7b68cfc55/go.mod h1:45EK0dUbEZ2NHjCeAd2LXmyjAgGUGrpGROgjhC3ADck= -google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c h1:QgY/XxIAIeccR+Ca/rDdKubLIU9rcJ3xfy1DC/Wd2Oo= google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1 h1:DS/BukOZWp8s6p4Dt/tOaJaTQyPyOoCcrjroHuCeLzY= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1892,12 +1212,10 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= @@ -1944,12 +1262,4 @@ gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= From f82d93d9ac6e7c644b2239f2a91875828f29f0bc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Feb 2023 20:34:35 -0500 Subject: [PATCH 045/381] build(deps): bump github.com/hashicorp/hcp-sdk-go from 0.33.0 to 0.34.0 (#12262) Bumps [github.com/hashicorp/hcp-sdk-go](https://github.com/hashicorp/hcp-sdk-go) from 0.33.0 to 0.34.0. - [Release notes](https://github.com/hashicorp/hcp-sdk-go/releases) - [Changelog](https://github.com/hashicorp/hcp-sdk-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/hcp-sdk-go/compare/v0.33.0...v0.34.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/hcp-sdk-go dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 10 +++++----- go.sum | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index 1bc8d6f0fde..932e3e0ff91 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/hashicorp/go-uuid v1.0.2 github.com/hashicorp/go-version v1.6.0 github.com/hashicorp/hcl/v2 v2.14.1 - github.com/hashicorp/hcp-sdk-go v0.33.0 + github.com/hashicorp/hcp-sdk-go v0.34.0 github.com/hashicorp/packer-plugin-amazon v1.1.6 github.com/hashicorp/packer-plugin-sdk v0.3.4 github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 @@ -48,12 +48,12 @@ require ( github.com/zclconf/go-cty-yaml v1.0.1 golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 - golang.org/x/net v0.4.0 + golang.org/x/net v0.5.0 golang.org/x/oauth2 v0.1.0 golang.org/x/sync v0.1.0 - golang.org/x/sys v0.3.0 // indirect - golang.org/x/term v0.3.0 // indirect - golang.org/x/text v0.5.0 // indirect + golang.org/x/sys v0.4.0 // indirect + golang.org/x/term v0.4.0 // indirect + golang.org/x/text v0.6.0 // indirect golang.org/x/tools v0.1.12 google.golang.org/api v0.101.0 // indirect google.golang.org/grpc v1.50.1 diff --git a/go.sum b/go.sum index d8c1472259a..82c9f406b94 100644 --- a/go.sum +++ b/go.sum @@ -509,8 +509,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.14.1 h1:x0BpjfZ+CYdbiz+8yZTQ+gdLO7IXvOut7Da+XJayx34= github.com/hashicorp/hcl/v2 v2.14.1/go.mod h1:e4z5nxYlWNPdDSNYX+ph14EvWYMFm3eP0zIUqPc2jr0= -github.com/hashicorp/hcp-sdk-go v0.33.0 h1:adlaLXlrKP1CHSt2vnXeBN3g3jK3cgDfyi7B4WcBLTo= -github.com/hashicorp/hcp-sdk-go v0.33.0/go.mod h1:7TtPQnTEE/WCdUTetjMD00NMmtsW1OGU6sTgN9GNYT0= +github.com/hashicorp/hcp-sdk-go v0.34.0 h1:sa0zJEIPg0v2NcJmCAJqL28OkSwFjQRkb/rsXSnnpBM= +github.com/hashicorp/hcp-sdk-go v0.34.0/go.mod h1:4wg3eQ8hNUumKigCcx/rPLIdtob4d9uQ1H1LGDNsM78= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= github.com/hashicorp/memberlist v0.2.2 h1:5+RffWKwqJ71YPu9mWsF7ZOscZmwfasdA8kbdC7AO2g= @@ -1051,8 +1051,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.4.0 h1:Q5QPcMlvfxFTAPV0+07Xz/MpK9NTXu2VDUuy0FeMfaU= -golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1120,21 +1120,21 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.3.0 h1:w8ZOecv6NaNa/zC8944JTU3vz4u6Lagfk4RPQxv92NQ= -golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.3.0 h1:qoo4akIqOcDME5bhc/NgxUdovd6BSS2uMsVjB56q1xI= -golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +golang.org/x/term v0.4.0 h1:O7UWfv5+A2qiuulQk30kVinPoMtoIPeVaKLEgLpVkvg= +golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.5.0 h1:OLmvp0KP+FVG99Ct/qFiL/Fhk4zp4QQnZ7b2U+5piUM= -golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= From fd3ab4710db2e094833bf6382175f0b69877f61f Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 15 Feb 2023 10:24:39 -0500 Subject: [PATCH 046/381] Bump bundled plugins to latest available version (#12271) --- go.mod | 16 ++++++++-------- go.sum | 32 ++++++++++++++++---------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/go.mod b/go.mod index 932e3e0ff91..5e436d8629c 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( github.com/hashicorp/go-version v1.6.0 github.com/hashicorp/hcl/v2 v2.14.1 github.com/hashicorp/hcp-sdk-go v0.34.0 - github.com/hashicorp/packer-plugin-amazon v1.1.6 + github.com/hashicorp/packer-plugin-amazon v1.2.1 github.com/hashicorp/packer-plugin-sdk v0.3.4 github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 github.com/klauspost/compress v1.13.6 // indirect @@ -61,14 +61,14 @@ require ( require ( github.com/digitalocean/packer-plugin-digitalocean v1.1.1 - github.com/hashicorp/packer-plugin-alicloud v1.0.5 + github.com/hashicorp/packer-plugin-alicloud v1.0.7 github.com/hashicorp/packer-plugin-ansible v1.0.3 - github.com/hashicorp/packer-plugin-azure v1.3.1 + github.com/hashicorp/packer-plugin-azure v1.4.0 github.com/hashicorp/packer-plugin-chef v1.0.2 github.com/hashicorp/packer-plugin-cloudstack v1.0.2 github.com/hashicorp/packer-plugin-converge v1.0.1 github.com/hashicorp/packer-plugin-docker v1.0.8 - github.com/hashicorp/packer-plugin-googlecompute v1.0.16 + github.com/hashicorp/packer-plugin-googlecompute v1.1.0 github.com/hashicorp/packer-plugin-hcloud v1.0.5 github.com/hashicorp/packer-plugin-hyperone v1.0.1 github.com/hashicorp/packer-plugin-hyperv v1.0.4 @@ -82,11 +82,11 @@ require ( github.com/hashicorp/packer-plugin-openstack v1.0.1 github.com/hashicorp/packer-plugin-parallels v1.0.3 github.com/hashicorp/packer-plugin-profitbricks v1.0.2 - github.com/hashicorp/packer-plugin-proxmox v1.1.0 + github.com/hashicorp/packer-plugin-proxmox v1.1.1 github.com/hashicorp/packer-plugin-puppet v1.0.1 - github.com/hashicorp/packer-plugin-qemu v1.0.8 + github.com/hashicorp/packer-plugin-qemu v1.0.9 github.com/hashicorp/packer-plugin-salt v1.0.0 - github.com/hashicorp/packer-plugin-tencentcloud v1.0.5 + github.com/hashicorp/packer-plugin-tencentcloud v1.0.6 github.com/hashicorp/packer-plugin-triton v1.0.2 github.com/hashicorp/packer-plugin-ucloud v1.0.1 github.com/hashicorp/packer-plugin-vagrant v1.0.3 @@ -122,7 +122,7 @@ require ( github.com/Microsoft/go-winio v0.4.16 // indirect github.com/NaverCloudPlatform/ncloud-sdk-go-v2 v1.1.7 // indirect github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect - github.com/Telmate/proxmox-api-go v0.0.0-20220107223401-b9c909d83a3b // indirect + github.com/Telmate/proxmox-api-go v0.0.0-20221209160129-bb95d9a81e7a // indirect github.com/acomagu/bufpipe v1.0.3 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/aliyun/alibaba-cloud-sdk-go v1.61.1028 // indirect diff --git a/go.sum b/go.sum index 82c9f406b94..4f7ef3f7be0 100644 --- a/go.sum +++ b/go.sum @@ -85,8 +85,8 @@ github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C6 github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/Telmate/proxmox-api-go v0.0.0-20220107223401-b9c909d83a3b h1:EzGVAEAffdZqkKpI4wC9dzR81v/uBB4yYuXf1wU3fZk= -github.com/Telmate/proxmox-api-go v0.0.0-20220107223401-b9c909d83a3b/go.mod h1:keBhXWLa+UBajvf79xvKcfiqeIc7vZL9wOqxuy1CBGw= +github.com/Telmate/proxmox-api-go v0.0.0-20221209160129-bb95d9a81e7a h1:b7kX0Wh4fiXS78ThBxs2KYwrD6mPQeCJVHAVhxEz+AM= +github.com/Telmate/proxmox-api-go v0.0.0-20221209160129-bb95d9a81e7a/go.mod h1:zQ/B1nkMv6ueUlAEr0D/x5eaFe3rHSScuTc08dcvvPI= github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af h1:DBNMBMuMiWYu0b+8KMJuWmfCkcxl09JwdlqwDZZ6U14= github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw= github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk= @@ -515,14 +515,14 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= github.com/hashicorp/memberlist v0.2.2 h1:5+RffWKwqJ71YPu9mWsF7ZOscZmwfasdA8kbdC7AO2g= github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/packer-plugin-alicloud v1.0.5 h1:SMateqh9nrGWXSii95cokvwt4RjBsw7EsvMHa3m4zco= -github.com/hashicorp/packer-plugin-alicloud v1.0.5/go.mod h1:+dx3QSoBC+6IOBP647xdcHNzD39uStAtp92/9k8QSTU= -github.com/hashicorp/packer-plugin-amazon v1.1.6 h1:tKhnBLbKh1MCV1KocG7XqP+2td7sRlNig/+6/0Hlk4k= -github.com/hashicorp/packer-plugin-amazon v1.1.6/go.mod h1:zsmzji+RsT+YH/K+CyEw4Q+C5EizbuspcQ/4mTvRf+8= +github.com/hashicorp/packer-plugin-alicloud v1.0.7 h1:Vp86AE/lx9CMQrEzIGvLOUxsbpxTINevF5oaUOJ/HNw= +github.com/hashicorp/packer-plugin-alicloud v1.0.7/go.mod h1:Qz25m4o6IsRPtImccNoFon+gfQFi5aifpPtTwJyYNp8= +github.com/hashicorp/packer-plugin-amazon v1.2.1 h1:0Xqr8KsTJJhIo0vvjqPYrVMgyVxNRuYH4DeB5m/WAtw= +github.com/hashicorp/packer-plugin-amazon v1.2.1/go.mod h1:qlp0h5TWVGgcPzN9mSxPiEAwOUOW3XU/zep0pGd0ZsM= github.com/hashicorp/packer-plugin-ansible v1.0.3 h1:XjltQVPYnnZdNyBjwHr1QthR413SjZxTtRrmM0sM3VI= github.com/hashicorp/packer-plugin-ansible v1.0.3/go.mod h1:N4OZtNDq2FSRBknuNU/GSoKtllfxQnHCYYaJUD1p1MA= -github.com/hashicorp/packer-plugin-azure v1.3.1 h1:oXkgxZEKhkPwVnAKhc1Z45U+vpgM9n3is/tC2eWY+Eo= -github.com/hashicorp/packer-plugin-azure v1.3.1/go.mod h1:R38/vpe/hQ9rPLuv4IRkGFb5Awp/4pubo/0rT0ICMdM= +github.com/hashicorp/packer-plugin-azure v1.4.0 h1:rxkcGe5pjjnzddfR5/sBJmg8kb+ko+r2M+Ce7OC8sQ4= +github.com/hashicorp/packer-plugin-azure v1.4.0/go.mod h1:7j1q0SNPeZr7xRID0c/Hu9QojE41pSlSJwsNB9/rOTI= github.com/hashicorp/packer-plugin-chef v1.0.2 h1:hkVhBuglBc5wY4cNfFObW7hzJuT+VdWMAu/gQ9nDNOI= github.com/hashicorp/packer-plugin-chef v1.0.2/go.mod h1:RWNaO+NprfeW4mdZDAGaLPJE3hUR8f/poSw1MNTt+NA= github.com/hashicorp/packer-plugin-cloudstack v1.0.2 h1:JsT2AuCcZGajbFL0w/sQ5yzoWLwOPyETboDR+Ws0xbo= @@ -531,8 +531,8 @@ github.com/hashicorp/packer-plugin-converge v1.0.1 h1:LNjhWQCaPNHSgeKGj/vXwqlEuq github.com/hashicorp/packer-plugin-converge v1.0.1/go.mod h1:iXfr0QvDEOmSIK2ry53KCfztK3QaeQuTo8eHqzWMlVI= github.com/hashicorp/packer-plugin-docker v1.0.8 h1:UWPG/pl+1RFsaNQVhEuowCeOZuES6/mqy5R6FTyMeQo= github.com/hashicorp/packer-plugin-docker v1.0.8/go.mod h1:4U3gHULbUw3okSqqZgQZD5ptyJKs0S7LfOOt2U3V4Jk= -github.com/hashicorp/packer-plugin-googlecompute v1.0.16 h1:YF67aspuId/ewm8p7b0fNjRpDKHgf8WvJ5kXmAXPIvM= -github.com/hashicorp/packer-plugin-googlecompute v1.0.16/go.mod h1:k2iAHNsaoWCIwW5Zc/T2q7SjstdMTsXRAbq+3HZJmMw= +github.com/hashicorp/packer-plugin-googlecompute v1.1.0 h1:/cSZCJuRV6osaSa1uOy8cpN+c/uiCbrSsZ8vyNC0slk= +github.com/hashicorp/packer-plugin-googlecompute v1.1.0/go.mod h1:k7MhKwEDw9ASP3a1y1syKJFZiZ8pO4oH40HvVgGHzUE= github.com/hashicorp/packer-plugin-hcloud v1.0.5 h1:GNYz2jZzjqRDP38YEVyEEgk3SzvjKXDxOV1L9H9xj/I= github.com/hashicorp/packer-plugin-hcloud v1.0.5/go.mod h1:FiFFtzIjF30UMdrYG9hJ6MyJNdNROeytfqvUV5YLiqw= github.com/hashicorp/packer-plugin-hyperone v1.0.1 h1:rTxnbFE8UDnzWG3prHQZpWmCpFHMd1GmE7M8jW8Fuq4= @@ -559,18 +559,18 @@ github.com/hashicorp/packer-plugin-parallels v1.0.3 h1:smypphUCEj3arCdlvbNtZvGC1 github.com/hashicorp/packer-plugin-parallels v1.0.3/go.mod h1:Q842nvosVmP5FnYozk8ZZj93HGIan19jHTxGeteBCb0= github.com/hashicorp/packer-plugin-profitbricks v1.0.2 h1:wAlTRm1A39T9hferxFtKaLCDmlsqA9cU7dTQtMLcvKQ= github.com/hashicorp/packer-plugin-profitbricks v1.0.2/go.mod h1:Gpg/h6A0UcTYzLwDw2GrUJjlPUmL5QaxGBJWH0NMx0g= -github.com/hashicorp/packer-plugin-proxmox v1.1.0 h1:ewqOLx1CbEpG0SIET6tcWP9Ijgc86/tAEjUhZfH3QAI= -github.com/hashicorp/packer-plugin-proxmox v1.1.0/go.mod h1:8SBMRM813mDvsFSfTC7S0cta9RVbXp8hQEphvJORW+A= +github.com/hashicorp/packer-plugin-proxmox v1.1.1 h1:uBwW7MQN1p3vUha1BVIG3wqWrxa349qWekYyScSvDls= +github.com/hashicorp/packer-plugin-proxmox v1.1.1/go.mod h1:S83+dabgqpNuKvm7sdNh2ivqx5rpgO6mbJn/iVrrXjk= github.com/hashicorp/packer-plugin-puppet v1.0.1 h1:/obGvsyiKiO2hX9TxRTJ7Y+/44K4WqKJlzg4xHAyIoY= github.com/hashicorp/packer-plugin-puppet v1.0.1/go.mod h1:avMyKLTT/6SVR/hEgJk92SMziK3nwlNJ00kOYgwIDMk= -github.com/hashicorp/packer-plugin-qemu v1.0.8 h1:7RBToKsCH50vo7H+gviuYR+3dknIQhtrtMcJpKNBm70= -github.com/hashicorp/packer-plugin-qemu v1.0.8/go.mod h1:BpWIpVpOoPFV9Ppmzq4DP/S0QNoh1R+7DUCqxHdXc+Y= +github.com/hashicorp/packer-plugin-qemu v1.0.9 h1:1YKBBzBULYUBWtpAZJTbaLjjZPAdQ63okkpTqMBTnzM= +github.com/hashicorp/packer-plugin-qemu v1.0.9/go.mod h1:BpWIpVpOoPFV9Ppmzq4DP/S0QNoh1R+7DUCqxHdXc+Y= github.com/hashicorp/packer-plugin-salt v1.0.0 h1:bLGdlDG2nLyOzjp/5d2rmZ9XVxDeDUGejOK3wayqEL4= github.com/hashicorp/packer-plugin-salt v1.0.0/go.mod h1:onggPITzeB6LPSW8XlSobu8eI6yj3IMUi5cS6vWnL7s= github.com/hashicorp/packer-plugin-sdk v0.3.4 h1:fmcHQtCGVa4tY2zeu/UffUHz0f3Y5RYc0OgR4XWf5oA= github.com/hashicorp/packer-plugin-sdk v0.3.4/go.mod h1:XZRvL9kRqJJtB6rf9Lu2zWLJbf2/4ImWXDjp9O9UQGE= -github.com/hashicorp/packer-plugin-tencentcloud v1.0.5 h1:L0OWx9fSu785mCoCA9dr15WTup6ILNFAYV6HTld0OXQ= -github.com/hashicorp/packer-plugin-tencentcloud v1.0.5/go.mod h1:XRfZLgzsf6aFgE5W5W5rHadjVLIbI36e904aiGkJyTI= +github.com/hashicorp/packer-plugin-tencentcloud v1.0.6 h1:h7thXtVaXZhrF5L+bMcdMktrcV4RufQvJI41y10dHtE= +github.com/hashicorp/packer-plugin-tencentcloud v1.0.6/go.mod h1:J7RslhmI+X7EdAVOtEp59X7L3L5VGyZNwiXxDyIpYpI= github.com/hashicorp/packer-plugin-triton v1.0.2 h1:Yla93I7Jl/WXCuCRWYYR0J8/57X4puGLZ07wBn+QS9w= github.com/hashicorp/packer-plugin-triton v1.0.2/go.mod h1:4eeTOUPYYD1B9iNF0FMqfVczqhTRuL9bXn3AqJa2N9Y= github.com/hashicorp/packer-plugin-ucloud v1.0.1 h1:zHNRpIwXZLGZymj7Jf752Hs0lhywJFiEF1jbCAP0bd0= From b589d0f583e72e2b7fb524d9ed3a1da0955940e6 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 15 Feb 2023 10:36:14 -0500 Subject: [PATCH 047/381] Update CHANGELOG --- CHANGELOG.md | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2eb70463fce..57bfbade6a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,5 @@ ## 1.9.0 (Unreleased) + ### NOTES: * **Breaking Change**: Iteration fingerprints used to be computed from the Git SHA of the repository where the template is located when running packer build. This @@ -18,19 +19,37 @@ already specified in the environment. [GH-12172](https://github.com/hashicorp/packer/pull/12172) -## 1.8.6 (Unreleased) +## 1.8.6 (February 15, 2023) ### NOTES: * core: Users will see some changes in how names are displayed during a Packer build for JSON templates. Previously only the builder type or the builder name, if it was set, would be displayed. Now for named builders - (`"name":"mybuilder"`) the builder'ss type and name will be displayed (i.e + (`"name":"mybuilder"`) the builder's type and name will be displayed (i.e ".mybuilder". This does not impact the behavior of options such as only or except, they will continue to work as they did before.) +### PLUGINS: +The following external plugins have been updated and pinned to address open + issues. Please see their respective changelogs for details on plugin + specific bug fixes and improvements. + +* alicloud@v1.0.7 - [CHANGELOG](https://github.com/hashicorp/packer-plugin-alicloud/releases/tag/v1.0.7) +* amazon@v1.2.1 - [CHANGELOG](https://github.com/hashicorp/packer-plugin-amazon/releases/tag/v1.2.1) +* azure@v1.4.0 - [CHANGELOG](https://github.com/hashicorp/packer-plugin-azure/releases/tag/v1.4.0) +* googlecompute@v1.1.0 - [CHANGELOG](https://github.com/hashicorp/packer-plugin-googlecompute/releases/tag/v1.1.0) +* proxmox@v1.1.1 - [CHANGELOG](https://github.com/hashicorp/packer-plugin-proxmox/releases/tag/v1.1.1) +* tencentcloud@v1.0.6 - [CHANGELOG](https://github.com/hashicorp/packer-plugin-tencentcloud/releases/tag/v1.0.6) +* qemu@v1.0.9 - [CHANGELOG](https://github.com/hashicorp/packer-plugin-qemu/releases/tag/v1.0.9) + + ### IMPROVEMENTS: -* bump github.com/hashicorp/hcp-sdk-go from 0.28.0 to 0.29.0. +* Bump bundled plugins to latest available version. + [GH-12271](https://github.com/hashicorp/packer/pull/12271) +* bump github.com/hashicorp/hcp-sdk-go from 0.28.0 to 0.29.0 [GH-12163](https://github.com/hashicorp/packer/pull/12163) +* Bump github.com/hashicorp/hcp-sdk-go from 0.33.0 to 0.34.0 + [GH-12262](https://github.com/hashicorp/packer/pull/12262) * core/hcl2: Packer will no longer warn on excluded post-processors when using `-only/exlude` filters for running select builds. [GH-12187](https://github.com/hashicorp/packer/pull/12187) From 5652c2f5938eb4220561edf367be3ade17d70b2b Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 15 Feb 2023 16:24:16 -0500 Subject: [PATCH 048/381] CHANGELOG: Add HCP Packer description regression fix --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 57bfbade6a8..dcc6bc92241 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -66,6 +66,10 @@ The following external plugins have been updated and pinned to address open * core: Linux packages now have vendor label and set the default label to HashiCorp. This fix is implemented for any future releases, but will not be updated for historical releases. +* core/hcp: The bucket's description was not properly set in the bucket + object sent to HCP Packer leaving all newly created buckets with an empty + description. [GH-12235] + [GH-12235](https://github.com/hashicorp/packer/pull/12235) ## 1.8.5 (December 12, 2022) From 8f67444311625a22272148496506c4e0fd8b2e2c Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 1 Mar 2023 15:19:44 -0500 Subject: [PATCH 049/381] Update JSON template does not return substitute values in 1.8.6 version (#12290) This change fixes a regression introduced in Packer 1.8.6, where configurations custom builder names , via the name attribute, would internally interpolate the proper build names, but would display the name to STDOUT as uninterpolated values. The change updates the creation of a CoreBuild for legacy JSON templates to use use the interpolated name as the final build type, which gets rendered to the screen. Test Results Before Fix ``` ~> go test ./... -run='TestCoreBuild_buildNameIntepolation' -v --- FAIL: TestCoreBuild_buildTypeIntepolation (0.01s) core_test.go:930: build type interpolation failed; expected "test.mybuild-RandomToken", got "test.{{user `build_name`}}" core_test.go:930: build type interpolation failed; expected "test.build-vardata", got "test.{{user `build_name`}}" core_test.go:930: build type interpolation failed; expected "test.build-12345", got "test.{{user `build_name`}}" FAIL ``` Test Results After Fix ``` ~> go test ./... -run='TestCoreBuild_buildNameIntepolation' -v === RUN TestCoreBuild_buildTypeIntepolation --- PASS: TestCoreBuild_buildTypeIntepolation (0.01s) PASS ``` Closes #12281 --- packer/core.go | 4 +- packer/core_test.go | 69 +++++++++++++++++++ .../build-interpolated-name.json | 7 ++ 3 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 packer/test-fixtures/build-interpolated-name.json diff --git a/packer/core.go b/packer/core.go index e8da2b2eefd..f768d00c619 100644 --- a/packer/core.go +++ b/packer/core.go @@ -421,7 +421,7 @@ func (c *Core) Build(n string) (packersdk.Build, error) { // Return a structure that contains the plugins, their types, variables, and // the raw builder config loaded from the json template cb := &CoreBuild{ - Type: configBuilder.Name, + Type: n, Builder: builder, BuilderConfig: configBuilder.Config, BuilderType: configBuilder.Type, @@ -432,6 +432,8 @@ func (c *Core) Build(n string) (packersdk.Build, error) { Variables: c.variables, } + //configBuilder.Name is left uninterpolated so we must check against + // the interpolated name. if configBuilder.Type != configBuilder.Name { cb.BuildName = configBuilder.Type } diff --git a/packer/core_test.go b/packer/core_test.go index 309e547550a..8bea78ab6e0 100644 --- a/packer/core_test.go +++ b/packer/core_test.go @@ -68,6 +68,10 @@ func TestCoreBuild_basic(t *testing.T) { t.Fatalf("err: %s", err) } + if build.Name() != "test" { + t.Fatalf("bad: build name does not match expected: %q, got: %q", "test", build.Name()) + } + if _, err := build.Prepare(); err != nil { t.Fatalf("err: %s", err) } @@ -98,6 +102,10 @@ func TestCoreBuild_basicInterpolated(t *testing.T) { t.Fatalf("err: %s", err) } + if build.Name() != "test.NAME" { + t.Fatalf("bad: build name does not match expected: %q, got: %q", "NAME", build.Name()) + } + if _, err := build.Prepare(); err != nil { t.Fatalf("err: %s", err) } @@ -865,3 +873,64 @@ func TestCoreBuild_packerVersion(t *testing.T) { t.Fatalf("bad: %#v", result) } } + +func TestCoreBuild_buildNameIntepolation(t *testing.T) { + config := TestCoreConfig(t) + cases := []struct { + File string + InterpolatedName, Expected string + Vars map[string]string + }{ + { + File: "build-interpolated-name.json", + InterpolatedName: "mybuild-RandomToken", + Expected: "test.mybuild-RandomToken", + Vars: map[string]string{ + "build_name": "mybuild-RandomToken", + }, + }, + { + File: "build-interpolated-name.json", + InterpolatedName: "build-vardata", + Expected: "test.build-vardata", + Vars: map[string]string{ + "build_name": "build-vardata", + }, + }, + { + File: "build-interpolated-name.json", + InterpolatedName: "build-12345", + Expected: "test.build-12345", + Vars: map[string]string{ + "something": "build-12345", + "build_name": "{{user `something`}}", + }, + }, + { + // When no name attribute is provided in the config the builder type is the default name. + File: "build-basic.json", + InterpolatedName: "test", + Expected: "test", + }, + } + + for _, tc := range cases { + config.Variables = tc.Vars + testCoreTemplate(t, config, fixtureDir(tc.File)) + core := TestCore(t, config) + diags := core.Initialize(InitializeOptions{}) + if diags.HasErrors() { + t.Fatalf("err: %s\n\n%s", tc.File, diags) + } + + build, err := core.Build(tc.InterpolatedName) + if err != nil { + t.Fatalf("err for InterpolatedName(%q): %s", tc.InterpolatedName, err) + } + + if build.Name() != tc.Expected { + t.Errorf("build type interpolation failed; expected %q, got %q", tc.Expected, build.Name()) + } + + } +} diff --git a/packer/test-fixtures/build-interpolated-name.json b/packer/test-fixtures/build-interpolated-name.json new file mode 100644 index 00000000000..9ac1dd779f0 --- /dev/null +++ b/packer/test-fixtures/build-interpolated-name.json @@ -0,0 +1,7 @@ + +{ + "builders": [{ + "type": "test", + "name": "{{user `build_name`}}" + }] +} From be6bf9daddb57c45bc72aa1de407d0e86a2debc0 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 1 Mar 2023 16:16:43 -0500 Subject: [PATCH 050/381] website: Update plugin tier for Nutanix to partner verified (#12291) --- website/data/plugins-manifest.json | 1 + 1 file changed, 1 insertion(+) diff --git a/website/data/plugins-manifest.json b/website/data/plugins-manifest.json index b8e39bdd59d..e47b2349cc1 100644 --- a/website/data/plugins-manifest.json +++ b/website/data/plugins-manifest.json @@ -199,6 +199,7 @@ "path": "nutanix", "repo": "nutanix-cloud-native/packer-plugin-nutanix", "version": "latest", + "pluginTier": "verified", "sourceBranch": "main" }, { From cdc75a91c2a371e864a9ad19534cf4c8de171ad1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 Mar 2023 16:17:30 -0500 Subject: [PATCH 051/381] build(deps): bump github/issue-labeler from 2.6 to 3.0 (#12261) Bumps [github/issue-labeler](https://github.com/github/issue-labeler) from 2.6 to 3.0. - [Release notes](https://github.com/github/issue-labeler/releases) - [Commits](https://github.com/github/issue-labeler/compare/v2.6...v3.0) --- updated-dependencies: - dependency-name: github/issue-labeler dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/issues-opened.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/issues-opened.yml b/.github/workflows/issues-opened.yml index 082a8cc51d6..a00573c7460 100644 --- a/.github/workflows/issues-opened.yml +++ b/.github/workflows/issues-opened.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: github/issue-labeler@v2.6 + - uses: github/issue-labeler@v3.0 with: repo-token: "${{ secrets.GITHUB_TOKEN }}" configuration-path: .github/labeler-issue-triage.yml From 245df57ca6ebc893d0c641766679408247ed3c91 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 1 Mar 2023 16:08:31 -0500 Subject: [PATCH 052/381] Update golang.org/x/net to address GO-2023-1571 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ``` » Go Modules Scanner ⚠︎ found OSV reported vulnerability GHSA-vvpx-j8f3-3w6h in golang.org/x/net@v0.5.0 ⚠︎ found OSV reported vulnerability GO-2023-1571 in golang.org/x/net@v0.5.0 ``` --- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 5e436d8629c..9007793cc5d 100644 --- a/go.mod +++ b/go.mod @@ -48,12 +48,12 @@ require ( github.com/zclconf/go-cty-yaml v1.0.1 golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 - golang.org/x/net v0.5.0 + golang.org/x/net v0.7.0 golang.org/x/oauth2 v0.1.0 golang.org/x/sync v0.1.0 - golang.org/x/sys v0.4.0 // indirect - golang.org/x/term v0.4.0 // indirect - golang.org/x/text v0.6.0 // indirect + golang.org/x/sys v0.5.0 // indirect + golang.org/x/term v0.5.0 // indirect + golang.org/x/text v0.7.0 // indirect golang.org/x/tools v0.1.12 google.golang.org/api v0.101.0 // indirect google.golang.org/grpc v1.50.1 diff --git a/go.sum b/go.sum index 4f7ef3f7be0..1753b6a9717 100644 --- a/go.sum +++ b/go.sum @@ -1051,8 +1051,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw= -golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1120,21 +1120,21 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= -golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.4.0 h1:O7UWfv5+A2qiuulQk30kVinPoMtoIPeVaKLEgLpVkvg= -golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k= -golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= From b7df3ca36f1baa904d65f1522146adc86e678ca1 Mon Sep 17 00:00:00 2001 From: "hashicorp-copywrite[bot]" <110428419+hashicorp-copywrite[bot]@users.noreply.github.com> Date: Thu, 2 Mar 2023 15:37:05 -0500 Subject: [PATCH 053/381] [COMPLIANCE] Add Copyright and License Headers (#12254) Co-authored-by: hashicorp-copywrite[bot] <110428419+hashicorp-copywrite[bot]@users.noreply.github.com> --- .github/ISSUE_TEMPLATE/config.yml | 3 +++ .github/labeler-issue-triage.yml | 3 +++ .golangci.yml | 3 +++ .release/ci.hcl | 3 +++ .release/release-metadata.hcl | 3 +++ .release/security-scan.hcl | 3 +++ Dockerfile | 3 +++ acctest/plugin/component_acc_test.go | 3 +++ acctest/plugin/plugin_acc_test.go | 3 +++ acctest/testing.go | 3 +++ acctest/testing_test.go | 3 +++ background_check.go | 3 +++ background_check_openbsd.go | 3 +++ builder/file/artifact.go | 3 +++ builder/file/artifact_test.go | 3 +++ builder/file/builder.go | 3 +++ builder/file/builder_test.go | 3 +++ builder/file/config.go | 3 +++ builder/file/config_test.go | 3 +++ builder/file/version/version.go | 3 +++ builder/null/artifact_export.go | 3 +++ builder/null/artifact_export_test.go | 3 +++ builder/null/builder.go | 3 +++ builder/null/builder_test.go | 3 +++ builder/null/config.go | 3 +++ builder/null/config_test.go | 3 +++ builder/null/ssh.go | 3 +++ builder/null/version/version.go | 3 +++ checkpoint.go | 3 +++ cmd/generate-fixer-deprecations/main.go | 3 +++ cmd/ssh-keygen/main.go | 3 +++ command/build.go | 3 +++ command/build_cancellation_test.go | 3 +++ command/build_cleanup_script_test.go | 3 +++ command/build_parallel_test.go | 3 +++ command/build_test.go | 3 +++ command/build_timeout_test.go | 3 +++ command/build_windows_test.go | 3 +++ command/cli.go | 3 +++ command/command_test.go | 3 +++ command/config_file_unix.go | 3 +++ command/config_file_windows.go | 3 +++ command/console.go | 3 +++ command/console_test.go | 3 +++ command/enumflag/flag.go | 3 +++ command/exec_test.go | 3 +++ command/fix.go | 3 +++ command/fix_test.go | 3 +++ command/flag-kv/flag.go | 3 +++ command/flag-kv/flag_json.go | 3 +++ command/flag-kv/flag_json_test.go | 3 +++ command/flag-kv/flag_strings.go | 3 +++ command/flag-kv/flag_strings_test.go | 3 +++ command/flag-kv/flag_test.go | 3 +++ command/flag-slice/flag.go | 3 +++ command/flag-slice/flag_test.go | 3 +++ command/fmt.go | 3 +++ command/fmt_test.go | 3 +++ command/hcl2_upgrade.go | 3 +++ command/hcl2_upgrade_test.go | 3 +++ command/init.go | 3 +++ command/init_test.go | 3 +++ command/inspect.go | 3 +++ command/inspect_test.go | 3 +++ command/meta.go | 3 +++ command/plugins.go | 3 +++ command/plugins_install.go | 3 +++ command/plugins_install_test.go | 3 +++ command/plugins_installed.go | 3 +++ command/plugins_remove.go | 3 +++ command/plugins_remove_test.go | 3 +++ command/plugins_required.go | 3 +++ command/signal.go | 3 +++ command/test_utils.go | 3 +++ command/utils.go | 3 +++ command/utils_test.go | 3 +++ command/validate.go | 3 +++ command/validate_test.go | 3 +++ command/vendored_plugins.go | 3 +++ command/version.go | 3 +++ command/version_test.go | 3 +++ commands.go | 3 +++ config.go | 3 +++ config_test.go | 3 +++ datasource/hcp-packer-image/data.go | 3 +++ datasource/hcp-packer-iteration/data.go | 3 +++ datasource/hcp-packer-iteration/data_acc_test.go | 3 +++ datasource/http/data.go | 3 +++ datasource/http/data_acc_test.go | 3 +++ datasource/null/data.go | 3 +++ fix/fixer.go | 3 +++ fix/fixer_amazon_enhanced_networking.go | 3 +++ fix/fixer_amazon_enhanced_networking_test.go | 3 +++ fix/fixer_amazon_private_ip.go | 3 +++ fix/fixer_amazon_private_ip_test.go | 3 +++ fix/fixer_amazon_shutdown_behavior.go | 3 +++ fix/fixer_amazon_shutdown_behavior_test.go | 3 +++ fix/fixer_amazon_spot_price_product.go | 3 +++ fix/fixer_amazon_temporary_security_group_cidrs.go | 3 +++ fix/fixer_amazon_temporary_security_group_cidrs_test.go | 3 +++ fix/fixer_azure_exclude_from_latest.go | 3 +++ fix/fixer_azure_exclude_from_latest_test.go | 3 +++ fix/fixer_clean_image_name.go | 3 +++ fix/fixer_clean_image_name_test.go | 3 +++ fix/fixer_comm_config.go | 3 +++ fix/fixer_comm_config_test.go | 3 +++ fix/fixer_createtime.go | 3 +++ fix/fixer_createtime_test.go | 3 +++ fix/fixer_docker_email.go | 3 +++ fix/fixer_galaxy_command.go | 3 +++ fix/fixer_galaxy_command_test.go | 3 +++ fix/fixer_hyperv_cpu_and_ram_naming.go | 3 +++ fix/fixer_hyperv_deprecations.go | 3 +++ fix/fixer_hyperv_deprecations_test.go | 3 +++ fix/fixer_hyperv_vmxc_typo.go | 3 +++ fix/fixer_hyperv_vmxc_typo_test.go | 3 +++ fix/fixer_iso_checksum_type_and_url.go | 3 +++ fix/fixer_iso_checksum_type_and_url_test.go | 3 +++ fix/fixer_iso_md5.go | 3 +++ fix/fixer_iso_md5_test.go | 3 +++ fix/fixer_parallels_deprecations.go | 3 +++ fix/fixer_parallels_deprecations_test.go | 3 +++ fix/fixer_parallels_headless.go | 3 +++ fix/fixer_parallels_headless_test.go | 3 +++ fix/fixer_powershell_escapes.go | 3 +++ fix/fixer_pp_docker_tag_tags.go | 3 +++ fix/fixer_pp_docker_tag_tags_test.go | 3 +++ fix/fixer_pp_manifest_filename.go | 3 +++ fix/fixer_pp_manifest_filename_test.go | 3 +++ fix/fixer_pp_vagrant_override.go | 3 +++ fix/fixer_pp_vagrant_override_test.go | 3 +++ fix/fixer_proxmox_type.go | 3 +++ fix/fixer_proxmox_type_test.go | 3 +++ fix/fixer_qemu_disk_size.go | 3 +++ fix/fixer_qemu_disk_size_test.go | 3 +++ fix/fixer_qemu_host_port.go | 3 +++ fix/fixer_qemu_host_port_test.go | 3 +++ fix/fixer_scaleway_access_key.go | 3 +++ fix/fixer_scaleway_access_key_test.go | 3 +++ fix/fixer_ssh_timeout.go | 3 +++ fix/fixer_ssh_timeout_test.go | 3 +++ fix/fixer_sshdisableagent.go | 3 +++ fix/fixer_sshdisableagent_test.go | 3 +++ fix/fixer_sshkeypath.go | 3 +++ fix/fixer_sshkeypath_test.go | 3 +++ fix/fixer_test.go | 3 +++ fix/fixer_virtualbox_gaattach.go | 3 +++ fix/fixer_virtualbox_gaattach_test.go | 3 +++ fix/fixer_virtualbox_rename.go | 3 +++ fix/fixer_virtualbox_rename_test.go | 3 +++ fix/fixer_vmware_compaction.go | 3 +++ fix/fixer_vmware_compaction_test.go | 3 +++ fix/fixer_vmware_rename.go | 3 +++ fix/fixer_vmware_rename_test.go | 3 +++ fix/fixer_vsphere_network_storage.go | 3 +++ fix/fixer_vsphere_network_storage_test.go | 3 +++ fix/helpers.go | 3 +++ hcl2template/addrs/doc.go | 3 +++ hcl2template/addrs/input_variable.go | 3 +++ hcl2template/addrs/parse_ref.go | 3 +++ hcl2template/addrs/plugin.go | 3 +++ hcl2template/addrs/plugin_test.go | 3 +++ hcl2template/addrs/referenceable.go | 3 +++ hcl2template/common_test.go | 3 +++ hcl2template/components.go | 3 +++ hcl2template/decode.go | 3 +++ hcl2template/docs.go | 3 +++ hcl2template/formatter.go | 3 +++ hcl2template/formatter_test.go | 3 +++ hcl2template/function/Consul.go | 3 +++ hcl2template/function/aws_secretetkey.go | 3 +++ hcl2template/function/datetime.go | 3 +++ hcl2template/function/datetime_test.go | 3 +++ hcl2template/function/env.go | 3 +++ hcl2template/function/index.go | 3 +++ hcl2template/function/index_test.go | 3 +++ hcl2template/function/length.go | 3 +++ hcl2template/function/length_test.go | 3 +++ hcl2template/function/templatefile.go | 3 +++ hcl2template/function/templatefile_test.go | 3 +++ hcl2template/function/vault.go | 3 +++ hcl2template/functions.go | 3 +++ hcl2template/internal/mock.go | 3 +++ hcl2template/parser.go | 3 +++ hcl2template/plugin.go | 3 +++ hcl2template/repl/format.go | 3 +++ hcl2template/repl/repl.go | 3 +++ hcl2template/shim/mock.go | 3 +++ hcl2template/shim/values.go | 3 +++ hcl2template/shim/values_test.go | 3 +++ hcl2template/types.build.from.go | 3 +++ hcl2template/types.build.go | 3 +++ hcl2template/types.build.hcp_packer_registry.go | 3 +++ hcl2template/types.build.hcp_packer_registry_test.go | 3 +++ hcl2template/types.build.post-processor.go | 3 +++ hcl2template/types.build.provisioners.go | 3 +++ hcl2template/types.build.provisioners_test.go | 3 +++ hcl2template/types.build_test.go | 3 +++ hcl2template/types.datasource.go | 3 +++ hcl2template/types.datasource_test.go | 3 +++ hcl2template/types.hcl_post-processor.go | 3 +++ hcl2template/types.hcl_provisioner.go | 3 +++ hcl2template/types.hcl_ref.go | 3 +++ hcl2template/types.packer_config.go | 3 +++ hcl2template/types.packer_config_test.go | 3 +++ hcl2template/types.required_plugins.go | 3 +++ hcl2template/types.required_plugins_test.go | 3 +++ hcl2template/types.source.go | 3 +++ hcl2template/types.source_test.go | 3 +++ hcl2template/types.variables.go | 3 +++ hcl2template/types.variables_test.go | 3 +++ hcl2template/utils.go | 3 +++ hcl2template/version.go | 3 +++ hcl2template/version_required.go | 3 +++ helper/wrappedreadline/wrappedreadline.go | 3 +++ helper/wrappedreadline/wrappedreadline_solaris.go | 3 +++ helper/wrappedreadline/wrappedreadline_unix.go | 3 +++ helper/wrappedreadline/wrappedreadline_windows.go | 3 +++ helper/wrappedstreams/streams.go | 3 +++ helper/wrappedstreams/streams_other.go | 3 +++ helper/wrappedstreams/streams_windows.go | 3 +++ internal/hcp/api/client.go | 3 +++ internal/hcp/api/errors.go | 3 +++ internal/hcp/api/mock_service.go | 3 +++ internal/hcp/api/service.go | 3 +++ internal/hcp/env/env.go | 3 +++ internal/hcp/env/env_test.go | 3 +++ internal/hcp/env/variables.go | 3 +++ internal/hcp/registry/artifact.go | 3 +++ internal/hcp/registry/errors.go | 3 +++ internal/hcp/registry/hcl.go | 3 +++ internal/hcp/registry/hcp.go | 3 +++ internal/hcp/registry/json.go | 3 +++ internal/hcp/registry/null_registry.go | 3 +++ internal/hcp/registry/registry.go | 3 +++ internal/hcp/registry/types.bucket.go | 3 +++ internal/hcp/registry/types.bucket_service_test.go | 3 +++ internal/hcp/registry/types.bucket_test.go | 3 +++ internal/hcp/registry/types.builds.go | 3 +++ internal/hcp/registry/types.iterations.go | 3 +++ internal/hcp/registry/types.iterations_test.go | 3 +++ log.go | 3 +++ main.go | 3 +++ main_test.go | 3 +++ packer/build.go | 3 +++ packer/build_test.go | 3 +++ packer/builder_test.go | 3 +++ packer/client_test.go | 3 +++ packer/cmd_builder.go | 3 +++ packer/cmd_builder_test.go | 3 +++ packer/cmd_datasource.go | 3 +++ packer/cmd_datasource_test.go | 3 +++ packer/cmd_hook.go | 3 +++ packer/cmd_hook_test.go | 3 +++ packer/cmd_post_processor.go | 3 +++ packer/cmd_post_processor_test.go | 3 +++ packer/cmd_provisioner.go | 3 +++ packer/cmd_provisioner_test.go | 3 +++ packer/core.go | 3 +++ packer/core_test.go | 3 +++ packer/maps.go | 3 +++ packer/packer_test.go | 3 +++ packer/plugin-getter/checksum.go | 3 +++ packer/plugin-getter/docs.go | 3 +++ packer/plugin-getter/github/docs.go | 3 +++ packer/plugin-getter/github/getter.go | 3 +++ packer/plugin-getter/plugins.go | 3 +++ packer/plugin-getter/plugins_test.go | 3 +++ packer/plugin.go | 3 +++ packer/plugin_client.go | 3 +++ packer/plugin_discover_test.go | 3 +++ packer/plugin_folders.go | 3 +++ packer/plugin_test.go | 3 +++ packer/post_processor_mock.go | 3 +++ packer/progressbar.go | 3 +++ packer/progressbar_solaris.go | 3 +++ packer/progressbar_test.go | 3 +++ packer/provisioner.go | 3 +++ packer/provisioner_test.go | 3 +++ packer/provisioner_timeout.go | 3 +++ packer/run_interfaces.go | 3 +++ packer/telemetry.go | 3 +++ packer/telemetry_test.go | 3 +++ packer/testing.go | 3 +++ packer/ui.go | 3 +++ packer/ui_test.go | 3 +++ panic.go | 3 +++ post-processor/artifice/artifact.go | 3 +++ post-processor/artifice/post-processor.go | 3 +++ post-processor/artifice/version/version.go | 3 +++ post-processor/checksum/artifact.go | 3 +++ post-processor/checksum/post-processor.go | 3 +++ post-processor/checksum/post-processor_test.go | 3 +++ post-processor/checksum/version/version.go | 3 +++ post-processor/compress/artifact.go | 3 +++ post-processor/compress/artifact_test.go | 3 +++ post-processor/compress/benchmark.go | 3 +++ post-processor/compress/post-processor.go | 3 +++ post-processor/compress/post-processor_test.go | 3 +++ post-processor/compress/tar_fix.go | 3 +++ post-processor/compress/tar_fix_go110.go | 3 +++ post-processor/compress/version/version.go | 3 +++ post-processor/manifest/artifact.go | 3 +++ post-processor/manifest/post-processor.go | 3 +++ post-processor/manifest/version/version.go | 3 +++ post-processor/shell-local/post-processor.go | 3 +++ post-processor/shell-local/post-processor_test.go | 3 +++ post-processor/shell-local/version/version.go | 3 +++ provisioner/breakpoint/provisioner.go | 3 +++ provisioner/breakpoint/version/version.go | 3 +++ provisioner/file/provisioner.go | 3 +++ provisioner/file/provisioner_test.go | 3 +++ provisioner/file/version/version.go | 3 +++ provisioner/powershell/execution_policy.go | 3 +++ provisioner/powershell/execution_policy_test.go | 3 +++ provisioner/powershell/provisioner.go | 3 +++ provisioner/powershell/provisioner_acc_test.go | 3 +++ provisioner/powershell/provisioner_test.go | 3 +++ provisioner/powershell/version/version.go | 3 +++ provisioner/shell-local/provisioner.go | 3 +++ provisioner/shell-local/provisioner_acc_test.go | 3 +++ provisioner/shell-local/provisioner_test.go | 3 +++ provisioner/shell-local/version/version.go | 3 +++ provisioner/shell/provisioner.go | 3 +++ provisioner/shell/provisioner_acc_test.go | 3 +++ provisioner/shell/provisioner_test.go | 3 +++ provisioner/shell/unix_reader.go | 3 +++ provisioner/shell/unix_reader_test.go | 3 +++ provisioner/shell/version/version.go | 3 +++ provisioner/sleep/provisioner.go | 3 +++ provisioner/sleep/provisioner_test.go | 3 +++ provisioner/sleep/version/version.go | 3 +++ provisioner/windows-restart/provisioner.go | 3 +++ provisioner/windows-restart/provisioner_test.go | 3 +++ provisioner/windows-restart/version/version.go | 3 +++ provisioner/windows-shell/provisioner.go | 3 +++ provisioner/windows-shell/provisioner_test.go | 3 +++ provisioner/windows-shell/version/version.go | 3 +++ scripts/build.ps1 | 3 +++ scripts/build.sh | 3 +++ scripts/codesign_example.sh | 3 +++ scripts/dist.sh | 3 +++ scripts/generate-plugins.go | 3 +++ scripts/off_gopath.sh | 3 +++ scripts/prepare_changelog.sh | 3 +++ scripts/sign.sh | 3 +++ scripts/sort-md-list.py | 3 +++ scripts/upgrade_plugins.sh | 3 +++ scripts/vagrant-freebsd-priv-config.sh | 3 +++ scripts/vagrant-freebsd-unpriv-bootstrap.sh | 3 +++ scripts/vagrant-linux-priv-config.sh | 3 +++ scripts/vagrant-linux-priv-go.sh | 3 +++ scripts/vagrant-linux-unpriv-bootstrap.sh | 3 +++ tty.go | 3 +++ tty_solaris.go | 3 +++ version/version.go | 3 +++ 356 files changed, 1068 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 7221ea28b04..eae8012b936 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,3 +1,6 @@ +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + blank_issues_enabled: false contact_links: - name: Packer Community Support diff --git a/.github/labeler-issue-triage.yml b/.github/labeler-issue-triage.yml index 9e024296b29..1737a33b92c 100644 --- a/.github/labeler-issue-triage.yml +++ b/.github/labeler-issue-triage.yml @@ -1,3 +1,6 @@ +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + bug: - 'panic:' crash: diff --git a/.golangci.yml b/.golangci.yml index 946fbc0ef64..ccd990c0040 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,3 +1,6 @@ +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + issues: # List of regexps of issue texts to exclude, empty list by default. # But independently from this option we use default exclude patterns, diff --git a/.release/ci.hcl b/.release/ci.hcl index 4bff4dc72ab..6ca7eb0de23 100644 --- a/.release/ci.hcl +++ b/.release/ci.hcl @@ -1,3 +1,6 @@ +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + schema = "1" project "packer" { diff --git a/.release/release-metadata.hcl b/.release/release-metadata.hcl index 1679cba3653..0fb2456679e 100644 --- a/.release/release-metadata.hcl +++ b/.release/release-metadata.hcl @@ -1,3 +1,6 @@ +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + url_docker_registry_dockerhub = "https://hub.docker.com/r/hashicorp/packer" url_docker_registry_ecr = "https://gallery.ecr.aws/hashicorp/packer" url_license = "https://github.com/hashicorp/packer/blob/main/LICENSE" diff --git a/.release/security-scan.hcl b/.release/security-scan.hcl index d47f9634c77..7d3258126bc 100644 --- a/.release/security-scan.hcl +++ b/.release/security-scan.hcl @@ -1,3 +1,6 @@ +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + container { dependencies = false alpine_secdb = true diff --git a/Dockerfile b/Dockerfile index 3b653930182..75acdcd3450 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,3 +1,6 @@ +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + # ======================================================================== # # This Dockerfile contains multiple targets. diff --git a/acctest/plugin/component_acc_test.go b/acctest/plugin/component_acc_test.go index e0d070ed8ba..ff77adf636f 100644 --- a/acctest/plugin/component_acc_test.go +++ b/acctest/plugin/component_acc_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + // component_acc_test.go should contain acceptance tests for plugin components // to make sure all component types can be discovered and started. package plugin diff --git a/acctest/plugin/plugin_acc_test.go b/acctest/plugin/plugin_acc_test.go index b0eb24be172..9e69afe3774 100644 --- a/acctest/plugin/plugin_acc_test.go +++ b/acctest/plugin/plugin_acc_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + // plugin_acc_test.go should contain acceptance tests for features related to // installing, discovering and running plugins. package plugin diff --git a/acctest/testing.go b/acctest/testing.go index 2a9d3bca7c2..e716ec97b39 100644 --- a/acctest/testing.go +++ b/acctest/testing.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package acctest import ( diff --git a/acctest/testing_test.go b/acctest/testing_test.go index 2ea0031b2fc..71247d4cef7 100644 --- a/acctest/testing_test.go +++ b/acctest/testing_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package acctest import ( diff --git a/background_check.go b/background_check.go index 2c4bb66c11a..c6a723526b0 100644 --- a/background_check.go +++ b/background_check.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:build !openbsd // +build !openbsd diff --git a/background_check_openbsd.go b/background_check_openbsd.go index b3186ddd71a..ff2ef4b0ef2 100644 --- a/background_check_openbsd.go +++ b/background_check_openbsd.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package main import ( diff --git a/builder/file/artifact.go b/builder/file/artifact.go index 1a7442370d0..9b9ed8ef949 100644 --- a/builder/file/artifact.go +++ b/builder/file/artifact.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package file import ( diff --git a/builder/file/artifact_test.go b/builder/file/artifact_test.go index 3d37f811646..ea799e12f5f 100644 --- a/builder/file/artifact_test.go +++ b/builder/file/artifact_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package file import ( diff --git a/builder/file/builder.go b/builder/file/builder.go index 82ddd095951..e6df9b54008 100644 --- a/builder/file/builder.go +++ b/builder/file/builder.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package file /* diff --git a/builder/file/builder_test.go b/builder/file/builder_test.go index ea8669240da..dfa87277e2b 100644 --- a/builder/file/builder_test.go +++ b/builder/file/builder_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package file import ( diff --git a/builder/file/config.go b/builder/file/config.go index b784400c1b5..017355ee6c7 100644 --- a/builder/file/config.go +++ b/builder/file/config.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:generate packer-sdc mapstructure-to-hcl2 -type Config package file diff --git a/builder/file/config_test.go b/builder/file/config_test.go index a701b9609ec..60d3553a1f9 100644 --- a/builder/file/config_test.go +++ b/builder/file/config_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package file import ( diff --git a/builder/file/version/version.go b/builder/file/version/version.go index 3b26a6e5553..3cb6b9ec19e 100644 --- a/builder/file/version/version.go +++ b/builder/file/version/version.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package version import ( diff --git a/builder/null/artifact_export.go b/builder/null/artifact_export.go index e8d5dd0a66b..ae6e46f2756 100644 --- a/builder/null/artifact_export.go +++ b/builder/null/artifact_export.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package null import ( diff --git a/builder/null/artifact_export_test.go b/builder/null/artifact_export_test.go index 77eeeced80d..ffa668865ec 100644 --- a/builder/null/artifact_export_test.go +++ b/builder/null/artifact_export_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package null import ( diff --git a/builder/null/builder.go b/builder/null/builder.go index 5e2a7d369dc..9b660bd24f9 100644 --- a/builder/null/builder.go +++ b/builder/null/builder.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package null import ( diff --git a/builder/null/builder_test.go b/builder/null/builder_test.go index f710f1dfd6f..b50d1484ff9 100644 --- a/builder/null/builder_test.go +++ b/builder/null/builder_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package null import ( diff --git a/builder/null/config.go b/builder/null/config.go index 39bec200a9e..b240d57d98d 100644 --- a/builder/null/config.go +++ b/builder/null/config.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:generate packer-sdc mapstructure-to-hcl2 -type Config package null diff --git a/builder/null/config_test.go b/builder/null/config_test.go index 47e023312b8..1123d470e09 100644 --- a/builder/null/config_test.go +++ b/builder/null/config_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package null import ( diff --git a/builder/null/ssh.go b/builder/null/ssh.go index 730ebe5fbbf..f79bdd1eed4 100644 --- a/builder/null/ssh.go +++ b/builder/null/ssh.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package null import ( diff --git a/builder/null/version/version.go b/builder/null/version/version.go index 5e2659824a4..f3b8cb444e1 100644 --- a/builder/null/version/version.go +++ b/builder/null/version/version.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package version import ( diff --git a/checkpoint.go b/checkpoint.go index e1b519e910c..5ca534ea8d4 100644 --- a/checkpoint.go +++ b/checkpoint.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package main import ( diff --git a/cmd/generate-fixer-deprecations/main.go b/cmd/generate-fixer-deprecations/main.go index 034ca12e974..a3e76547428 100644 --- a/cmd/generate-fixer-deprecations/main.go +++ b/cmd/generate-fixer-deprecations/main.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package main import ( diff --git a/cmd/ssh-keygen/main.go b/cmd/ssh-keygen/main.go index 1eca73d47fd..a15797ea811 100644 --- a/cmd/ssh-keygen/main.go +++ b/cmd/ssh-keygen/main.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package main import ( diff --git a/command/build.go b/command/build.go index efa370f46e5..b707fe22d6f 100644 --- a/command/build.go +++ b/command/build.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/build_cancellation_test.go b/command/build_cancellation_test.go index a81c057dbfa..809fd53bf4d 100644 --- a/command/build_cancellation_test.go +++ b/command/build_cancellation_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/build_cleanup_script_test.go b/command/build_cleanup_script_test.go index 87e28d451ca..82f7fdd94e4 100644 --- a/command/build_cleanup_script_test.go +++ b/command/build_cleanup_script_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/build_parallel_test.go b/command/build_parallel_test.go index 960b5608ec2..959134fd539 100644 --- a/command/build_parallel_test.go +++ b/command/build_parallel_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/build_test.go b/command/build_test.go index 21a032d6eb3..8dac9b8e0aa 100644 --- a/command/build_test.go +++ b/command/build_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/build_timeout_test.go b/command/build_timeout_test.go index ca774a56639..9896894ec2b 100644 --- a/command/build_timeout_test.go +++ b/command/build_timeout_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/build_windows_test.go b/command/build_windows_test.go index 9978bfea06c..5c99cd95786 100644 --- a/command/build_windows_test.go +++ b/command/build_windows_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import "strings" diff --git a/command/cli.go b/command/cli.go index e1eb1ffbceb..de47a735c22 100644 --- a/command/cli.go +++ b/command/cli.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/command_test.go b/command/command_test.go index a4505c61116..4666a4109b8 100644 --- a/command/command_test.go +++ b/command/command_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/config_file_unix.go b/command/config_file_unix.go index fa62867cccd..31a8db0ee44 100644 --- a/command/config_file_unix.go +++ b/command/config_file_unix.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:build darwin || freebsd || linux || netbsd || openbsd || solaris // +build darwin freebsd linux netbsd openbsd solaris diff --git a/command/config_file_windows.go b/command/config_file_windows.go index 667f955acc6..52cdf420c7c 100644 --- a/command/config_file_windows.go +++ b/command/config_file_windows.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:build windows // +build windows diff --git a/command/console.go b/command/console.go index b6f82c59b2b..431cc147755 100644 --- a/command/console.go +++ b/command/console.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/console_test.go b/command/console_test.go index bfc5fd65cae..b8c4989ff99 100644 --- a/command/console_test.go +++ b/command/console_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/enumflag/flag.go b/command/enumflag/flag.go index ab6dce29b90..cbb58769190 100644 --- a/command/enumflag/flag.go +++ b/command/enumflag/flag.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package enumflag import "fmt" diff --git a/command/exec_test.go b/command/exec_test.go index 7a13201f3fa..cfdbda66c3a 100644 --- a/command/exec_test.go +++ b/command/exec_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/fix.go b/command/fix.go index db5f62fc409..893c788ef8d 100644 --- a/command/fix.go +++ b/command/fix.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/fix_test.go b/command/fix_test.go index d4ae5ca07b4..d092a8091c4 100644 --- a/command/fix_test.go +++ b/command/fix_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/flag-kv/flag.go b/command/flag-kv/flag.go index 0bf4b0086e1..96cda3120ce 100644 --- a/command/flag-kv/flag.go +++ b/command/flag-kv/flag.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package kvflag import ( diff --git a/command/flag-kv/flag_json.go b/command/flag-kv/flag_json.go index 9af9fe1da7d..25d34ef5de5 100644 --- a/command/flag-kv/flag_json.go +++ b/command/flag-kv/flag_json.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package kvflag import ( diff --git a/command/flag-kv/flag_json_test.go b/command/flag-kv/flag_json_test.go index df5a99e641a..ab8a67e0ba3 100644 --- a/command/flag-kv/flag_json_test.go +++ b/command/flag-kv/flag_json_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package kvflag import ( diff --git a/command/flag-kv/flag_strings.go b/command/flag-kv/flag_strings.go index 2d63af9fa25..d639bde6abb 100644 --- a/command/flag-kv/flag_strings.go +++ b/command/flag-kv/flag_strings.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package kvflag import ( diff --git a/command/flag-kv/flag_strings_test.go b/command/flag-kv/flag_strings_test.go index 48de4bb1880..070e95c0d48 100644 --- a/command/flag-kv/flag_strings_test.go +++ b/command/flag-kv/flag_strings_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package kvflag import ( diff --git a/command/flag-kv/flag_test.go b/command/flag-kv/flag_test.go index 9f81d519262..28644119578 100644 --- a/command/flag-kv/flag_test.go +++ b/command/flag-kv/flag_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package kvflag import ( diff --git a/command/flag-slice/flag.go b/command/flag-slice/flag.go index 587b674fab1..b75580ec227 100644 --- a/command/flag-slice/flag.go +++ b/command/flag-slice/flag.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package sliceflag import "strings" diff --git a/command/flag-slice/flag_test.go b/command/flag-slice/flag_test.go index 61d8682b202..d70b270b53b 100644 --- a/command/flag-slice/flag_test.go +++ b/command/flag-slice/flag_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package sliceflag import ( diff --git a/command/fmt.go b/command/fmt.go index 2cab9bec094..9cfaa46b8d4 100644 --- a/command/fmt.go +++ b/command/fmt.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/fmt_test.go b/command/fmt_test.go index 0a9c0a6e75a..b642cdef5ad 100644 --- a/command/fmt_test.go +++ b/command/fmt_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/hcl2_upgrade.go b/command/hcl2_upgrade.go index 3df4fb45296..adba96d7f87 100644 --- a/command/hcl2_upgrade.go +++ b/command/hcl2_upgrade.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/hcl2_upgrade_test.go b/command/hcl2_upgrade_test.go index d7899fe6e9a..d2f92b6b690 100644 --- a/command/hcl2_upgrade_test.go +++ b/command/hcl2_upgrade_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/init.go b/command/init.go index e4a218d8601..761627134d6 100644 --- a/command/init.go +++ b/command/init.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/init_test.go b/command/init_test.go index 8697075757f..7f35d3f4cc5 100644 --- a/command/init_test.go +++ b/command/init_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/inspect.go b/command/inspect.go index a930c6ee678..827d61f70b1 100644 --- a/command/inspect.go +++ b/command/inspect.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/inspect_test.go b/command/inspect_test.go index 4bb594d07f2..0d87ee71a71 100644 --- a/command/inspect_test.go +++ b/command/inspect_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/meta.go b/command/meta.go index 3f166595604..1232aafcabb 100644 --- a/command/meta.go +++ b/command/meta.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/plugins.go b/command/plugins.go index 7ec25538115..0b415d8f5c0 100644 --- a/command/plugins.go +++ b/command/plugins.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/plugins_install.go b/command/plugins_install.go index a744b7d9ece..d40bb46bd80 100644 --- a/command/plugins_install.go +++ b/command/plugins_install.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/plugins_install_test.go b/command/plugins_install_test.go index 24239218076..577d8b3f776 100644 --- a/command/plugins_install_test.go +++ b/command/plugins_install_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/plugins_installed.go b/command/plugins_installed.go index 96ddc65d89c..58b4381a985 100644 --- a/command/plugins_installed.go +++ b/command/plugins_installed.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/plugins_remove.go b/command/plugins_remove.go index a0258ee522f..32d77749c08 100644 --- a/command/plugins_remove.go +++ b/command/plugins_remove.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/plugins_remove_test.go b/command/plugins_remove_test.go index 6c5872b52a9..41104db7146 100644 --- a/command/plugins_remove_test.go +++ b/command/plugins_remove_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/plugins_required.go b/command/plugins_required.go index f3573f1ed07..d484322291c 100644 --- a/command/plugins_required.go +++ b/command/plugins_required.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/signal.go b/command/signal.go index f8eb2b18d73..5980192baf4 100644 --- a/command/signal.go +++ b/command/signal.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/test_utils.go b/command/test_utils.go index 9ad5f6111a2..41e02dbcb7b 100644 --- a/command/test_utils.go +++ b/command/test_utils.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/utils.go b/command/utils.go index 1123a2f0a6a..9fee02d419c 100644 --- a/command/utils.go +++ b/command/utils.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/utils_test.go b/command/utils_test.go index dfb0a036b42..426ea653eea 100644 --- a/command/utils_test.go +++ b/command/utils_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/validate.go b/command/validate.go index 08eced959d1..1bc4cc1d7eb 100644 --- a/command/validate.go +++ b/command/validate.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/validate_test.go b/command/validate_test.go index d4188c49780..5b51f378158 100644 --- a/command/validate_test.go +++ b/command/validate_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/vendored_plugins.go b/command/vendored_plugins.go index 5ddf9edc1f1..4295c8261a6 100644 --- a/command/vendored_plugins.go +++ b/command/vendored_plugins.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/version.go b/command/version.go index b5f3ad523a6..3a6db86d712 100644 --- a/command/version.go +++ b/command/version.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/command/version_test.go b/command/version_test.go index 2a645690faf..cd2b67e5c6d 100644 --- a/command/version_test.go +++ b/command/version_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package command import ( diff --git a/commands.go b/commands.go index 631b943c2cc..01e3bf56e73 100644 --- a/commands.go +++ b/commands.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package main import ( diff --git a/config.go b/config.go index e352de0fb89..6b59b98fe63 100644 --- a/config.go +++ b/config.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package main import ( diff --git a/config_test.go b/config_test.go index 9224b259c16..b744a274b89 100644 --- a/config_test.go +++ b/config_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package main import ( diff --git a/datasource/hcp-packer-image/data.go b/datasource/hcp-packer-image/data.go index 4e109afe42d..3e473e145e4 100644 --- a/datasource/hcp-packer-image/data.go +++ b/datasource/hcp-packer-image/data.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:generate packer-sdc struct-markdown //go:generate packer-sdc mapstructure-to-hcl2 -type DatasourceOutput,Config package hcp_packer_image diff --git a/datasource/hcp-packer-iteration/data.go b/datasource/hcp-packer-iteration/data.go index 4ed7fd39c63..7a7be3e4979 100644 --- a/datasource/hcp-packer-iteration/data.go +++ b/datasource/hcp-packer-iteration/data.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:generate packer-sdc struct-markdown //go:generate packer-sdc mapstructure-to-hcl2 -type DatasourceOutput,Config package hcp_packer_iteration diff --git a/datasource/hcp-packer-iteration/data_acc_test.go b/datasource/hcp-packer-iteration/data_acc_test.go index dab9bd38f08..bf91e870d7e 100644 --- a/datasource/hcp-packer-iteration/data_acc_test.go +++ b/datasource/hcp-packer-iteration/data_acc_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcp_packer_iteration import ( diff --git a/datasource/http/data.go b/datasource/http/data.go index e94e153ad93..ec7a1b3e55c 100644 --- a/datasource/http/data.go +++ b/datasource/http/data.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:generate packer-sdc struct-markdown //go:generate packer-sdc mapstructure-to-hcl2 -type DatasourceOutput,Config package http diff --git a/datasource/http/data_acc_test.go b/datasource/http/data_acc_test.go index b6b1f83ac27..ffad0219048 100644 --- a/datasource/http/data_acc_test.go +++ b/datasource/http/data_acc_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package http import ( diff --git a/datasource/null/data.go b/datasource/null/data.go index 3756c6a3e2a..308e06217d7 100644 --- a/datasource/null/data.go +++ b/datasource/null/data.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:generate packer-sdc struct-markdown //go:generate packer-sdc mapstructure-to-hcl2 -type DatasourceOutput,Config package null diff --git a/fix/fixer.go b/fix/fixer.go index 7634a287ca4..3de4bc1f814 100644 --- a/fix/fixer.go +++ b/fix/fixer.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix // A Fixer is something that can perform a fix operation on a template. diff --git a/fix/fixer_amazon_enhanced_networking.go b/fix/fixer_amazon_enhanced_networking.go index dd713317153..708d2f5bc30 100644 --- a/fix/fixer_amazon_enhanced_networking.go +++ b/fix/fixer_amazon_enhanced_networking.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_amazon_enhanced_networking_test.go b/fix/fixer_amazon_enhanced_networking_test.go index 78b58d58271..4abdcc5f4d1 100644 --- a/fix/fixer_amazon_enhanced_networking_test.go +++ b/fix/fixer_amazon_enhanced_networking_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_amazon_private_ip.go b/fix/fixer_amazon_private_ip.go index 7a6c483ff21..ee18770b40a 100644 --- a/fix/fixer_amazon_private_ip.go +++ b/fix/fixer_amazon_private_ip.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_amazon_private_ip_test.go b/fix/fixer_amazon_private_ip_test.go index 55b2104a67a..554e2e7ee3b 100644 --- a/fix/fixer_amazon_private_ip_test.go +++ b/fix/fixer_amazon_private_ip_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_amazon_shutdown_behavior.go b/fix/fixer_amazon_shutdown_behavior.go index b73c67e1f4b..c7e2db0d315 100644 --- a/fix/fixer_amazon_shutdown_behavior.go +++ b/fix/fixer_amazon_shutdown_behavior.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_amazon_shutdown_behavior_test.go b/fix/fixer_amazon_shutdown_behavior_test.go index 50718372fa2..87058ea9054 100644 --- a/fix/fixer_amazon_shutdown_behavior_test.go +++ b/fix/fixer_amazon_shutdown_behavior_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_amazon_spot_price_product.go b/fix/fixer_amazon_spot_price_product.go index ad0f6481548..b701e1d9f59 100644 --- a/fix/fixer_amazon_spot_price_product.go +++ b/fix/fixer_amazon_spot_price_product.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_amazon_temporary_security_group_cidrs.go b/fix/fixer_amazon_temporary_security_group_cidrs.go index eccfe855ef3..ffd75eb364d 100644 --- a/fix/fixer_amazon_temporary_security_group_cidrs.go +++ b/fix/fixer_amazon_temporary_security_group_cidrs.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_amazon_temporary_security_group_cidrs_test.go b/fix/fixer_amazon_temporary_security_group_cidrs_test.go index 1a17e3f1837..2ed9f4bb261 100644 --- a/fix/fixer_amazon_temporary_security_group_cidrs_test.go +++ b/fix/fixer_amazon_temporary_security_group_cidrs_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_azure_exclude_from_latest.go b/fix/fixer_azure_exclude_from_latest.go index dad0ed690a7..210b59f46ac 100644 --- a/fix/fixer_azure_exclude_from_latest.go +++ b/fix/fixer_azure_exclude_from_latest.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_azure_exclude_from_latest_test.go b/fix/fixer_azure_exclude_from_latest_test.go index 27e10d57ff8..a3cd70d538d 100644 --- a/fix/fixer_azure_exclude_from_latest_test.go +++ b/fix/fixer_azure_exclude_from_latest_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_clean_image_name.go b/fix/fixer_clean_image_name.go index 5ba1a3a3c64..423d2e34035 100644 --- a/fix/fixer_clean_image_name.go +++ b/fix/fixer_clean_image_name.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_clean_image_name_test.go b/fix/fixer_clean_image_name_test.go index 21799ba5f17..385e6f113df 100644 --- a/fix/fixer_clean_image_name_test.go +++ b/fix/fixer_clean_image_name_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_comm_config.go b/fix/fixer_comm_config.go index 09781a04a88..6f2c49af8e7 100644 --- a/fix/fixer_comm_config.go +++ b/fix/fixer_comm_config.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_comm_config_test.go b/fix/fixer_comm_config_test.go index 1d2b7b9f6e5..52beb052de1 100644 --- a/fix/fixer_comm_config_test.go +++ b/fix/fixer_comm_config_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_createtime.go b/fix/fixer_createtime.go index eda513ffc19..0412c4d9afb 100644 --- a/fix/fixer_createtime.go +++ b/fix/fixer_createtime.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_createtime_test.go b/fix/fixer_createtime_test.go index ae91c6c2242..a7350966812 100644 --- a/fix/fixer_createtime_test.go +++ b/fix/fixer_createtime_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_docker_email.go b/fix/fixer_docker_email.go index 17a1a130020..3a5883f2b9b 100644 --- a/fix/fixer_docker_email.go +++ b/fix/fixer_docker_email.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import "github.com/mitchellh/mapstructure" diff --git a/fix/fixer_galaxy_command.go b/fix/fixer_galaxy_command.go index c819dc69ed0..f5988d9bc27 100644 --- a/fix/fixer_galaxy_command.go +++ b/fix/fixer_galaxy_command.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_galaxy_command_test.go b/fix/fixer_galaxy_command_test.go index c052a10c93e..ee067b174fa 100644 --- a/fix/fixer_galaxy_command_test.go +++ b/fix/fixer_galaxy_command_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_hyperv_cpu_and_ram_naming.go b/fix/fixer_hyperv_cpu_and_ram_naming.go index c4516c020ce..4983b5cb4fc 100644 --- a/fix/fixer_hyperv_cpu_and_ram_naming.go +++ b/fix/fixer_hyperv_cpu_and_ram_naming.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_hyperv_deprecations.go b/fix/fixer_hyperv_deprecations.go index 3b9582ff5cd..12714d9d71b 100644 --- a/fix/fixer_hyperv_deprecations.go +++ b/fix/fixer_hyperv_deprecations.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_hyperv_deprecations_test.go b/fix/fixer_hyperv_deprecations_test.go index 8c90bff9b34..00154e2b9a4 100644 --- a/fix/fixer_hyperv_deprecations_test.go +++ b/fix/fixer_hyperv_deprecations_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_hyperv_vmxc_typo.go b/fix/fixer_hyperv_vmxc_typo.go index 2063fae4004..f9c5d63d969 100644 --- a/fix/fixer_hyperv_vmxc_typo.go +++ b/fix/fixer_hyperv_vmxc_typo.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_hyperv_vmxc_typo_test.go b/fix/fixer_hyperv_vmxc_typo_test.go index dbbea7072f0..1f7ac625a0b 100644 --- a/fix/fixer_hyperv_vmxc_typo_test.go +++ b/fix/fixer_hyperv_vmxc_typo_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_iso_checksum_type_and_url.go b/fix/fixer_iso_checksum_type_and_url.go index 07aaf662118..fc50055ac7e 100644 --- a/fix/fixer_iso_checksum_type_and_url.go +++ b/fix/fixer_iso_checksum_type_and_url.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_iso_checksum_type_and_url_test.go b/fix/fixer_iso_checksum_type_and_url_test.go index 11be8fec6d1..f3492dc50cb 100644 --- a/fix/fixer_iso_checksum_type_and_url_test.go +++ b/fix/fixer_iso_checksum_type_and_url_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_iso_md5.go b/fix/fixer_iso_md5.go index 6aa69a7c7e4..074a0b2bab3 100644 --- a/fix/fixer_iso_md5.go +++ b/fix/fixer_iso_md5.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_iso_md5_test.go b/fix/fixer_iso_md5_test.go index 0c0e989b5ca..fc396507977 100644 --- a/fix/fixer_iso_md5_test.go +++ b/fix/fixer_iso_md5_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_parallels_deprecations.go b/fix/fixer_parallels_deprecations.go index cf8dd001b0c..36ad9a708eb 100644 --- a/fix/fixer_parallels_deprecations.go +++ b/fix/fixer_parallels_deprecations.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_parallels_deprecations_test.go b/fix/fixer_parallels_deprecations_test.go index 22f78c1222f..a5fd425385d 100644 --- a/fix/fixer_parallels_deprecations_test.go +++ b/fix/fixer_parallels_deprecations_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_parallels_headless.go b/fix/fixer_parallels_headless.go index d1e0d2fc6a3..164deff3ea0 100644 --- a/fix/fixer_parallels_headless.go +++ b/fix/fixer_parallels_headless.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_parallels_headless_test.go b/fix/fixer_parallels_headless_test.go index c6c92e98181..bc3efbcc0e7 100644 --- a/fix/fixer_parallels_headless_test.go +++ b/fix/fixer_parallels_headless_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_powershell_escapes.go b/fix/fixer_powershell_escapes.go index 4fa06ff6dcd..d33d046d628 100644 --- a/fix/fixer_powershell_escapes.go +++ b/fix/fixer_powershell_escapes.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_pp_docker_tag_tags.go b/fix/fixer_pp_docker_tag_tags.go index 1673ec7b742..49e33ebee91 100644 --- a/fix/fixer_pp_docker_tag_tags.go +++ b/fix/fixer_pp_docker_tag_tags.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_pp_docker_tag_tags_test.go b/fix/fixer_pp_docker_tag_tags_test.go index 150db3dfa79..908c0768efb 100644 --- a/fix/fixer_pp_docker_tag_tags_test.go +++ b/fix/fixer_pp_docker_tag_tags_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_pp_manifest_filename.go b/fix/fixer_pp_manifest_filename.go index d6ad6a9a458..9f66bc7ad2e 100644 --- a/fix/fixer_pp_manifest_filename.go +++ b/fix/fixer_pp_manifest_filename.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_pp_manifest_filename_test.go b/fix/fixer_pp_manifest_filename_test.go index ac7d14d6a35..ab86324e906 100644 --- a/fix/fixer_pp_manifest_filename_test.go +++ b/fix/fixer_pp_manifest_filename_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_pp_vagrant_override.go b/fix/fixer_pp_vagrant_override.go index fec17f4baf8..eee262212c8 100644 --- a/fix/fixer_pp_vagrant_override.go +++ b/fix/fixer_pp_vagrant_override.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import "github.com/mitchellh/mapstructure" diff --git a/fix/fixer_pp_vagrant_override_test.go b/fix/fixer_pp_vagrant_override_test.go index f58099565fc..1ba56eb6821 100644 --- a/fix/fixer_pp_vagrant_override_test.go +++ b/fix/fixer_pp_vagrant_override_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_proxmox_type.go b/fix/fixer_proxmox_type.go index 93db4a5e86a..602e82a9435 100644 --- a/fix/fixer_proxmox_type.go +++ b/fix/fixer_proxmox_type.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_proxmox_type_test.go b/fix/fixer_proxmox_type_test.go index c66ab25bb69..e0ea378d572 100644 --- a/fix/fixer_proxmox_type_test.go +++ b/fix/fixer_proxmox_type_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_qemu_disk_size.go b/fix/fixer_qemu_disk_size.go index ef6b8459fe1..7cd53800393 100644 --- a/fix/fixer_qemu_disk_size.go +++ b/fix/fixer_qemu_disk_size.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_qemu_disk_size_test.go b/fix/fixer_qemu_disk_size_test.go index 6381dc68dc9..3d141a5195c 100644 --- a/fix/fixer_qemu_disk_size_test.go +++ b/fix/fixer_qemu_disk_size_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_qemu_host_port.go b/fix/fixer_qemu_host_port.go index a1cb5645309..4cd96b53ac1 100644 --- a/fix/fixer_qemu_host_port.go +++ b/fix/fixer_qemu_host_port.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_qemu_host_port_test.go b/fix/fixer_qemu_host_port_test.go index e2ec753c580..64aaeddcbb7 100644 --- a/fix/fixer_qemu_host_port_test.go +++ b/fix/fixer_qemu_host_port_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_scaleway_access_key.go b/fix/fixer_scaleway_access_key.go index cad7ec65b93..c7e45484fab 100644 --- a/fix/fixer_scaleway_access_key.go +++ b/fix/fixer_scaleway_access_key.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_scaleway_access_key_test.go b/fix/fixer_scaleway_access_key_test.go index 61ff7eed8e6..365bb467533 100644 --- a/fix/fixer_scaleway_access_key_test.go +++ b/fix/fixer_scaleway_access_key_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_ssh_timeout.go b/fix/fixer_ssh_timeout.go index bb5f4a4e2b0..fc675199912 100644 --- a/fix/fixer_ssh_timeout.go +++ b/fix/fixer_ssh_timeout.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_ssh_timeout_test.go b/fix/fixer_ssh_timeout_test.go index 3c69839d898..558a94d9e23 100644 --- a/fix/fixer_ssh_timeout_test.go +++ b/fix/fixer_ssh_timeout_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_sshdisableagent.go b/fix/fixer_sshdisableagent.go index 833bca027d6..1ed262f225c 100644 --- a/fix/fixer_sshdisableagent.go +++ b/fix/fixer_sshdisableagent.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_sshdisableagent_test.go b/fix/fixer_sshdisableagent_test.go index c38f9c58136..9fc67bd763e 100644 --- a/fix/fixer_sshdisableagent_test.go +++ b/fix/fixer_sshdisableagent_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_sshkeypath.go b/fix/fixer_sshkeypath.go index 9b376261ddd..48bc8eee198 100644 --- a/fix/fixer_sshkeypath.go +++ b/fix/fixer_sshkeypath.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_sshkeypath_test.go b/fix/fixer_sshkeypath_test.go index 865f8c1deed..c95917902a1 100644 --- a/fix/fixer_sshkeypath_test.go +++ b/fix/fixer_sshkeypath_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_test.go b/fix/fixer_test.go index e6a01fcf58d..091084ac794 100644 --- a/fix/fixer_test.go +++ b/fix/fixer_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_virtualbox_gaattach.go b/fix/fixer_virtualbox_gaattach.go index 8e2a85e85a8..23e8c7fdff2 100644 --- a/fix/fixer_virtualbox_gaattach.go +++ b/fix/fixer_virtualbox_gaattach.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_virtualbox_gaattach_test.go b/fix/fixer_virtualbox_gaattach_test.go index b88e9325f89..83fa00b59e7 100644 --- a/fix/fixer_virtualbox_gaattach_test.go +++ b/fix/fixer_virtualbox_gaattach_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_virtualbox_rename.go b/fix/fixer_virtualbox_rename.go index 2f118e3fbf5..a3723f2ed27 100644 --- a/fix/fixer_virtualbox_rename.go +++ b/fix/fixer_virtualbox_rename.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_virtualbox_rename_test.go b/fix/fixer_virtualbox_rename_test.go index 355e5276a95..fc570f3095b 100644 --- a/fix/fixer_virtualbox_rename_test.go +++ b/fix/fixer_virtualbox_rename_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_vmware_compaction.go b/fix/fixer_vmware_compaction.go index dfb1d13547c..906ff4d197d 100644 --- a/fix/fixer_vmware_compaction.go +++ b/fix/fixer_vmware_compaction.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_vmware_compaction_test.go b/fix/fixer_vmware_compaction_test.go index 25a87e170d3..bd107705544 100644 --- a/fix/fixer_vmware_compaction_test.go +++ b/fix/fixer_vmware_compaction_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_vmware_rename.go b/fix/fixer_vmware_rename.go index 726e8030ca1..5e7db8a6ed8 100644 --- a/fix/fixer_vmware_rename.go +++ b/fix/fixer_vmware_rename.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_vmware_rename_test.go b/fix/fixer_vmware_rename_test.go index 059b73ad15a..6d8710cfb74 100644 --- a/fix/fixer_vmware_rename_test.go +++ b/fix/fixer_vmware_rename_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_vsphere_network_storage.go b/fix/fixer_vsphere_network_storage.go index 5c04ab1a37d..87723a9e9fc 100644 --- a/fix/fixer_vsphere_network_storage.go +++ b/fix/fixer_vsphere_network_storage.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/fixer_vsphere_network_storage_test.go b/fix/fixer_vsphere_network_storage_test.go index fdc764ad332..54ebb8015e1 100644 --- a/fix/fixer_vsphere_network_storage_test.go +++ b/fix/fixer_vsphere_network_storage_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix import ( diff --git a/fix/helpers.go b/fix/helpers.go index 6866c12ea61..f3812674e3c 100644 --- a/fix/helpers.go +++ b/fix/helpers.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package fix // PP is a convenient way to interact with the post-processors within a fixer diff --git a/hcl2template/addrs/doc.go b/hcl2template/addrs/doc.go index 13c300030cc..9768f453d12 100644 --- a/hcl2template/addrs/doc.go +++ b/hcl2template/addrs/doc.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + // Package addrs contains types that represent "addresses", which are // references to specific objects within a Packer configuration. // diff --git a/hcl2template/addrs/input_variable.go b/hcl2template/addrs/input_variable.go index ad4370bb860..e2821e7e5b1 100644 --- a/hcl2template/addrs/input_variable.go +++ b/hcl2template/addrs/input_variable.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package addrs // InputVariable is the address of an input variable. diff --git a/hcl2template/addrs/parse_ref.go b/hcl2template/addrs/parse_ref.go index ee3f238ef0b..866ced8f459 100644 --- a/hcl2template/addrs/parse_ref.go +++ b/hcl2template/addrs/parse_ref.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package addrs import ( diff --git a/hcl2template/addrs/plugin.go b/hcl2template/addrs/plugin.go index 8fae626209f..8c4c3485d6a 100644 --- a/hcl2template/addrs/plugin.go +++ b/hcl2template/addrs/plugin.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package addrs import ( diff --git a/hcl2template/addrs/plugin_test.go b/hcl2template/addrs/plugin_test.go index 191f103fad4..491d2221a1c 100644 --- a/hcl2template/addrs/plugin_test.go +++ b/hcl2template/addrs/plugin_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package addrs import ( diff --git a/hcl2template/addrs/referenceable.go b/hcl2template/addrs/referenceable.go index 8caec1241ca..9b54c5bac49 100644 --- a/hcl2template/addrs/referenceable.go +++ b/hcl2template/addrs/referenceable.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package addrs // Referenceable is an interface implemented by all address types that can diff --git a/hcl2template/common_test.go b/hcl2template/common_test.go index 5b1c68fbdc0..62f937da94f 100644 --- a/hcl2template/common_test.go +++ b/hcl2template/common_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/components.go b/hcl2template/components.go index b2063cd3885..956a753f38b 100644 --- a/hcl2template/components.go +++ b/hcl2template/components.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template // ComponentKind helps enumerate what kind of components exist in this Package. diff --git a/hcl2template/decode.go b/hcl2template/decode.go index fe3de6ac9fc..137e54eec05 100644 --- a/hcl2template/decode.go +++ b/hcl2template/decode.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/docs.go b/hcl2template/docs.go index cce348abdf1..d1ad307ccbd 100644 --- a/hcl2template/docs.go +++ b/hcl2template/docs.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + // Package hcl2template defines code to parse hcl2 template files. // // In order to configure a packer builder,provisioner, and post processor. diff --git a/hcl2template/formatter.go b/hcl2template/formatter.go index 700e0c40bfd..7e1cab56aa3 100644 --- a/hcl2template/formatter.go +++ b/hcl2template/formatter.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/formatter_test.go b/hcl2template/formatter_test.go index 13930888284..42051c0a8d3 100644 --- a/hcl2template/formatter_test.go +++ b/hcl2template/formatter_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/function/Consul.go b/hcl2template/function/Consul.go index ae22404d846..4f51ca41d15 100644 --- a/hcl2template/function/Consul.go +++ b/hcl2template/function/Consul.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package function import ( diff --git a/hcl2template/function/aws_secretetkey.go b/hcl2template/function/aws_secretetkey.go index e5bec51b2fe..50b4fe9ee53 100644 --- a/hcl2template/function/aws_secretetkey.go +++ b/hcl2template/function/aws_secretetkey.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package function import ( diff --git a/hcl2template/function/datetime.go b/hcl2template/function/datetime.go index 8f9804ad08f..1d807e407d3 100644 --- a/hcl2template/function/datetime.go +++ b/hcl2template/function/datetime.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package function import ( diff --git a/hcl2template/function/datetime_test.go b/hcl2template/function/datetime_test.go index fca279e8400..686564803cc 100644 --- a/hcl2template/function/datetime_test.go +++ b/hcl2template/function/datetime_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package function import ( diff --git a/hcl2template/function/env.go b/hcl2template/function/env.go index 98eac11ccc8..aeb632aba75 100644 --- a/hcl2template/function/env.go +++ b/hcl2template/function/env.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package function import ( diff --git a/hcl2template/function/index.go b/hcl2template/function/index.go index 0cb55a747c1..3c5f73ccda9 100644 --- a/hcl2template/function/index.go +++ b/hcl2template/function/index.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package function import ( diff --git a/hcl2template/function/index_test.go b/hcl2template/function/index_test.go index 5695cde7dd0..d70511ad516 100644 --- a/hcl2template/function/index_test.go +++ b/hcl2template/function/index_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package function import ( diff --git a/hcl2template/function/length.go b/hcl2template/function/length.go index c1a1e886289..90ab7997ec9 100644 --- a/hcl2template/function/length.go +++ b/hcl2template/function/length.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package function import ( diff --git a/hcl2template/function/length_test.go b/hcl2template/function/length_test.go index 5b217a00ada..2c6f10c49d6 100644 --- a/hcl2template/function/length_test.go +++ b/hcl2template/function/length_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package function import ( diff --git a/hcl2template/function/templatefile.go b/hcl2template/function/templatefile.go index d7edf23b20f..eee0092197c 100644 --- a/hcl2template/function/templatefile.go +++ b/hcl2template/function/templatefile.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package function import ( diff --git a/hcl2template/function/templatefile_test.go b/hcl2template/function/templatefile_test.go index 658d2f368fb..a4536b59ca5 100644 --- a/hcl2template/function/templatefile_test.go +++ b/hcl2template/function/templatefile_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package function import ( diff --git a/hcl2template/function/vault.go b/hcl2template/function/vault.go index a62fa33cccc..4aa49da6753 100644 --- a/hcl2template/function/vault.go +++ b/hcl2template/function/vault.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package function import ( diff --git a/hcl2template/functions.go b/hcl2template/functions.go index 33da10257a0..5876acb0d4e 100644 --- a/hcl2template/functions.go +++ b/hcl2template/functions.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/internal/mock.go b/hcl2template/internal/mock.go index 2939b3b9464..86d5b0e0e06 100644 --- a/hcl2template/internal/mock.go +++ b/hcl2template/internal/mock.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:generate packer-sdc mapstructure-to-hcl2 -type MockConfig,NestedMockConfig,MockTag package hcl2template diff --git a/hcl2template/parser.go b/hcl2template/parser.go index d2c5a85ecd2..2246131fa88 100644 --- a/hcl2template/parser.go +++ b/hcl2template/parser.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/plugin.go b/hcl2template/plugin.go index fb807dadbff..bd1080b836b 100644 --- a/hcl2template/plugin.go +++ b/hcl2template/plugin.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/repl/format.go b/hcl2template/repl/format.go index e302b093e7a..8e596e4be9d 100644 --- a/hcl2template/repl/format.go +++ b/hcl2template/repl/format.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package repl import ( diff --git a/hcl2template/repl/repl.go b/hcl2template/repl/repl.go index d6aed8b4673..7a698f87f5b 100644 --- a/hcl2template/repl/repl.go +++ b/hcl2template/repl/repl.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + // Package repl provides the structs and functions necessary to run REPL for // HCL2. The REPL allows experimentation of HCL2 interpolations without having // to run a HCL2 configuration. diff --git a/hcl2template/shim/mock.go b/hcl2template/shim/mock.go index 5ed9ce6b59b..adeda84dd39 100644 --- a/hcl2template/shim/mock.go +++ b/hcl2template/shim/mock.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:generate packer-sdc mapstructure-to-hcl2 -type MockConfig,NestedMockConfig,MockTag package hcl2shim diff --git a/hcl2template/shim/values.go b/hcl2template/shim/values.go index 600aaedcb17..88580f1f2c1 100644 --- a/hcl2template/shim/values.go +++ b/hcl2template/shim/values.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2shim import ( diff --git a/hcl2template/shim/values_test.go b/hcl2template/shim/values_test.go index 45d4d6c4f2f..46e154002cd 100644 --- a/hcl2template/shim/values_test.go +++ b/hcl2template/shim/values_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2shim import ( diff --git a/hcl2template/types.build.from.go b/hcl2template/types.build.from.go index b84b6ffc6e9..9661fa167b0 100644 --- a/hcl2template/types.build.from.go +++ b/hcl2template/types.build.from.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/types.build.go b/hcl2template/types.build.go index 73ae957d3ae..2ab6aa718fe 100644 --- a/hcl2template/types.build.go +++ b/hcl2template/types.build.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/types.build.hcp_packer_registry.go b/hcl2template/types.build.hcp_packer_registry.go index e2c76f34277..6d1b99f2ec9 100644 --- a/hcl2template/types.build.hcp_packer_registry.go +++ b/hcl2template/types.build.hcp_packer_registry.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/types.build.hcp_packer_registry_test.go b/hcl2template/types.build.hcp_packer_registry_test.go index 288099931dc..18c8ca3fa34 100644 --- a/hcl2template/types.build.hcp_packer_registry_test.go +++ b/hcl2template/types.build.hcp_packer_registry_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/types.build.post-processor.go b/hcl2template/types.build.post-processor.go index da2f6a6a6da..1216f32ebfd 100644 --- a/hcl2template/types.build.post-processor.go +++ b/hcl2template/types.build.post-processor.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/types.build.provisioners.go b/hcl2template/types.build.provisioners.go index 2c0659be081..8459f1be921 100644 --- a/hcl2template/types.build.provisioners.go +++ b/hcl2template/types.build.provisioners.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/types.build.provisioners_test.go b/hcl2template/types.build.provisioners_test.go index 0dae85a7103..e19570dff29 100644 --- a/hcl2template/types.build.provisioners_test.go +++ b/hcl2template/types.build.provisioners_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/types.build_test.go b/hcl2template/types.build_test.go index 17cd8086109..376646c6376 100644 --- a/hcl2template/types.build_test.go +++ b/hcl2template/types.build_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/types.datasource.go b/hcl2template/types.datasource.go index 3deab8c7174..9ae5e995ecc 100644 --- a/hcl2template/types.datasource.go +++ b/hcl2template/types.datasource.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/types.datasource_test.go b/hcl2template/types.datasource_test.go index 26c8c3c45ff..b22f438d64b 100644 --- a/hcl2template/types.datasource_test.go +++ b/hcl2template/types.datasource_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/types.hcl_post-processor.go b/hcl2template/types.hcl_post-processor.go index 21627e4d993..26974aacedf 100644 --- a/hcl2template/types.hcl_post-processor.go +++ b/hcl2template/types.hcl_post-processor.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/types.hcl_provisioner.go b/hcl2template/types.hcl_provisioner.go index 61ba775ab61..022a2fd58d1 100644 --- a/hcl2template/types.hcl_provisioner.go +++ b/hcl2template/types.hcl_provisioner.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/types.hcl_ref.go b/hcl2template/types.hcl_ref.go index 1c30e1a1821..091a2043610 100644 --- a/hcl2template/types.hcl_ref.go +++ b/hcl2template/types.hcl_ref.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/types.packer_config.go b/hcl2template/types.packer_config.go index 3ac4b0c5145..b3802ea9706 100644 --- a/hcl2template/types.packer_config.go +++ b/hcl2template/types.packer_config.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/types.packer_config_test.go b/hcl2template/types.packer_config_test.go index 2ce476c0f39..d8881c18415 100644 --- a/hcl2template/types.packer_config_test.go +++ b/hcl2template/types.packer_config_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/types.required_plugins.go b/hcl2template/types.required_plugins.go index f1309f09d28..01c090428f8 100644 --- a/hcl2template/types.required_plugins.go +++ b/hcl2template/types.required_plugins.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/types.required_plugins_test.go b/hcl2template/types.required_plugins_test.go index fe0869198ff..3a1fabd4bf7 100644 --- a/hcl2template/types.required_plugins_test.go +++ b/hcl2template/types.required_plugins_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/types.source.go b/hcl2template/types.source.go index 6c8d7bd9ce8..49b0316f6b2 100644 --- a/hcl2template/types.source.go +++ b/hcl2template/types.source.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/types.source_test.go b/hcl2template/types.source_test.go index e19d921da99..efdddea5abe 100644 --- a/hcl2template/types.source_test.go +++ b/hcl2template/types.source_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/types.variables.go b/hcl2template/types.variables.go index 77928747c8d..9111ced9a44 100644 --- a/hcl2template/types.variables.go +++ b/hcl2template/types.variables.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/types.variables_test.go b/hcl2template/types.variables_test.go index 607862c9080..d0691a0910c 100644 --- a/hcl2template/types.variables_test.go +++ b/hcl2template/types.variables_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/utils.go b/hcl2template/utils.go index a8bfffbb859..b74093b23fe 100644 --- a/hcl2template/utils.go +++ b/hcl2template/utils.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/version.go b/hcl2template/version.go index 4a9bb992fb3..920cff51031 100644 --- a/hcl2template/version.go +++ b/hcl2template/version.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/hcl2template/version_required.go b/hcl2template/version_required.go index 10d50bb82b7..c418eda550a 100644 --- a/hcl2template/version_required.go +++ b/hcl2template/version_required.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package hcl2template import ( diff --git a/helper/wrappedreadline/wrappedreadline.go b/helper/wrappedreadline/wrappedreadline.go index 55972c82a32..6641cb8960b 100644 --- a/helper/wrappedreadline/wrappedreadline.go +++ b/helper/wrappedreadline/wrappedreadline.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + // STOLEN SHAMELESSLY FROM THE TERRAFORM REPO BECAUSE VENDORING OUT // WRAPPEDREADLINE AND WRAPPEDSTREAMS FELT LIKE TOO MUCH WORK. // diff --git a/helper/wrappedreadline/wrappedreadline_solaris.go b/helper/wrappedreadline/wrappedreadline_solaris.go index 26c4e6c7b80..fb2a9388e00 100644 --- a/helper/wrappedreadline/wrappedreadline_solaris.go +++ b/helper/wrappedreadline/wrappedreadline_solaris.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package wrappedreadline // getWidth impl for Solaris diff --git a/helper/wrappedreadline/wrappedreadline_unix.go b/helper/wrappedreadline/wrappedreadline_unix.go index 8d2e6d6028c..ff621e7da9e 100644 --- a/helper/wrappedreadline/wrappedreadline_unix.go +++ b/helper/wrappedreadline/wrappedreadline_unix.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:build darwin || dragonfly || freebsd || (linux && !appengine) || netbsd || openbsd // +build darwin dragonfly freebsd linux,!appengine netbsd openbsd diff --git a/helper/wrappedreadline/wrappedreadline_windows.go b/helper/wrappedreadline/wrappedreadline_windows.go index b06a60bf8b6..d3d361579f1 100644 --- a/helper/wrappedreadline/wrappedreadline_windows.go +++ b/helper/wrappedreadline/wrappedreadline_windows.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:build windows // +build windows diff --git a/helper/wrappedstreams/streams.go b/helper/wrappedstreams/streams.go index b3a67c60972..80d1e66b259 100644 --- a/helper/wrappedstreams/streams.go +++ b/helper/wrappedstreams/streams.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + // STOLEN SHAMELESSLY FROM THE TERRAFORM REPO BECAUSE VENDORING OUT // WRAPPEDREADLINE AND WRAPPEDSTREAMS FELT LIKE TOO MUCH WORK. // diff --git a/helper/wrappedstreams/streams_other.go b/helper/wrappedstreams/streams_other.go index 49dc0157c9a..34ecf76d06a 100644 --- a/helper/wrappedstreams/streams_other.go +++ b/helper/wrappedstreams/streams_other.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:build !windows // +build !windows diff --git a/helper/wrappedstreams/streams_windows.go b/helper/wrappedstreams/streams_windows.go index 0508cc8db40..18489fdc268 100644 --- a/helper/wrappedstreams/streams_windows.go +++ b/helper/wrappedstreams/streams_windows.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:build windows // +build windows diff --git a/internal/hcp/api/client.go b/internal/hcp/api/client.go index f9a97c5efbd..a379af61b6f 100644 --- a/internal/hcp/api/client.go +++ b/internal/hcp/api/client.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + // Package api provides access to the HCP Packer Registry API. package api diff --git a/internal/hcp/api/errors.go b/internal/hcp/api/errors.go index 491bf452f0b..32a5708cc14 100644 --- a/internal/hcp/api/errors.go +++ b/internal/hcp/api/errors.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package api import ( diff --git a/internal/hcp/api/mock_service.go b/internal/hcp/api/mock_service.go index 8ab149f3bbf..9bd8e706ec7 100644 --- a/internal/hcp/api/mock_service.go +++ b/internal/hcp/api/mock_service.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package api import ( diff --git a/internal/hcp/api/service.go b/internal/hcp/api/service.go index 41a20ccc231..a0ee9f8ce4c 100644 --- a/internal/hcp/api/service.go +++ b/internal/hcp/api/service.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package api import ( diff --git a/internal/hcp/env/env.go b/internal/hcp/env/env.go index 7d9e9d7798c..c07d9cac478 100644 --- a/internal/hcp/env/env.go +++ b/internal/hcp/env/env.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + // Package env provides HCP Packer environment variables. package env diff --git a/internal/hcp/env/env_test.go b/internal/hcp/env/env_test.go index c2fd2759830..1de73f5913d 100644 --- a/internal/hcp/env/env_test.go +++ b/internal/hcp/env/env_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package env import ( diff --git a/internal/hcp/env/variables.go b/internal/hcp/env/variables.go index 1d19fbcecc4..0fc654494b6 100644 --- a/internal/hcp/env/variables.go +++ b/internal/hcp/env/variables.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package env const ( diff --git a/internal/hcp/registry/artifact.go b/internal/hcp/registry/artifact.go index e225d16bb82..a0b0049cc9f 100644 --- a/internal/hcp/registry/artifact.go +++ b/internal/hcp/registry/artifact.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package registry import ( diff --git a/internal/hcp/registry/errors.go b/internal/hcp/registry/errors.go index 1e1921d62c5..a93f960f996 100644 --- a/internal/hcp/registry/errors.go +++ b/internal/hcp/registry/errors.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package registry // ErrBuildAlreadyDone is the error returned by an HCP handler when a build cannot be started since it's already marked as DONE. diff --git a/internal/hcp/registry/hcl.go b/internal/hcp/registry/hcl.go index f07f4878d4b..64c57a51761 100644 --- a/internal/hcp/registry/hcl.go +++ b/internal/hcp/registry/hcl.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package registry import ( diff --git a/internal/hcp/registry/hcp.go b/internal/hcp/registry/hcp.go index aacb56466fe..838350b7641 100644 --- a/internal/hcp/registry/hcp.go +++ b/internal/hcp/registry/hcp.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package registry import ( diff --git a/internal/hcp/registry/json.go b/internal/hcp/registry/json.go index aa44bc011c7..bb0bba14674 100644 --- a/internal/hcp/registry/json.go +++ b/internal/hcp/registry/json.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package registry import ( diff --git a/internal/hcp/registry/null_registry.go b/internal/hcp/registry/null_registry.go index 103db276406..5aee3e6bcd1 100644 --- a/internal/hcp/registry/null_registry.go +++ b/internal/hcp/registry/null_registry.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package registry import ( diff --git a/internal/hcp/registry/registry.go b/internal/hcp/registry/registry.go index 487738abc8f..b095e14ea2f 100644 --- a/internal/hcp/registry/registry.go +++ b/internal/hcp/registry/registry.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + // Package registry provides access to the HCP registry. package registry diff --git a/internal/hcp/registry/types.bucket.go b/internal/hcp/registry/types.bucket.go index 869398a2401..7e548643a65 100644 --- a/internal/hcp/registry/types.bucket.go +++ b/internal/hcp/registry/types.bucket.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package registry import ( diff --git a/internal/hcp/registry/types.bucket_service_test.go b/internal/hcp/registry/types.bucket_service_test.go index 463feb59b4c..5fa28ac4e93 100644 --- a/internal/hcp/registry/types.bucket_service_test.go +++ b/internal/hcp/registry/types.bucket_service_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package registry import ( diff --git a/internal/hcp/registry/types.bucket_test.go b/internal/hcp/registry/types.bucket_test.go index d4cb7b1ac40..30f73dec51c 100644 --- a/internal/hcp/registry/types.bucket_test.go +++ b/internal/hcp/registry/types.bucket_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package registry import ( diff --git a/internal/hcp/registry/types.builds.go b/internal/hcp/registry/types.builds.go index 52c176fef82..9245a9d3141 100644 --- a/internal/hcp/registry/types.builds.go +++ b/internal/hcp/registry/types.builds.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package registry import ( diff --git a/internal/hcp/registry/types.iterations.go b/internal/hcp/registry/types.iterations.go index ef86470647b..8997491c2ef 100644 --- a/internal/hcp/registry/types.iterations.go +++ b/internal/hcp/registry/types.iterations.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package registry import ( diff --git a/internal/hcp/registry/types.iterations_test.go b/internal/hcp/registry/types.iterations_test.go index b78229454ce..fe7132d6b36 100644 --- a/internal/hcp/registry/types.iterations_test.go +++ b/internal/hcp/registry/types.iterations_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package registry import ( diff --git a/log.go b/log.go index ff12c94c079..2c15a700a16 100644 --- a/log.go +++ b/log.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package main import ( diff --git a/main.go b/main.go index 060bf12278b..728f56860af 100644 --- a/main.go +++ b/main.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + // This is the main package for the `packer` application. //go:generate go run ./scripts/generate-plugins.go diff --git a/main_test.go b/main_test.go index f4d44bbf120..69be0aca87e 100644 --- a/main_test.go +++ b/main_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package main import ( diff --git a/packer/build.go b/packer/build.go index e5ff54b7271..688692c4c5b 100644 --- a/packer/build.go +++ b/packer/build.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/build_test.go b/packer/build_test.go index 9b4812b3565..4ae5f253753 100644 --- a/packer/build_test.go +++ b/packer/build_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/builder_test.go b/packer/builder_test.go index d7c610c153e..1276552788b 100644 --- a/packer/builder_test.go +++ b/packer/builder_test.go @@ -1 +1,4 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer diff --git a/packer/client_test.go b/packer/client_test.go index 9610cedceec..f9a1483ff87 100644 --- a/packer/client_test.go +++ b/packer/client_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/cmd_builder.go b/packer/cmd_builder.go index 7371cb43c3a..99a0bc6f913 100644 --- a/packer/cmd_builder.go +++ b/packer/cmd_builder.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/cmd_builder_test.go b/packer/cmd_builder_test.go index 7ab9c65133f..dfc5d15fb99 100644 --- a/packer/cmd_builder_test.go +++ b/packer/cmd_builder_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/cmd_datasource.go b/packer/cmd_datasource.go index 399ef036837..4e8b32561ed 100644 --- a/packer/cmd_datasource.go +++ b/packer/cmd_datasource.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/cmd_datasource_test.go b/packer/cmd_datasource_test.go index 590d0674ed9..c174c8ee02b 100644 --- a/packer/cmd_datasource_test.go +++ b/packer/cmd_datasource_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/cmd_hook.go b/packer/cmd_hook.go index 58e2caeaefc..ace3d2c032d 100644 --- a/packer/cmd_hook.go +++ b/packer/cmd_hook.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/cmd_hook_test.go b/packer/cmd_hook_test.go index a3c8ba36489..f2a1f4d9246 100644 --- a/packer/cmd_hook_test.go +++ b/packer/cmd_hook_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/cmd_post_processor.go b/packer/cmd_post_processor.go index e75e5c3e344..c686a3937ef 100644 --- a/packer/cmd_post_processor.go +++ b/packer/cmd_post_processor.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/cmd_post_processor_test.go b/packer/cmd_post_processor_test.go index 4d327d1fcdd..ce70a8bf125 100644 --- a/packer/cmd_post_processor_test.go +++ b/packer/cmd_post_processor_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/cmd_provisioner.go b/packer/cmd_provisioner.go index a1c7003be82..965ad89587f 100644 --- a/packer/cmd_provisioner.go +++ b/packer/cmd_provisioner.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/cmd_provisioner_test.go b/packer/cmd_provisioner_test.go index acf81f1be1e..5bb86942ace 100644 --- a/packer/cmd_provisioner_test.go +++ b/packer/cmd_provisioner_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/core.go b/packer/core.go index f768d00c619..4d62cce6bc3 100644 --- a/packer/core.go +++ b/packer/core.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/core_test.go b/packer/core_test.go index 8bea78ab6e0..e46f62e6b0e 100644 --- a/packer/core_test.go +++ b/packer/core_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/maps.go b/packer/maps.go index 41727279d5a..6fec5c67950 100644 --- a/packer/maps.go +++ b/packer/maps.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/packer_test.go b/packer/packer_test.go index ec536e2c3b8..bc75903397b 100644 --- a/packer/packer_test.go +++ b/packer/packer_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/plugin-getter/checksum.go b/packer/plugin-getter/checksum.go index 9d1fcdfbce1..507a17e6537 100644 --- a/packer/plugin-getter/checksum.go +++ b/packer/plugin-getter/checksum.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package plugingetter import ( diff --git a/packer/plugin-getter/docs.go b/packer/plugin-getter/docs.go index 59f8145c873..6c8cfba37cf 100644 --- a/packer/plugin-getter/docs.go +++ b/packer/plugin-getter/docs.go @@ -1,2 +1,5 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + // Package plugingetter defines means to download and install plugins. package plugingetter diff --git a/packer/plugin-getter/github/docs.go b/packer/plugin-getter/github/docs.go index 868b074ebd4..9c189dfd3a3 100644 --- a/packer/plugin-getter/github/docs.go +++ b/packer/plugin-getter/github/docs.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + // Package github defines a Github getter. package github diff --git a/packer/plugin-getter/github/getter.go b/packer/plugin-getter/github/getter.go index 229ece1b0b3..c094a33e332 100644 --- a/packer/plugin-getter/github/getter.go +++ b/packer/plugin-getter/github/getter.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package github import ( diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index a94823692e3..2ef5d80f910 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package plugingetter import ( diff --git a/packer/plugin-getter/plugins_test.go b/packer/plugin-getter/plugins_test.go index 1e2c5dfde43..3105fb1e667 100644 --- a/packer/plugin-getter/plugins_test.go +++ b/packer/plugin-getter/plugins_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package plugingetter import ( diff --git a/packer/plugin.go b/packer/plugin.go index f69803a7054..1b64482a89b 100644 --- a/packer/plugin.go +++ b/packer/plugin.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/plugin_client.go b/packer/plugin_client.go index 24102aff54c..f1d127497be 100644 --- a/packer/plugin_client.go +++ b/packer/plugin_client.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/plugin_discover_test.go b/packer/plugin_discover_test.go index b75053ea633..91e8ba6b318 100644 --- a/packer/plugin_discover_test.go +++ b/packer/plugin_discover_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/plugin_folders.go b/packer/plugin_folders.go index 6b04ff2ee05..07e74d19121 100644 --- a/packer/plugin_folders.go +++ b/packer/plugin_folders.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/plugin_test.go b/packer/plugin_test.go index 1972a10d89f..099d9cf6c8a 100644 --- a/packer/plugin_test.go +++ b/packer/plugin_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/post_processor_mock.go b/packer/post_processor_mock.go index 20d36f87b83..b6156e28ceb 100644 --- a/packer/post_processor_mock.go +++ b/packer/post_processor_mock.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:generate packer-sdc mapstructure-to-hcl2 -type MockPostProcessor package packer diff --git a/packer/progressbar.go b/packer/progressbar.go index a6e7a3b0825..c7e68f7c2ba 100644 --- a/packer/progressbar.go +++ b/packer/progressbar.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:build !solaris // +build !solaris diff --git a/packer/progressbar_solaris.go b/packer/progressbar_solaris.go index 1f88716802f..cfc0266f27a 100644 --- a/packer/progressbar_solaris.go +++ b/packer/progressbar_solaris.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/progressbar_test.go b/packer/progressbar_test.go index 40928d2738f..a50049cf908 100644 --- a/packer/progressbar_test.go +++ b/packer/progressbar_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/provisioner.go b/packer/provisioner.go index 8d8c54a9b8f..66d61d9fb98 100644 --- a/packer/provisioner.go +++ b/packer/provisioner.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/provisioner_test.go b/packer/provisioner_test.go index 4fad60b23f4..d5e191038c9 100644 --- a/packer/provisioner_test.go +++ b/packer/provisioner_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/provisioner_timeout.go b/packer/provisioner_timeout.go index 627333e8b33..c7407130cb4 100644 --- a/packer/provisioner_timeout.go +++ b/packer/provisioner_timeout.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/run_interfaces.go b/packer/run_interfaces.go index 418da184ca0..5bf1151529c 100644 --- a/packer/run_interfaces.go +++ b/packer/run_interfaces.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/telemetry.go b/packer/telemetry.go index 92711d6a3b8..2dd7a6f2b58 100644 --- a/packer/telemetry.go +++ b/packer/telemetry.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/telemetry_test.go b/packer/telemetry_test.go index c4192f61f67..4d1dee3e7f5 100644 --- a/packer/telemetry_test.go +++ b/packer/telemetry_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/testing.go b/packer/testing.go index dcdcf2a3023..0b2449593c2 100644 --- a/packer/testing.go +++ b/packer/testing.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/ui.go b/packer/ui.go index 1c6033ef415..dac5689205c 100644 --- a/packer/ui.go +++ b/packer/ui.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/packer/ui_test.go b/packer/ui_test.go index 974c09cf29e..1d15cb4ea0f 100644 --- a/packer/ui_test.go +++ b/packer/ui_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package packer import ( diff --git a/panic.go b/panic.go index 5d58c56854f..6f609645345 100644 --- a/panic.go +++ b/panic.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package main import ( diff --git a/post-processor/artifice/artifact.go b/post-processor/artifice/artifact.go index de55e46e63b..4f481b2be29 100644 --- a/post-processor/artifice/artifact.go +++ b/post-processor/artifice/artifact.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package artifice import ( diff --git a/post-processor/artifice/post-processor.go b/post-processor/artifice/post-processor.go index 71cc7339a43..334d8531b6b 100644 --- a/post-processor/artifice/post-processor.go +++ b/post-processor/artifice/post-processor.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:generate packer-sdc mapstructure-to-hcl2 -type Config package artifice diff --git a/post-processor/artifice/version/version.go b/post-processor/artifice/version/version.go index 85e9772b656..b426efb501a 100644 --- a/post-processor/artifice/version/version.go +++ b/post-processor/artifice/version/version.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package version import ( diff --git a/post-processor/checksum/artifact.go b/post-processor/checksum/artifact.go index 78360bb85c8..eb1eeeeec26 100644 --- a/post-processor/checksum/artifact.go +++ b/post-processor/checksum/artifact.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package checksum import ( diff --git a/post-processor/checksum/post-processor.go b/post-processor/checksum/post-processor.go index 81d2d85a18e..28b107cd8e6 100644 --- a/post-processor/checksum/post-processor.go +++ b/post-processor/checksum/post-processor.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:generate packer-sdc mapstructure-to-hcl2 -type Config package checksum diff --git a/post-processor/checksum/post-processor_test.go b/post-processor/checksum/post-processor_test.go index 8c388e3ac88..97ab201f7f8 100644 --- a/post-processor/checksum/post-processor_test.go +++ b/post-processor/checksum/post-processor_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package checksum import ( diff --git a/post-processor/checksum/version/version.go b/post-processor/checksum/version/version.go index be8fc4ac1d3..74332d82388 100644 --- a/post-processor/checksum/version/version.go +++ b/post-processor/checksum/version/version.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package version import ( diff --git a/post-processor/compress/artifact.go b/post-processor/compress/artifact.go index 9bd89b213ab..20c7ef7d0b3 100644 --- a/post-processor/compress/artifact.go +++ b/post-processor/compress/artifact.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package compress import ( diff --git a/post-processor/compress/artifact_test.go b/post-processor/compress/artifact_test.go index cba4ecb5124..d0c1da8caeb 100644 --- a/post-processor/compress/artifact_test.go +++ b/post-processor/compress/artifact_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package compress import ( diff --git a/post-processor/compress/benchmark.go b/post-processor/compress/benchmark.go index f21b7a18d01..f853c85104f 100644 --- a/post-processor/compress/benchmark.go +++ b/post-processor/compress/benchmark.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:build ignore // +build ignore diff --git a/post-processor/compress/post-processor.go b/post-processor/compress/post-processor.go index 8214bce0cb6..9d2a32e57d5 100644 --- a/post-processor/compress/post-processor.go +++ b/post-processor/compress/post-processor.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:generate packer-sdc mapstructure-to-hcl2 -type Config package compress diff --git a/post-processor/compress/post-processor_test.go b/post-processor/compress/post-processor_test.go index e8f9d030273..f91a1178f2f 100644 --- a/post-processor/compress/post-processor_test.go +++ b/post-processor/compress/post-processor_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package compress import ( diff --git a/post-processor/compress/tar_fix.go b/post-processor/compress/tar_fix.go index d565cca2aa2..ad58cb18fa9 100644 --- a/post-processor/compress/tar_fix.go +++ b/post-processor/compress/tar_fix.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:build !go1.10 // +build !go1.10 diff --git a/post-processor/compress/tar_fix_go110.go b/post-processor/compress/tar_fix_go110.go index 72c2c46c1a2..5eac3dea192 100644 --- a/post-processor/compress/tar_fix_go110.go +++ b/post-processor/compress/tar_fix_go110.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:build go1.10 // +build go1.10 diff --git a/post-processor/compress/version/version.go b/post-processor/compress/version/version.go index 08eb1da4177..639290a83ef 100644 --- a/post-processor/compress/version/version.go +++ b/post-processor/compress/version/version.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package version import ( diff --git a/post-processor/manifest/artifact.go b/post-processor/manifest/artifact.go index 61f11bb8525..b70c7deceb0 100644 --- a/post-processor/manifest/artifact.go +++ b/post-processor/manifest/artifact.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package manifest import "fmt" diff --git a/post-processor/manifest/post-processor.go b/post-processor/manifest/post-processor.go index 8efc1f20fe5..f911f734b5c 100644 --- a/post-processor/manifest/post-processor.go +++ b/post-processor/manifest/post-processor.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:generate packer-sdc mapstructure-to-hcl2 -type Config //go:generate packer-sdc struct-markdown diff --git a/post-processor/manifest/version/version.go b/post-processor/manifest/version/version.go index a4ded430904..20a5523154a 100644 --- a/post-processor/manifest/version/version.go +++ b/post-processor/manifest/version/version.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package version import ( diff --git a/post-processor/shell-local/post-processor.go b/post-processor/shell-local/post-processor.go index 8748e16ca71..334081e5927 100644 --- a/post-processor/shell-local/post-processor.go +++ b/post-processor/shell-local/post-processor.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package shell_local import ( diff --git a/post-processor/shell-local/post-processor_test.go b/post-processor/shell-local/post-processor_test.go index 4007584cd51..eb8481772d1 100644 --- a/post-processor/shell-local/post-processor_test.go +++ b/post-processor/shell-local/post-processor_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package shell_local import ( diff --git a/post-processor/shell-local/version/version.go b/post-processor/shell-local/version/version.go index 53f0562e849..1d02737909d 100644 --- a/post-processor/shell-local/version/version.go +++ b/post-processor/shell-local/version/version.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package version import ( diff --git a/provisioner/breakpoint/provisioner.go b/provisioner/breakpoint/provisioner.go index a708a67b18a..fc833fb47bc 100644 --- a/provisioner/breakpoint/provisioner.go +++ b/provisioner/breakpoint/provisioner.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:generate packer-sdc mapstructure-to-hcl2 -type Config package breakpoint diff --git a/provisioner/breakpoint/version/version.go b/provisioner/breakpoint/version/version.go index 48a982805bf..008af956575 100644 --- a/provisioner/breakpoint/version/version.go +++ b/provisioner/breakpoint/version/version.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package version import ( diff --git a/provisioner/file/provisioner.go b/provisioner/file/provisioner.go index 369eec74204..84e9c3744fa 100644 --- a/provisioner/file/provisioner.go +++ b/provisioner/file/provisioner.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:generate packer-sdc mapstructure-to-hcl2 -type Config //go:generate packer-sdc struct-markdown diff --git a/provisioner/file/provisioner_test.go b/provisioner/file/provisioner_test.go index a8cb9de5b2c..e3ecd7294f7 100644 --- a/provisioner/file/provisioner_test.go +++ b/provisioner/file/provisioner_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package file import ( diff --git a/provisioner/file/version/version.go b/provisioner/file/version/version.go index d524a335ca9..e5b7923463f 100644 --- a/provisioner/file/version/version.go +++ b/provisioner/file/version/version.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package version import ( diff --git a/provisioner/powershell/execution_policy.go b/provisioner/powershell/execution_policy.go index c79b2f72cab..94463db2b24 100644 --- a/provisioner/powershell/execution_policy.go +++ b/provisioner/powershell/execution_policy.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:generate enumer -transform snake -trimprefix ExecutionPolicy -type ExecutionPolicy package powershell diff --git a/provisioner/powershell/execution_policy_test.go b/provisioner/powershell/execution_policy_test.go index ae8680c67ae..8b82c97f270 100644 --- a/provisioner/powershell/execution_policy_test.go +++ b/provisioner/powershell/execution_policy_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package powershell import ( diff --git a/provisioner/powershell/provisioner.go b/provisioner/powershell/provisioner.go index 396eafc21df..65ed16d1bf2 100644 --- a/provisioner/powershell/provisioner.go +++ b/provisioner/powershell/provisioner.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:generate packer-sdc mapstructure-to-hcl2 -type Config // This package implements a provisioner for Packer that executes powershell diff --git a/provisioner/powershell/provisioner_acc_test.go b/provisioner/powershell/provisioner_acc_test.go index fb0be9a80e3..379b14f9b8f 100644 --- a/provisioner/powershell/provisioner_acc_test.go +++ b/provisioner/powershell/provisioner_acc_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package powershell_test import ( diff --git a/provisioner/powershell/provisioner_test.go b/provisioner/powershell/provisioner_test.go index ac0b656103c..d94a56fa23b 100644 --- a/provisioner/powershell/provisioner_test.go +++ b/provisioner/powershell/provisioner_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package powershell import ( diff --git a/provisioner/powershell/version/version.go b/provisioner/powershell/version/version.go index 2f89c87401a..eb2cc7e0d33 100644 --- a/provisioner/powershell/version/version.go +++ b/provisioner/powershell/version/version.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package version import ( diff --git a/provisioner/shell-local/provisioner.go b/provisioner/shell-local/provisioner.go index e041278b6f6..d051b361239 100644 --- a/provisioner/shell-local/provisioner.go +++ b/provisioner/shell-local/provisioner.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package shell import ( diff --git a/provisioner/shell-local/provisioner_acc_test.go b/provisioner/shell-local/provisioner_acc_test.go index fd0f390aea0..f53990d0d2f 100644 --- a/provisioner/shell-local/provisioner_acc_test.go +++ b/provisioner/shell-local/provisioner_acc_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package shell_test import ( diff --git a/provisioner/shell-local/provisioner_test.go b/provisioner/shell-local/provisioner_test.go index 7473e046d76..ac7262b616a 100644 --- a/provisioner/shell-local/provisioner_test.go +++ b/provisioner/shell-local/provisioner_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package shell import ( diff --git a/provisioner/shell-local/version/version.go b/provisioner/shell-local/version/version.go index b26a6eb0a05..205aea7ccf0 100644 --- a/provisioner/shell-local/version/version.go +++ b/provisioner/shell-local/version/version.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package version import ( diff --git a/provisioner/shell/provisioner.go b/provisioner/shell/provisioner.go index 62fc3c6cfd1..cc1e399996a 100644 --- a/provisioner/shell/provisioner.go +++ b/provisioner/shell/provisioner.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:generate packer-sdc mapstructure-to-hcl2 -type Config // This package implements a provisioner for Packer that executes diff --git a/provisioner/shell/provisioner_acc_test.go b/provisioner/shell/provisioner_acc_test.go index 7dc956367f2..8ffc58b8d14 100644 --- a/provisioner/shell/provisioner_acc_test.go +++ b/provisioner/shell/provisioner_acc_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package shell_test import ( diff --git a/provisioner/shell/provisioner_test.go b/provisioner/shell/provisioner_test.go index 9cdd5459a2e..73a4ac248f5 100644 --- a/provisioner/shell/provisioner_test.go +++ b/provisioner/shell/provisioner_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package shell import ( diff --git a/provisioner/shell/unix_reader.go b/provisioner/shell/unix_reader.go index 837ecdeaee8..dc74647b292 100644 --- a/provisioner/shell/unix_reader.go +++ b/provisioner/shell/unix_reader.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package shell import ( diff --git a/provisioner/shell/unix_reader_test.go b/provisioner/shell/unix_reader_test.go index 4aa1f9ea9da..96c470cc13c 100644 --- a/provisioner/shell/unix_reader_test.go +++ b/provisioner/shell/unix_reader_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package shell import ( diff --git a/provisioner/shell/version/version.go b/provisioner/shell/version/version.go index 53fb36b1ad5..f192bb373db 100644 --- a/provisioner/shell/version/version.go +++ b/provisioner/shell/version/version.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package version import ( diff --git a/provisioner/sleep/provisioner.go b/provisioner/sleep/provisioner.go index 20955fe8a29..8dfb4ce1f7c 100644 --- a/provisioner/sleep/provisioner.go +++ b/provisioner/sleep/provisioner.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:generate packer-sdc mapstructure-to-hcl2 -type Provisioner package sleep diff --git a/provisioner/sleep/provisioner_test.go b/provisioner/sleep/provisioner_test.go index 2ed66ff5046..315849e66dc 100644 --- a/provisioner/sleep/provisioner_test.go +++ b/provisioner/sleep/provisioner_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package sleep import ( diff --git a/provisioner/sleep/version/version.go b/provisioner/sleep/version/version.go index cf38b86861e..bdad4975ec3 100644 --- a/provisioner/sleep/version/version.go +++ b/provisioner/sleep/version/version.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package version import ( diff --git a/provisioner/windows-restart/provisioner.go b/provisioner/windows-restart/provisioner.go index c98087063e6..8aaa3598ccd 100644 --- a/provisioner/windows-restart/provisioner.go +++ b/provisioner/windows-restart/provisioner.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:generate packer-sdc mapstructure-to-hcl2 -type Config package restart diff --git a/provisioner/windows-restart/provisioner_test.go b/provisioner/windows-restart/provisioner_test.go index 34977aba4da..bc68f167398 100644 --- a/provisioner/windows-restart/provisioner_test.go +++ b/provisioner/windows-restart/provisioner_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package restart import ( diff --git a/provisioner/windows-restart/version/version.go b/provisioner/windows-restart/version/version.go index e20c9ddc11f..5376f9e31a6 100644 --- a/provisioner/windows-restart/version/version.go +++ b/provisioner/windows-restart/version/version.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package version import ( diff --git a/provisioner/windows-shell/provisioner.go b/provisioner/windows-shell/provisioner.go index 0e21c6cb986..ab263d359f8 100644 --- a/provisioner/windows-shell/provisioner.go +++ b/provisioner/windows-shell/provisioner.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:generate packer-sdc mapstructure-to-hcl2 -type Config // This package implements a provisioner for Packer that executes diff --git a/provisioner/windows-shell/provisioner_test.go b/provisioner/windows-shell/provisioner_test.go index d75ff861a21..e01af9e7b06 100644 --- a/provisioner/windows-shell/provisioner_test.go +++ b/provisioner/windows-shell/provisioner_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package shell import ( diff --git a/provisioner/windows-shell/version/version.go b/provisioner/windows-shell/version/version.go index 70d61de8315..18ad34fe08e 100644 --- a/provisioner/windows-shell/version/version.go +++ b/provisioner/windows-shell/version/version.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package version import ( diff --git a/scripts/build.ps1 b/scripts/build.ps1 index 79bda1696b0..4f1abd3a1cb 100644 --- a/scripts/build.ps1 +++ b/scripts/build.ps1 @@ -1,3 +1,6 @@ +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + <# .Synopsis Build script for Packer. diff --git a/scripts/build.sh b/scripts/build.sh index b72be90385e..8b65f50b773 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + # This script builds the application from source for multiple platforms. # Determine the arch/os combos we're building for diff --git a/scripts/codesign_example.sh b/scripts/codesign_example.sh index aa68169d055..2e1a1698477 100755 --- a/scripts/codesign_example.sh +++ b/scripts/codesign_example.sh @@ -1,4 +1,7 @@ #! /usr/bin/env bash +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + set -euo pipefail # first makes some assertions about the environment and set some shared diff --git a/scripts/dist.sh b/scripts/dist.sh index 1cd42e7fb11..113af57ba21 100755 --- a/scripts/dist.sh +++ b/scripts/dist.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + set -e # Get the parent directory of where this script is. diff --git a/scripts/generate-plugins.go b/scripts/generate-plugins.go index d2e69c5af6d..35f83c2d3d0 100755 --- a/scripts/generate-plugins.go +++ b/scripts/generate-plugins.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + // Generate Plugins is a small program that updates the lists of plugins in // command/plugin.go so they will be compiled into the main packer binary. // diff --git a/scripts/off_gopath.sh b/scripts/off_gopath.sh index ead92a6d7e2..beb1433e1bf 100755 --- a/scripts/off_gopath.sh +++ b/scripts/off_gopath.sh @@ -1,4 +1,7 @@ #! /usr/bin/env bash +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + set -eu -o pipefail diff --git a/scripts/prepare_changelog.sh b/scripts/prepare_changelog.sh index 3bb5d1f9ef1..3f776034b1d 100755 --- a/scripts/prepare_changelog.sh +++ b/scripts/prepare_changelog.sh @@ -1,4 +1,7 @@ #!/bin/zsh +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + LAST_RELEASE=$1 DO_PR_CHECK=1 diff --git a/scripts/sign.sh b/scripts/sign.sh index 024e5e5bde2..f7d18acd764 100755 --- a/scripts/sign.sh +++ b/scripts/sign.sh @@ -1,3 +1,6 @@ +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + #!/usr/bin/env bash diff --git a/scripts/sort-md-list.py b/scripts/sort-md-list.py index e7bafc56e51..9842977752e 100755 --- a/scripts/sort-md-list.py +++ b/scripts/sort-md-list.py @@ -1,4 +1,7 @@ #!/usr/bin/env python3 +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + """ sort-md-list.py sorts markdown lists diff --git a/scripts/upgrade_plugins.sh b/scripts/upgrade_plugins.sh index f2c7335c042..3ca2885f178 100755 --- a/scripts/upgrade_plugins.sh +++ b/scripts/upgrade_plugins.sh @@ -1,4 +1,7 @@ #!/bin/zsh +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + ## This script is to be run before a Packer release in order to update ## all vendored plugins to the latest available release. diff --git a/scripts/vagrant-freebsd-priv-config.sh b/scripts/vagrant-freebsd-priv-config.sh index e2ea148dce0..9d5f0761ed5 100755 --- a/scripts/vagrant-freebsd-priv-config.sh +++ b/scripts/vagrant-freebsd-priv-config.sh @@ -1,4 +1,7 @@ #!/bin/sh +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + chown vagrant:wheel \ /opt/gopath \ diff --git a/scripts/vagrant-freebsd-unpriv-bootstrap.sh b/scripts/vagrant-freebsd-unpriv-bootstrap.sh index 26d40b91e2e..89fc9fc87bb 100755 --- a/scripts/vagrant-freebsd-unpriv-bootstrap.sh +++ b/scripts/vagrant-freebsd-unpriv-bootstrap.sh @@ -1,4 +1,7 @@ #!/bin/sh +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + export GOPATH=/opt/gopath diff --git a/scripts/vagrant-linux-priv-config.sh b/scripts/vagrant-linux-priv-config.sh index edbb5b8b76c..d89e10ecb0b 100755 --- a/scripts/vagrant-linux-priv-config.sh +++ b/scripts/vagrant-linux-priv-config.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + export DEBIAN_FRONTEND=noninteractive diff --git a/scripts/vagrant-linux-priv-go.sh b/scripts/vagrant-linux-priv-go.sh index f9e792cb0a8..2d99bc1517b 100755 --- a/scripts/vagrant-linux-priv-go.sh +++ b/scripts/vagrant-linux-priv-go.sh @@ -1,4 +1,7 @@ #!/usr/bin/env bash +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + function install_go() { local go_version=1.13 diff --git a/scripts/vagrant-linux-unpriv-bootstrap.sh b/scripts/vagrant-linux-unpriv-bootstrap.sh index 04cc38bec68..ca7f004c9eb 100755 --- a/scripts/vagrant-linux-unpriv-bootstrap.sh +++ b/scripts/vagrant-linux-unpriv-bootstrap.sh @@ -1,3 +1,6 @@ #!/usr/bin/env bash +# Copyright (c) HashiCorp, Inc. +# SPDX-License-Identifier: MPL-2.0 + cd /opt/gopath/src/github.com/hashicorp/packer && make dev diff --git a/tty.go b/tty.go index 5aa5a33bf23..a6f16d122ac 100644 --- a/tty.go +++ b/tty.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + //go:build !solaris // +build !solaris diff --git a/tty_solaris.go b/tty_solaris.go index 1c20d3acf1d..257db948865 100644 --- a/tty_solaris.go +++ b/tty_solaris.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package main import ( diff --git a/version/version.go b/version/version.go index 1fa6f345fcd..e389cebd2e7 100644 --- a/version/version.go +++ b/version/version.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package version import ( From 80723ad9880f0cb3f2d8c3657b345b052b88ed68 Mon Sep 17 00:00:00 2001 From: Ashlee M Boyer <43934258+ashleemboyer@users.noreply.github.com> Date: Mon, 6 Mar 2023 15:24:52 -0500 Subject: [PATCH 054/381] Delete test-link-rewrites.yml --- .github/workflows/test-link-rewrites.yml | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 .github/workflows/test-link-rewrites.yml diff --git a/.github/workflows/test-link-rewrites.yml b/.github/workflows/test-link-rewrites.yml deleted file mode 100644 index 68a3d02e894..00000000000 --- a/.github/workflows/test-link-rewrites.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: Test Link Rewrites - -on: [deployment_status] - -jobs: - test-link-rewrites: - if: github.event.deployment_status.state == 'success' - uses: hashicorp/dev-portal/.github/workflows/docs-content-link-rewrites-e2e.yml@2aceb60125f6c15f4c8dbe2e4d79148047bfa437 - with: - repo-owner: "hashicorp" - repo-name: "packer" - commit-sha: ${{ github.sha }} - main-branch-preview-url: "https://packer-git-main-hashicorp.vercel.app/" - # Workflow is only intended to run for one single migration PR - # This variable does not need to be updated - pr-branch-preview-url: "https://packer-git-docs-ambmigrate-link-formats-hashicorp.vercel.app/" From bdf67c301c89b876732a07c54abb6adf98582fe4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Mar 2023 11:45:36 -0500 Subject: [PATCH 055/381] build(deps): bump aws-actions/configure-aws-credentials from 1 to 2 (#12302) Bumps [aws-actions/configure-aws-credentials](https://github.com/aws-actions/configure-aws-credentials) from 1 to 2. - [Release notes](https://github.com/aws-actions/configure-aws-credentials/releases) - [Changelog](https://github.com/aws-actions/configure-aws-credentials/blob/main/CHANGELOG.md) - [Commits](https://github.com/aws-actions/configure-aws-credentials/compare/v1...v2) --- updated-dependencies: - dependency-name: aws-actions/configure-aws-credentials dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/acceptance-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/acceptance-test.yml b/.github/workflows/acceptance-test.yml index 69179d89f80..5c2425251ac 100644 --- a/.github/workflows/acceptance-test.yml +++ b/.github/workflows/acceptance-test.yml @@ -45,7 +45,7 @@ jobs: with: go-version: ${{ needs.get-go-version.outputs.go-version }} - name: IAM Assume Role - uses: aws-actions/configure-aws-credentials@v1 + uses: aws-actions/configure-aws-credentials@v2 with: role-to-assume: ${{ env.AWS_ROLE_ARN }} aws-region: ${{ env.AWS_REGION }} From 512ef1ae39de2e01349ef80c2a4cc1c67aededc2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Mar 2023 11:46:18 -0500 Subject: [PATCH 056/381] build(deps): bump github.com/hashicorp/hcp-sdk-go from 0.34.0 to 0.36.0 (#12292) Bumps [github.com/hashicorp/hcp-sdk-go](https://github.com/hashicorp/hcp-sdk-go) from 0.34.0 to 0.36.0. - [Release notes](https://github.com/hashicorp/hcp-sdk-go/releases) - [Changelog](https://github.com/hashicorp/hcp-sdk-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/hcp-sdk-go/compare/v0.34.0...v0.36.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/hcp-sdk-go dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 9007793cc5d..d7daff6b03b 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/hashicorp/go-uuid v1.0.2 github.com/hashicorp/go-version v1.6.0 github.com/hashicorp/hcl/v2 v2.14.1 - github.com/hashicorp/hcp-sdk-go v0.34.0 + github.com/hashicorp/hcp-sdk-go v0.36.0 github.com/hashicorp/packer-plugin-amazon v1.2.1 github.com/hashicorp/packer-plugin-sdk v0.3.4 github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 diff --git a/go.sum b/go.sum index 1753b6a9717..65d8836079a 100644 --- a/go.sum +++ b/go.sum @@ -509,8 +509,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.14.1 h1:x0BpjfZ+CYdbiz+8yZTQ+gdLO7IXvOut7Da+XJayx34= github.com/hashicorp/hcl/v2 v2.14.1/go.mod h1:e4z5nxYlWNPdDSNYX+ph14EvWYMFm3eP0zIUqPc2jr0= -github.com/hashicorp/hcp-sdk-go v0.34.0 h1:sa0zJEIPg0v2NcJmCAJqL28OkSwFjQRkb/rsXSnnpBM= -github.com/hashicorp/hcp-sdk-go v0.34.0/go.mod h1:4wg3eQ8hNUumKigCcx/rPLIdtob4d9uQ1H1LGDNsM78= +github.com/hashicorp/hcp-sdk-go v0.36.0 h1:B1qvnsStyYQyuEudgPrpMdheEC/zTeHRhyF1UwpYTJQ= +github.com/hashicorp/hcp-sdk-go v0.36.0/go.mod h1:mJHPFD1Rs62bieKNVXUiFQlF76NCGACKqHu9a8ihcFk= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= github.com/hashicorp/memberlist v0.2.2 h1:5+RffWKwqJ71YPu9mWsF7ZOscZmwfasdA8kbdC7AO2g= From d7fdc9a9ec1a0c0fd4218797239806e317ef3e42 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 10 Mar 2023 17:53:28 -0500 Subject: [PATCH 057/381] build(deps): bump github.com/hashicorp/packer-plugin-sdk (#12306) Bumps [github.com/hashicorp/packer-plugin-sdk](https://github.com/hashicorp/packer-plugin-sdk) from 0.3.4 to 0.4.0. - [Release notes](https://github.com/hashicorp/packer-plugin-sdk/releases) - [Changelog](https://github.com/hashicorp/packer-plugin-sdk/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/packer-plugin-sdk/compare/v0.3.4...v0.4.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/packer-plugin-sdk dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 14 +++++++------- go.sum | 28 ++++++++++++++-------------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/go.mod b/go.mod index d7daff6b03b..0c6b8b146e0 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/hashicorp/hcl/v2 v2.14.1 github.com/hashicorp/hcp-sdk-go v0.36.0 github.com/hashicorp/packer-plugin-amazon v1.2.1 - github.com/hashicorp/packer-plugin-sdk v0.3.4 + github.com/hashicorp/packer-plugin-sdk v0.4.0 github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 github.com/klauspost/compress v1.13.6 // indirect github.com/klauspost/pgzip v1.2.5 @@ -47,14 +47,14 @@ require ( github.com/zclconf/go-cty v1.10.0 github.com/zclconf/go-cty-yaml v1.0.1 golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect - golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 - golang.org/x/net v0.7.0 + golang.org/x/mod v0.8.0 + golang.org/x/net v0.8.0 golang.org/x/oauth2 v0.1.0 golang.org/x/sync v0.1.0 - golang.org/x/sys v0.5.0 // indirect - golang.org/x/term v0.5.0 // indirect - golang.org/x/text v0.7.0 // indirect - golang.org/x/tools v0.1.12 + golang.org/x/sys v0.6.0 // indirect + golang.org/x/term v0.6.0 // indirect + golang.org/x/text v0.8.0 // indirect + golang.org/x/tools v0.6.0 google.golang.org/api v0.101.0 // indirect google.golang.org/grpc v1.50.1 ) diff --git a/go.sum b/go.sum index 65d8836079a..c42b05f40bc 100644 --- a/go.sum +++ b/go.sum @@ -567,8 +567,8 @@ github.com/hashicorp/packer-plugin-qemu v1.0.9 h1:1YKBBzBULYUBWtpAZJTbaLjjZPAdQ6 github.com/hashicorp/packer-plugin-qemu v1.0.9/go.mod h1:BpWIpVpOoPFV9Ppmzq4DP/S0QNoh1R+7DUCqxHdXc+Y= github.com/hashicorp/packer-plugin-salt v1.0.0 h1:bLGdlDG2nLyOzjp/5d2rmZ9XVxDeDUGejOK3wayqEL4= github.com/hashicorp/packer-plugin-salt v1.0.0/go.mod h1:onggPITzeB6LPSW8XlSobu8eI6yj3IMUi5cS6vWnL7s= -github.com/hashicorp/packer-plugin-sdk v0.3.4 h1:fmcHQtCGVa4tY2zeu/UffUHz0f3Y5RYc0OgR4XWf5oA= -github.com/hashicorp/packer-plugin-sdk v0.3.4/go.mod h1:XZRvL9kRqJJtB6rf9Lu2zWLJbf2/4ImWXDjp9O9UQGE= +github.com/hashicorp/packer-plugin-sdk v0.4.0 h1:UyLYe0y02D9wkOQ3FeeZWyFg2+mx2vLuWRGUL5xt50I= +github.com/hashicorp/packer-plugin-sdk v0.4.0/go.mod h1:uNhU3pmjM2ejgHYce/g4J+sa5rh81iYQztpGvGa5FOs= github.com/hashicorp/packer-plugin-tencentcloud v1.0.6 h1:h7thXtVaXZhrF5L+bMcdMktrcV4RufQvJI41y10dHtE= github.com/hashicorp/packer-plugin-tencentcloud v1.0.6/go.mod h1:J7RslhmI+X7EdAVOtEp59X7L3L5VGyZNwiXxDyIpYpI= github.com/hashicorp/packer-plugin-triton v1.0.2 h1:Yla93I7Jl/WXCuCRWYYR0J8/57X4puGLZ07wBn+QS9w= @@ -1014,8 +1014,8 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s= -golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1051,8 +1051,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1120,21 +1120,21 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= @@ -1162,8 +1162,8 @@ golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200711155855-7342f9734a7d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU= -golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From fb17f149f85b68c57b18d90d03e9e45513ae9bba Mon Sep 17 00:00:00 2001 From: Ilya Lukyanov <73885545+jilyaluk@users.noreply.github.com> Date: Sat, 11 Mar 2023 18:42:18 +0400 Subject: [PATCH 058/381] Add external data source plugin as a community integration (#12150) --- website/data/plugins-manifest.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/website/data/plugins-manifest.json b/website/data/plugins-manifest.json index e47b2349cc1..2d0bf328aec 100644 --- a/website/data/plugins-manifest.json +++ b/website/data/plugins-manifest.json @@ -79,6 +79,13 @@ "version": "latest", "isHcpPackerReady": true }, + { + "title": "External", + "path": "external", + "repo": "joomcode/packer-plugin-external", + "version": "latest", + "sourceBranch": "main" + }, { "title": "Git", "path": "git", From 1d455cd1e318983ea0c300328a6ad57dd33c4b98 Mon Sep 17 00:00:00 2001 From: xuyaming0800 Date: Tue, 14 Mar 2023 03:46:23 +0800 Subject: [PATCH 059/381] Register documentation for Volcengine plugin (#12202) --- website/data/plugins-manifest.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/website/data/plugins-manifest.json b/website/data/plugins-manifest.json index 2d0bf328aec..b254d6acaca 100644 --- a/website/data/plugins-manifest.json +++ b/website/data/plugins-manifest.json @@ -337,6 +337,13 @@ "repo": "hashicorp/packer-plugin-virtualbox", "version": "latest" }, + { + "title": "Volcengine", + "path": "volcengine", + "repo": "volcengine/packer-plugin-volcengine", + "pluginTier": "community", + "version": "latest" + }, { "title": "VMware vSphere", "path": "vsphere", From 6d6727b42b5eeea9850b341c39ab5e4a0131117f Mon Sep 17 00:00:00 2001 From: Alan Szlosek Jr Date: Thu, 16 Mar 2023 10:05:18 -0400 Subject: [PATCH 060/381] add meta descriptions (#12315) * add meta descriptions * rework * tweak * clean up hcl description * gt dash --- website/content/guides/1.7-plugin-upgrade.mdx | 2 ++ website/content/guides/1.7-template-upgrade.mdx | 2 ++ website/content/guides/hcl/index.mdx | 2 ++ .../content/guides/packer-on-cicd/build-image-in-cicd.mdx | 2 ++ .../content/guides/packer-on-cicd/build-virtualbox-image.mdx | 2 ++ website/content/guides/packer-on-cicd/index.mdx | 2 ++ website/content/guides/packer-on-cicd/pipelineing-builds.mdx | 5 ++--- website/content/guides/packer-on-cicd/trigger-tfe.mdx | 2 ++ .../guides/packer-on-cicd/upload-images-to-artifact.mdx | 2 ++ 9 files changed, 18 insertions(+), 3 deletions(-) diff --git a/website/content/guides/1.7-plugin-upgrade.mdx b/website/content/guides/1.7-plugin-upgrade.mdx index 71cc577d2bc..9739d054005 100644 --- a/website/content/guides/1.7-plugin-upgrade.mdx +++ b/website/content/guides/1.7-plugin-upgrade.mdx @@ -1,5 +1,7 @@ --- page_title: Upgrading your plugin to use the Packer plugin sdk +description: >- + Learn how to upgrade your plugin to support v1.7.0 and later. --- # Upgrading your plugin to be compatible with Packer v1.7.0 and later diff --git a/website/content/guides/1.7-template-upgrade.mdx b/website/content/guides/1.7-template-upgrade.mdx index cb3ce7d960a..e30bc1e06da 100644 --- a/website/content/guides/1.7-template-upgrade.mdx +++ b/website/content/guides/1.7-template-upgrade.mdx @@ -1,5 +1,7 @@ --- page_title: Upgrading your template to use Packer init +description: >- + Use packer init and the required_plugins block to better control plugin usage within Packer templates. Learn how to update your template to work with these new features. --- # Upgrading your template to be compatible with `packer init` diff --git a/website/content/guides/hcl/index.mdx b/website/content/guides/hcl/index.mdx index 7bdfc2d5a7e..aa8d779b499 100644 --- a/website/content/guides/hcl/index.mdx +++ b/website/content/guides/hcl/index.mdx @@ -1,5 +1,7 @@ --- page_title: Getting started configuring Packer with HCL2 files +description: >- + Use the HCL2 syntax for your Packer templates. Learn about arguments and blocks, comments, and multi-line strings. --- # Introduction to Packer HCL2 diff --git a/website/content/guides/packer-on-cicd/build-image-in-cicd.mdx b/website/content/guides/packer-on-cicd/build-image-in-cicd.mdx index 99d8fe1141b..4efc595153f 100644 --- a/website/content/guides/packer-on-cicd/build-image-in-cicd.mdx +++ b/website/content/guides/packer-on-cicd/build-image-in-cicd.mdx @@ -1,5 +1,7 @@ --- page_title: Build Images in CI/CD +description: >- + Learn how to build Packer images within a continuous integration / continuous delivery pipeline. --- # Build Images in CI/CD diff --git a/website/content/guides/packer-on-cicd/build-virtualbox-image.mdx b/website/content/guides/packer-on-cicd/build-virtualbox-image.mdx index 0dace68ab1e..69e47018409 100644 --- a/website/content/guides/packer-on-cicd/build-virtualbox-image.mdx +++ b/website/content/guides/packer-on-cicd/build-virtualbox-image.mdx @@ -1,5 +1,7 @@ --- page_title: Build a VirtualBox Image with Packer in TeamCity +description: >- + Use Packer to build VirtualBox images in TeamCity. Learn how to provision a bare-metal machine, install dependencies, and create and run a build in TeamCity. --- # Build a VirtualBox Image with Packer in TeamCity diff --git a/website/content/guides/packer-on-cicd/index.mdx b/website/content/guides/packer-on-cicd/index.mdx index 50621a2a973..d083ed47668 100644 --- a/website/content/guides/packer-on-cicd/index.mdx +++ b/website/content/guides/packer-on-cicd/index.mdx @@ -1,5 +1,7 @@ --- page_title: Build Immutable Infrastructure with Packer in CI/CD +description: >- + Learn how to use Packer to build immutable infrastructure within a continuous integration / continuous delivery pipeline. --- # Build Immutable Infrastructure with Packer in CI/CD diff --git a/website/content/guides/packer-on-cicd/pipelineing-builds.mdx b/website/content/guides/packer-on-cicd/pipelineing-builds.mdx index 32f95f3e73e..2a7e6921094 100644 --- a/website/content/guides/packer-on-cicd/pipelineing-builds.mdx +++ b/website/content/guides/packer-on-cicd/pipelineing-builds.mdx @@ -1,8 +1,7 @@ --- page_title: Packer Build Pipelines -description: |- - Here we explore how to break your builds into discrete steps so that your - builds can be shorter and more reliable. +description: >- + Learn how to shorten Packer build times and improve reliability. Start from an ISO, customize using the virtualbox-ovf builder, and improve efficiency. --- # Why Create a Template Pipeline? diff --git a/website/content/guides/packer-on-cicd/trigger-tfe.mdx b/website/content/guides/packer-on-cicd/trigger-tfe.mdx index 13463ccc99a..b43e282a6b2 100644 --- a/website/content/guides/packer-on-cicd/trigger-tfe.mdx +++ b/website/content/guides/packer-on-cicd/trigger-tfe.mdx @@ -1,5 +1,7 @@ --- page_title: Trigger Terraform Enterprise runs +description: >- + Learn how to Terraform Enterprise from your CI/CD pipeline to provision infrastructure. --- # Create Terraform Enterprise Runs diff --git a/website/content/guides/packer-on-cicd/upload-images-to-artifact.mdx b/website/content/guides/packer-on-cicd/upload-images-to-artifact.mdx index f0486e7a214..6728a193382 100644 --- a/website/content/guides/packer-on-cicd/upload-images-to-artifact.mdx +++ b/website/content/guides/packer-on-cicd/upload-images-to-artifact.mdx @@ -1,5 +1,7 @@ --- page_title: Upload VirtualBox Image to S3 +description: >- + Learn how to upload a VirtualBox image built with Packer to S3 within a TeamCity build. --- # Upload VirtualBox Image to S3 From fc0ed2926441ed8c7608dc31491da0e369211ede Mon Sep 17 00:00:00 2001 From: Bryce Kalow Date: Tue, 21 Mar 2023 14:49:21 -0500 Subject: [PATCH 061/381] website: adds content-check command and README update (#12317) --- website/README.md | 58 +- website/package-lock.json | 5253 ++++++++++++++++++++++++++++++------- website/package.json | 6 +- 3 files changed, 4385 insertions(+), 932 deletions(-) diff --git a/website/README.md b/website/README.md index bec714a4ed8..12d457c4d79 100644 --- a/website/README.md +++ b/website/README.md @@ -87,6 +87,16 @@ The significant keys in the YAML frontmatter are: > ⚠️ If there is a need for a `/api/*` url on this website, the url will be changed to `/api-docs/*`, as the `api` folder is reserved by next.js. +### Validating Content + +Content changes are automatically validated against a set of rules as part of the pull request process. If you want to run these checks locally to validate your content before committing your changes, you can run the following command: + +``` +npm run content-check +``` + +If the validation fails, actionable error messages will be displayed to help you address detected issues. + ### Creating New Pages There is currently a small bug with new page creation - if you create a new page and link it up via subnav data while the server is running, it will report an error saying the page was not found. This can be resolved by restarting the server. @@ -95,12 +105,12 @@ There is currently a small bug with new page creation - if you create a new page There are several custom Markdown plugins that are available by default that enhance [standard markdown](https://commonmark.org/) to fit our use cases. This set of plugins introduces a couple instances of custom syntax, and a couple specific pitfalls that are not present by default with markdown, detailed below: -- If you see the symbols `~>`, `->`, `=>`, or `!>`, these represent [custom alerts](https://github.com/hashicorp/remark-plugins/tree/master/plugins/paragraph-custom-alerts#paragraph-custom-alerts). These render as colored boxes to draw the user's attention to some type of aside. +- > **Warning**: We are deprecating the current [paragraph alerts](https://github.com/hashicorp/remark-plugins/tree/master/plugins/paragraph-custom-alerts#paragraph-custom-alerts), in favor of the newer [MDX Inline Alert](#inline-alerts) components. The legacy paragraph alerts are represented by the symbols `~>`, `->`, `=>`, or `!>`. - If you see `@include '/some/path.mdx'`, this is a [markdown include](https://github.com/hashicorp/remark-plugins/tree/master/plugins/include-markdown#include-markdown-plugin). It's worth noting as well that all includes resolve from `website/content/partials` by default, and that changes to partials will not live-reload the website. - If you see `# Headline ((#slug))`, this is an example of an [anchor link alias](https://github.com/hashicorp/remark-plugins/tree/je.anchor-link-adjustments/plugins/anchor-links#anchor-link-aliases). It adds an extra permalink to a headline for compatibility and is removed from the output. - Due to [automatically generated permalinks](https://github.com/hashicorp/remark-plugins/tree/je.anchor-link-adjustments/plugins/anchor-links#anchor-links), any text changes to _headlines_ or _list items that begin with inline code_ can and will break existing permalinks. Be very cautious when changing either of these two text items. - Headlines are fairly self-explanitory, but here's an example of how list items that begin with inline code look. + Headlines are fairly self-explanatory, but here's an example of how to list items that begin with inline code look. ```markdown - this is a normal list item @@ -120,6 +130,44 @@ There are several custom Markdown plugins that are available by default that enh A number of custom [mdx components](https://mdxjs.com/) are available for use within any `.mdx` file. Each one is documented below: +#### Inline Alerts + +There are custom MDX components available to author alert data. [See the full documentation here](https://developer.hashicorp.com/swingset/components/mdxinlinealert). They render as colored boxes to draw the user's attention to some type of aside. + +```mdx +## Alert types + +### Tip + + + To provide general information to the user regarding the current context or + relevant actions. + + +### Highlight + + + To provide general or promotional information to the user prominently. + + +### Note + + + To help users avoid an issue. Provide guidance and actions if possible. + + +### Warning + + + To indicate critical issues that need immediate action or help users + understand something critical. + + +## Title override prop + +To provide general information. +``` + #### Tabs The `Tabs` component creates tabbed content of any type, but is often used for code examples given in different languages. Here's an example of how it looks from the Vagrant documentation website: @@ -551,9 +599,9 @@ It's also worth noting that it is possible to do glob-based redirects, for examp We support the following browsers targeting roughly the versions specified. -| ![Chrome](https://raw.githubusercontent.com/alrra/browser-logos/master/src/chrome/chrome_24x24.png) | ![Firefox](https://raw.githubusercontent.com/alrra/browser-logos/master/src/firefox/firefox_24x24.png) | ![Opera](https://raw.githubusercontent.com/alrra/browser-logos/master/src/opera/opera_24x24.png) | ![Safari](https://raw.githubusercontent.com/alrra/browser-logos/master/src/safari/safari_24x24.png) | ![Internet Explorer](https://raw.githubusercontent.com/alrra/browser-logos/master/src/edge/edge_24x24.png) | -| --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | -| **Latest** | **Latest** | **Latest** | **Latest** | **11+** | +| ![Chrome](https://raw.githubusercontent.com/alrra/browser-logos/main/src/chrome/chrome.svg) | ![Edge](https://raw.githubusercontent.com/alrra/browser-logos/main/src/edge/edge.svg) | ![Opera](https://raw.githubusercontent.com/alrra/browser-logos/main/src/opera/opera.svg) | ![Firefox](https://raw.githubusercontent.com/alrra/browser-logos/main/src/firefox/firefox.svg) | ![Safari](https://raw.githubusercontent.com/alrra/browser-logos/main/src/safari/safari.svg) | +| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- | +| **Latest** | **Latest** | **Latest** | **Latest** | **Latest** | diff --git a/website/package-lock.json b/website/package-lock.json index e7d047e0635..b18174e0193 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -8,7 +8,8 @@ "name": "packer-docs", "version": "1.0.0", "devDependencies": { - "@hashicorp/platform-cli": "^2.1.0", + "@hashicorp/platform-cli": "^2.6.0", + "@hashicorp/platform-content-conformance": "^0.0.10", "dart-linkcheck": "2.0.15", "husky": "4.3.8", "next": "^12.3.1", @@ -209,11 +210,10 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", "dev": true, - "peer": true, "engines": { "node": ">=6.9.0" } @@ -362,6 +362,20 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", @@ -427,6 +441,18 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", @@ -471,7 +497,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -521,26 +546,28 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/runtime": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", - "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz", + "integrity": "sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==", "dev": true, "dependencies": { - "regenerator-runtime": "^0.13.4" + "@babel/helper-plugin-utils": "^7.20.2" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/runtime-corejs3": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz", - "integrity": "sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw==", + "node_modules/@babel/runtime": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", "dev": true, "dependencies": { - "core-js-pure": "^3.20.2", - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.13.11" }, "engines": { "node": ">=6.9.0" @@ -627,43 +654,79 @@ "node": ">=0.1.95" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.2.0.tgz", + "integrity": "sha512-gB8T4H4DEfX2IV9zGDJPOBgP1e/DbfCPDTtEqUMckpvzS1OYtva8JdFYBqMwYk7xAQ429WGF/UPqn8uQ//h2vQ==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.4.0.tgz", + "integrity": "sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", - "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz", + "integrity": "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.1", - "globals": "^13.9.0", + "espree": "^9.5.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz", + "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==", + "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@hashicorp/platform-cli": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@hashicorp/platform-cli/-/platform-cli-2.1.0.tgz", - "integrity": "sha512-orPreFHhkFXd84zouNnHvx6C2pT8cM2tTxwPEDkTDx7C2G+GRCQxKtBq+YXxLGj6AZOMa6cuF58eecEWJRW6TA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@hashicorp/platform-cli/-/platform-cli-2.6.0.tgz", + "integrity": "sha512-nMO7Uiy/A5CT/BCE9RyQt6/Uci7bxwTesxCNWkXlciyqlIrz9WmBa9hr710IiMoDzrzQ1tL6AgFIeTbXs4RTqA==", "dev": true, "dependencies": { "@hashicorp/platform-cms": "0.3.0", - "@typescript-eslint/eslint-plugin": "5.10.2", - "@typescript-eslint/parser": "5.10.2", + "@typescript-eslint/eslint-plugin": "^5.48.0", + "@typescript-eslint/parser": "^5.48.0", "chalk": "4.1.0", "commander": "7.2.0", "ejs": "3.1.5", - "eslint": "8.8.0", - "eslint-config-next": "12.0.10", - "eslint-config-prettier": "8.3.0", - "eslint-plugin-jsx-a11y": "6.5.1", - "eslint-plugin-prettier": "4.0.0", + "eslint": "^8.31.0", + "eslint-config-next": "^13.1.1", + "eslint-config-prettier": "^8.6.0", + "eslint-plugin-jsx-a11y": "^6.6.1", + "eslint-plugin-prettier": "^4.2.1", "fs-extra": "9.0.1", "globby": "11.0.1", "inquirer": "7.3.3", @@ -708,20 +771,358 @@ "rivet-graphql": "0.3.1" } }, + "node_modules/@hashicorp/platform-content-conformance": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/@hashicorp/platform-content-conformance/-/platform-content-conformance-0.0.10.tgz", + "integrity": "sha512-vXLbd2w9phS4JfFyh17jCiyu+LXVonTfb7WEUK2eMlOL/wxe2umyJvEQaJNzD5bwyYC8LuXGA5JkbnPXnU5ZQg==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0", + "flat": "^5.0.2", + "globby": "^13.1.2", + "mdast-util-to-string": "^3.1.0", + "remark": "12.0.1", + "remark-mdx": "^1.6.22", + "unified-lint-rule": "^2.1.1", + "unist-util-stringify-position": "^3.0.2", + "unist-util-visit": "^4.1.1", + "vfile": "^5.3.6", + "vfile-matter": "^4.0.0", + "vfile-reporter": "^7.0.4", + "vfile-reporter-json": "^3.2.0", + "vfile-statistics": "^2.0.0", + "yaml": "^2.1.3", + "yargs": "^17.4.1", + "zod": "^3.19.1" + }, + "bin": { + "hc-content": "dist/cli.js" + } + }, + "node_modules/@hashicorp/platform-content-conformance/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@hashicorp/platform-content-conformance/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@hashicorp/platform-content-conformance/node_modules/globby": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@hashicorp/platform-content-conformance/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@hashicorp/platform-content-conformance/node_modules/mdast-util-to-string": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.1.tgz", + "integrity": "sha512-tGvhT94e+cVnQt8JWE9/b3cUQZWS732TJxXHktvP+BYo62PpYD53Ls/6cC60rW21dW+txxiM4zMdc6abASvZKA==", + "dev": true, + "dependencies": { + "@types/mdast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hashicorp/platform-content-conformance/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@hashicorp/platform-content-conformance/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@hashicorp/platform-content-conformance/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/@hashicorp/platform-content-conformance/node_modules/remark": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/remark/-/remark-12.0.1.tgz", + "integrity": "sha512-gS7HDonkdIaHmmP/+shCPejCEEW+liMp/t/QwmF0Xt47Rpuhl32lLtDV1uKWvGoq+kxr5jSgg5oAIpGuyULjUw==", + "dev": true, + "dependencies": { + "remark-parse": "^8.0.0", + "remark-stringify": "^8.0.0", + "unified": "^9.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hashicorp/platform-content-conformance/node_modules/remark-parse": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", + "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", + "dev": true, + "dependencies": { + "ccount": "^1.0.0", + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^2.0.0", + "vfile-location": "^3.0.0", + "xtend": "^4.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hashicorp/platform-content-conformance/node_modules/remark-stringify": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.1.1.tgz", + "integrity": "sha512-q4EyPZT3PcA3Eq7vPpT6bIdokXzFGp9i85igjmhRyXWmPs0Y6/d2FYwUNotKAWyLch7g0ASZJn/KHHcHZQ163A==", + "dev": true, + "dependencies": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^2.0.0", + "mdast-util-compact": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^3.0.0", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hashicorp/platform-content-conformance/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@hashicorp/platform-content-conformance/node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hashicorp/platform-content-conformance/node_modules/vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hashicorp/platform-content-conformance/node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@hashicorp/platform-content-conformance/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@hashicorp/platform-content-conformance/node_modules/yaml": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", + "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@hashicorp/platform-content-conformance/node_modules/yargs": { + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@hashicorp/platform-content-conformance/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@hashicorp/platform-content-conformance/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", @@ -1107,6 +1508,16 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@mdx-js/util": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz", + "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/@next/env": { "version": "12.3.1", "resolved": "https://registry.npmjs.org/@next/env/-/env-12.3.1.tgz", @@ -1114,9 +1525,9 @@ "dev": true }, "node_modules/@next/eslint-plugin-next": { - "version": "12.0.10", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.0.10.tgz", - "integrity": "sha512-PbGRnV5HGSfRGLjf8uTh1MaWgLwnjKjWiGVjK752ifITJbZ28/5AmLAFT2shDYeux8BHgpgVll5QXu7GN3YLFw==", + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.2.4.tgz", + "integrity": "sha512-ck1lI+7r1mMJpqLNa3LJ5pxCfOB1lfJncKmRJeJxcJqcngaFwylreLP7da6Rrjr6u2gVRTfmnkSkjc80IiQCwQ==", "dev": true, "dependencies": { "glob": "7.1.7" @@ -1365,18 +1776,61 @@ "node": ">= 8" } }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.1.3.tgz", - "integrity": "sha512-WiBSI6JBIhC6LRIsB2Kwh8DsGTlbBU+mLRxJmAe3LjHTdkDpwIbEOZgoXBbZilk/vlfjK8i6nKRAvIRn1XaIMw==", - "dev": true - }, - "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "node_modules/@pkgr/utils": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz", + "integrity": "sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==", "dev": true, - "peer": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "is-glob": "^4.0.3", + "open": "^8.4.0", + "picocolors": "^1.0.0", + "tiny-glob": "^0.2.9", + "tslib": "^2.4.0" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/@pkgr/utils/node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@pkgr/utils/node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "dev": true + }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz", + "integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "peer": true, "dependencies": { "type-detect": "4.0.8" } @@ -1532,7 +1986,7 @@ "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, "node_modules/@types/mdast": { @@ -1575,6 +2029,12 @@ "dev": true, "peer": true }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, "node_modules/@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", @@ -1582,6 +2042,12 @@ "dev": true, "peer": true }, + "node_modules/@types/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-dPWnWsf+kzIG140B8z2w3fr5D03TLWbOAFQl45xUpI3vcizeXriNR5VYkWZ+WTMsUHqZ9Xlt3hrxGNANFyNQfw==", + "dev": true + }, "node_modules/@types/unist": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", @@ -1604,19 +2070,20 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.10.2.tgz", - "integrity": "sha512-4W/9lLuE+v27O/oe7hXJKjNtBLnZE8tQAFpapdxwSVHqtmIoPB1gph3+ahNwVuNL37BX7YQHyGF9Xv6XCnIX2Q==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.55.0.tgz", + "integrity": "sha512-IZGc50rtbjk+xp5YQoJvmMPmJEYoC53SiKPXyqWfv15XoD2Y5Kju6zN0DwlmaGJp1Iw33JsWJcQ7nw0lGCGjVg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.10.2", - "@typescript-eslint/type-utils": "5.10.2", - "@typescript-eslint/utils": "5.10.2", - "debug": "^4.3.2", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.2.0", - "semver": "^7.3.5", + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.55.0", + "@typescript-eslint/type-utils": "5.55.0", + "@typescript-eslint/utils": "5.55.0", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { @@ -1637,15 +2104,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.10.2.tgz", - "integrity": "sha512-JaNYGkaQVhP6HNF+lkdOr2cAs2wdSZBoalE22uYWq8IEv/OVH0RksSGydk+sW8cLoSeYmC+OHvRyv2i4AQ7Czg==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.55.0.tgz", + "integrity": "sha512-ppvmeF7hvdhUUZWSd2EEWfzcFkjJzgNQzVST22nzg958CR+sphy8A6K7LXQZd6V75m1VKjp+J4g/PCEfSCmzhw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.10.2", - "@typescript-eslint/types": "5.10.2", - "@typescript-eslint/typescript-estree": "5.10.2", - "debug": "^4.3.2" + "@typescript-eslint/scope-manager": "5.55.0", + "@typescript-eslint/types": "5.55.0", + "@typescript-eslint/typescript-estree": "5.55.0", + "debug": "^4.3.4" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1664,13 +2131,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.10.2.tgz", - "integrity": "sha512-39Tm6f4RoZoVUWBYr3ekS75TYgpr5Y+X0xLZxXqcZNDWZdJdYbKd3q2IR4V9y5NxxiPu/jxJ8XP7EgHiEQtFnw==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.55.0.tgz", + "integrity": "sha512-OK+cIO1ZGhJYNCL//a3ROpsd83psf4dUJ4j7pdNVzd5DmIk+ffkuUIX2vcZQbEW/IR41DYsfJTB19tpCboxQuw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.10.2", - "@typescript-eslint/visitor-keys": "5.10.2" + "@typescript-eslint/types": "5.55.0", + "@typescript-eslint/visitor-keys": "5.55.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1681,13 +2148,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.10.2.tgz", - "integrity": "sha512-uRKSvw/Ccs5FYEoXW04Z5VfzF2iiZcx8Fu7DGIB7RHozuP0VbKNzP1KfZkHBTM75pCpsWxIthEH1B33dmGBKHw==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.55.0.tgz", + "integrity": "sha512-ObqxBgHIXj8rBNm0yh8oORFrICcJuZPZTqtAFh0oZQyr5DnAHZWfyw54RwpEEH+fD8suZaI0YxvWu5tYE/WswA==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.10.2", - "debug": "^4.3.2", + "@typescript-eslint/typescript-estree": "5.55.0", + "@typescript-eslint/utils": "5.55.0", + "debug": "^4.3.4", "tsutils": "^3.21.0" }, "engines": { @@ -1707,9 +2175,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.10.2.tgz", - "integrity": "sha512-Qfp0qk/5j2Rz3p3/WhWgu4S1JtMcPgFLnmAKAW061uXxKSa7VWKZsDXVaMXh2N60CX9h6YLaBoy9PJAfCOjk3w==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.55.0.tgz", + "integrity": "sha512-M4iRh4AG1ChrOL6Y+mETEKGeDnT7Sparn6fhZ5LtVJF1909D5O4uqK+C5NPbLmpfZ0XIIxCdwzKiijpZUOvOug==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1720,17 +2188,17 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.2.tgz", - "integrity": "sha512-WHHw6a9vvZls6JkTgGljwCsMkv8wu8XU8WaYKeYhxhWXH/atZeiMW6uDFPLZOvzNOGmuSMvHtZKd6AuC8PrwKQ==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.55.0.tgz", + "integrity": "sha512-I7X4A9ovA8gdpWMpr7b1BN9eEbvlEtWhQvpxp/yogt48fy9Lj3iE3ild/1H3jKBBIYj5YYJmS2+9ystVhC7eaQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.10.2", - "@typescript-eslint/visitor-keys": "5.10.2", - "debug": "^4.3.2", - "globby": "^11.0.4", + "@typescript-eslint/types": "5.55.0", + "@typescript-eslint/visitor-keys": "5.55.0", + "debug": "^4.3.4", + "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { @@ -1767,17 +2235,19 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.10.2.tgz", - "integrity": "sha512-vuJaBeig1NnBRkf7q9tgMLREiYD7zsMrsN1DA3wcoMDvr3BTFiIpKjGiYZoKPllfEwN7spUjv7ZqD+JhbVjEPg==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.55.0.tgz", + "integrity": "sha512-FkW+i2pQKcpDC3AY6DU54yl8Lfl14FVGYDgBTyGKB75cCwV3KpkpTMFi9d9j2WAJ4271LR2HeC5SEWF/CZmmfw==", "dev": true, "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.10.2", - "@typescript-eslint/types": "5.10.2", - "@typescript-eslint/typescript-estree": "5.10.2", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.55.0", + "@typescript-eslint/types": "5.55.0", + "@typescript-eslint/typescript-estree": "5.55.0", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "semver": "^7.3.7" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1791,13 +2261,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.2.tgz", - "integrity": "sha512-zHIhYGGGrFJvvyfwHk5M08C5B5K4bewkm+rrvNTKk1/S15YHR+SA/QUF8ZWscXSfEaB8Nn2puZj+iHcoxVOD/Q==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.55.0.tgz", + "integrity": "sha512-q2dlHHwWgirKh1D3acnuApXG+VNXpEY5/AwRxDVuEQpxWaB0jCDe0jFMVMALJ3ebSfuOVE8/rMS+9ZOYGg1GWw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.10.2", - "eslint-visitor-keys": "^3.0.0" + "@typescript-eslint/types": "5.55.0", + "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1815,9 +2285,9 @@ "peer": true }, "node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -1992,16 +2462,12 @@ "dev": true }, "node_modules/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "dev": true, "dependencies": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - }, - "engines": { - "node": ">=6.0" + "deep-equal": "^2.0.5" } }, "node_modules/arr-diff": { @@ -2034,16 +2500,29 @@ "node": ">=0.10.0" } }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", "is-string": "^1.0.7" }, "engines": { @@ -2073,14 +2552,14 @@ } }, "node_modules/array.prototype.flat": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", - "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", "es-shim-unscopables": "^1.0.0" }, "engines": { @@ -2091,14 +2570,14 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", - "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", "es-shim-unscopables": "^1.0.0" }, "engines": { @@ -2108,6 +2587,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", + "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + } + }, "node_modules/arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -2130,7 +2622,7 @@ "node_modules/ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", "dev": true }, "node_modules/astral-regex": { @@ -2221,20 +2713,35 @@ "url": "https://opencollective.com/postcss/" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/axe-core": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz", - "integrity": "sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==", + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.6.3.tgz", + "integrity": "sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", - "dev": true + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", + "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } }, "node_modules/babel-jest": { "version": "26.6.3", @@ -2592,6 +3099,16 @@ "node": "6.* || 8.* || >= 10.*" } }, + "node_modules/ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/chalk": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", @@ -2628,6 +3145,16 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/character-entities-html4": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", + "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/character-entities-legacy": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", @@ -2885,6 +3412,16 @@ "node": ">= 0.12.0" } }, + "node_modules/collapse-white-space": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", + "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/collect-v8-coverage": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", @@ -2989,17 +3526,6 @@ "node": ">=0.10.0" } }, - "node_modules/core-js-pure": { - "version": "3.22.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.22.1.tgz", - "integrity": "sha512-TChjCtgcMDc8t12RiwAsThjqrS/VpBlEvDgL009ot4HESzBo3h2FSZNa6ZS1nWKZEPDoulnszxUll9n0/spflQ==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/cosmiconfig": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", @@ -3175,6 +3701,40 @@ "node": ">=0.10" } }, + "node_modules/deep-equal": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz", + "integrity": "sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.2", + "get-intrinsic": "^1.1.3", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-equal/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -3191,10 +3751,19 @@ "node": ">=0.10.0" } }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", "dev": true, "dependencies": { "has-property-descriptors": "^1.0.0", @@ -3353,6 +3922,12 @@ "domelementtype": "1" } }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "node_modules/ejs": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.5.tgz", @@ -3403,6 +3978,19 @@ "once": "^1.4.0" } }, + "node_modules/enhanced-resolve": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", @@ -3431,31 +4019,45 @@ } }, "node_modules/es-abstract": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.5.tgz", - "integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==", + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", + "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", "dev": true, "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.0", "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", + "object-inspect": "^1.12.3", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" }, "engines": { "node": ">= 0.4" @@ -3464,6 +4066,46 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-get-iterator/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-shim-unscopables": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", @@ -3587,46 +4229,51 @@ } }, "node_modules/eslint": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.8.0.tgz", - "integrity": "sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.0.5", - "@humanwhocodes/config-array": "^0.9.2", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz", + "integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.1", + "@eslint/js": "8.36.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.0", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.2.0", - "espree": "^9.3.0", - "esquery": "^1.4.0", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.5.0", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" @@ -3639,24 +4286,23 @@ } }, "node_modules/eslint-config-next": { - "version": "12.0.10", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.0.10.tgz", - "integrity": "sha512-l1er6mwSo1bltjLwmd71p5BdT6k/NQxV1n4lKZI6xt3MDMrq7ChUBr+EecxOry8GC/rCRUtPpH8Ygs0BJc5YLg==", + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.2.4.tgz", + "integrity": "sha512-lunIBhsoeqw6/Lfkd6zPt25w1bn0znLA/JCL+au1HoEpSb4/PpsOYsYtgV/q+YPsoKIOzFyU5xnb04iZnXjUvg==", "dev": true, "dependencies": { - "@next/eslint-plugin-next": "12.0.10", - "@rushstack/eslint-patch": "^1.0.8", - "@typescript-eslint/parser": "^5.0.0", - "eslint-import-resolver-node": "^0.3.4", - "eslint-import-resolver-typescript": "^2.4.0", - "eslint-plugin-import": "^2.25.2", + "@next/eslint-plugin-next": "13.2.4", + "@rushstack/eslint-patch": "^1.1.3", + "@typescript-eslint/parser": "^5.42.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.26.0", "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.27.0", - "eslint-plugin-react-hooks": "^4.3.0" + "eslint-plugin-react": "^7.31.7", + "eslint-plugin-react-hooks": "^4.5.0" }, "peerDependencies": { "eslint": "^7.23.0 || ^8.0.0", - "next": ">=10.2.0", "typescript": ">=3.3.1" }, "peerDependenciesMeta": { @@ -3666,9 +4312,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", - "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.7.0.tgz", + "integrity": "sha512-HHVXLSlVUhMSmyW4ZzEuvjpwqamgmlfkutD53cYXLikh4pt/modINRcCIApJ84czDxM4GZInwUrromsDdTImTA==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -3678,13 +4324,14 @@ } }, "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", "dev": true, "dependencies": { "debug": "^3.2.7", - "resolve": "^1.20.0" + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" } }, "node_modules/eslint-import-resolver-node/node_modules/debug": { @@ -3696,57 +4343,94 @@ "ms": "^2.1.1" } }, + "node_modules/eslint-import-resolver-node/node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/eslint-import-resolver-typescript": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz", - "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.3.tgz", + "integrity": "sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==", "dev": true, "dependencies": { "debug": "^4.3.4", - "glob": "^7.2.0", + "enhanced-resolve": "^5.10.0", + "get-tsconfig": "^4.2.0", + "globby": "^13.1.2", + "is-core-module": "^2.10.0", "is-glob": "^4.0.3", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" + "synckit": "^0.8.4" }, "engines": { - "node": ">=4" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" }, "peerDependencies": { "eslint": "*", "eslint-plugin-import": "*" } }, - "node_modules/eslint-import-resolver-typescript/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "node_modules/eslint-import-resolver-typescript/node_modules/globby": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" }, "engines": { - "node": "*" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint-import-resolver-typescript/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint-module-utils": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", - "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", "dev": true, "dependencies": { - "debug": "^3.2.7", - "find-up": "^2.1.0" + "debug": "^3.2.7" }, "engines": { "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, "node_modules/eslint-module-utils/node_modules/debug": { @@ -3759,23 +4443,25 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", "dev": true, "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", "has": "^1.0.3", - "is-core-module": "^2.8.1", + "is-core-module": "^2.11.0", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", "tsconfig-paths": "^3.14.1" }, "engines": { @@ -3786,12 +4472,12 @@ } }, "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "node_modules/eslint-plugin-import/node_modules/doctrine": { @@ -3806,48 +4492,81 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", - "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==", + "node_modules/eslint-plugin-import/node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, "dependencies": { - "@babel/runtime": "^7.16.3", - "aria-query": "^4.2.2", - "array-includes": "^3.1.4", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.3.5", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.7", - "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.2.1", - "language-tags": "^1.0.5", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=4.0" + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", + "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.20.7", + "aria-query": "^5.1.3", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "ast-types-flow": "^0.0.7", + "axe-core": "^4.6.2", + "axobject-query": "^3.1.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "has": "^1.0.3", + "jsx-ast-utils": "^3.3.3", + "language-tags": "=1.0.5", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=4.0" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/eslint-plugin-prettier": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", - "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=12.0.0" }, "peerDependencies": { "eslint": ">=7.28.0", @@ -3860,25 +4579,26 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.29.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz", - "integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==", + "version": "7.32.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", + "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", "dev": true, "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flatmap": "^1.2.5", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", "doctrine": "^2.1.0", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.0", - "object.values": "^1.1.5", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.3", + "resolve": "^2.0.0-next.4", "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.6" + "string.prototype.matchall": "^4.0.8" }, "engines": { "node": ">=4" @@ -3888,9 +4608,9 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.4.0.tgz", - "integrity": "sha512-U3RVIfdzJaeKDQKEJbz5p3NW8/L80PCATJAfuojwbaEL+gBjfGdhUcGde+WGUW46Q5sr/NgxevsIiDtNXrvZaQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", "dev": true, "engines": { "node": ">=10" @@ -3912,13 +4632,17 @@ } }, "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", "dev": true, "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3955,33 +4679,6 @@ "node": ">=4.0" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint-visitor-keys": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", @@ -4016,18 +4713,67 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz", + "integrity": "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==", "dev": true, "dependencies": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esprima": { @@ -4045,9 +4791,9 @@ } }, "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -4573,6 +5319,15 @@ "node": ">=4" } }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, "node_modules/flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -4592,6 +5347,15 @@ "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -4671,11 +5435,23 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/functions-have-names": { "version": "1.2.3", @@ -4700,20 +5476,19 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, - "peer": true, "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "dev": true, "dependencies": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4779,6 +5554,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-tsconfig": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.4.0.tgz", + "integrity": "sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -4860,9 +5644,9 @@ } }, "node_modules/globals": { - "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -4874,6 +5658,27 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, "node_modules/globby": { "version": "11.0.1", "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", @@ -4900,6 +5705,12 @@ "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", "dev": true }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, "node_modules/gonzales-pe": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", @@ -4915,12 +5726,30 @@ "node": ">=0.6.0" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, "node_modules/graphql": { "version": "15.8.0", "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", @@ -5003,6 +5832,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -5430,12 +6271,12 @@ } }, "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.0", + "get-intrinsic": "^1.2.0", "has": "^1.0.3", "side-channel": "^1.0.4" }, @@ -5475,6 +6316,15 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-alphanumeric": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", + "integrity": "sha512-ZmRL7++ZkcMOfDuWZuMJyIVLr2keE1o/DeNWh1EmgqGhUcV+9BIVsx0BcSBOHTZqzjs4+dISzr2KAeBEWGgXeA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-alphanumerical": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", @@ -5489,6 +6339,36 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -5547,9 +6427,9 @@ } }, "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "engines": { "node": ">= 0.4" @@ -5571,9 +6451,9 @@ } }, "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "dependencies": { "has": "^1.0.3" @@ -5713,6 +6593,15 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -5758,6 +6647,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -5812,6 +6710,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", @@ -5866,6 +6773,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -5896,6 +6822,15 @@ "node": ">=8" } }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -5908,16 +6843,49 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", + "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", + "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -6627,6 +7595,16 @@ "node": ">= 10.13.0" } }, + "node_modules/js-sdsl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -6725,7 +7703,7 @@ "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "node_modules/json5": { @@ -6762,13 +7740,13 @@ } }, "node_modules/jsx-ast-utils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz", - "integrity": "sha512-HDAyJ4MNQBboGpUnHAVUNJs6X0lh058s6FuixsFGP7MgJYpD6Vasd6nzSG5iIfXu1zAYlHJ/zsOKNlrenTUBnw==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", "dev": true, "dependencies": { - "array-includes": "^3.1.4", - "object.assign": "^4.1.2" + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" }, "engines": { "node": ">=4.0" @@ -6800,15 +7778,15 @@ "dev": true }, "node_modules/language-subtag-registry": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", - "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==", + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", "dev": true }, "node_modules/language-tags": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", "dev": true, "dependencies": { "language-subtag-registry": "~0.3.2" @@ -7226,6 +8204,29 @@ "node": ">=0.10.0" } }, + "node_modules/markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", + "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/markdown-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "dev": true, + "dependencies": { + "repeat-string": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/mathml-tag-names": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", @@ -7236,6 +8237,48 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/mdast-util-compact": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz", + "integrity": "sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA==", + "dev": true, + "dependencies": { + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-compact/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-compact/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/mdast-util-from-markdown": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", @@ -7543,6 +8586,12 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "node_modules/next": { "version": "12.3.1", "resolved": "https://registry.npmjs.org/next/-/next-12.3.1.tgz", @@ -7747,7 +8796,7 @@ "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -7853,14 +8902,30 @@ } }, "node_modules/object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -7884,14 +8949,14 @@ } }, "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, "engines": { @@ -7902,28 +8967,28 @@ } }, "node_modules/object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "engines": { "node": ">= 0.4" } }, "node_modules/object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "engines": { "node": ">= 0.4" @@ -7933,13 +8998,13 @@ } }, "node_modules/object.hasown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", - "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", "dev": true, "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7959,14 +9024,14 @@ } }, "node_modules/object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "engines": { "node": ">= 0.4" @@ -8991,9 +10056,9 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "dev": true }, "node_modules/regex-not": { @@ -9027,18 +10092,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/remark": { "version": "13.0.0", "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", @@ -9054,6 +10107,136 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/remark-mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", + "integrity": "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==", + "dev": true, + "dependencies": { + "@babel/core": "7.12.9", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-proposal-object-rest-spread": "7.12.1", + "@babel/plugin-syntax-jsx": "7.12.1", + "@mdx-js/util": "1.6.22", + "is-alphabetical": "1.0.4", + "remark-parse": "8.0.3", + "unified": "9.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx/node_modules/@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/remark-mdx/node_modules/@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "node_modules/remark-mdx/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/remark-mdx/node_modules/remark-parse": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", + "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", + "dev": true, + "dependencies": { + "ccount": "^1.0.0", + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^2.0.0", + "vfile-location": "^3.0.0", + "xtend": "^4.0.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/remark-mdx/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remark-mdx/node_modules/unified": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "dev": true, + "dependencies": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remark-parse": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", @@ -9111,7 +10294,6 @@ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -9323,6 +10505,20 @@ "ret": "~0.1.10" } }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -10294,6 +11490,16 @@ "node": ">=8" } }, + "node_modules/state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", + "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -10405,6 +11611,18 @@ "node": ">=0.10.0" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -10478,50 +11696,84 @@ "dev": true }, "node_modules/string.prototype.matchall": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", - "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", "has-symbols": "^1.0.3", "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.1", + "regexp.prototype.flags": "^1.4.3", "side-channel": "^1.0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/stringify-entities": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz", + "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==", + "dev": true, + "dependencies": { + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/stringify-object": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", @@ -10931,8 +12183,30 @@ "dev": true, "peer": true }, - "node_modules/table": { - "version": "6.8.0", + "node_modules/synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "dev": true, + "dependencies": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, + "node_modules/synckit/node_modules/tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "dev": true + }, + "node_modules/table": { + "version": "6.8.0", "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", "integrity": "sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==", "dev": true, @@ -10986,6 +12260,15 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", @@ -11021,7 +12304,7 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "node_modules/throat": { @@ -11037,6 +12320,16 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, "node_modules/tlds": { "version": "1.231.0", "resolved": "https://registry.npmjs.org/tlds/-/tlds-1.231.0.tgz", @@ -11173,6 +12466,13 @@ "node": ">=8" } }, + "node_modules/trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==", + "deprecated": "Use String.prototype.trim() instead", + "dev": true + }, "node_modules/trim-newlines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", @@ -11182,6 +12482,16 @@ "node": ">=8" } }, + "node_modules/trim-trailing-lines": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", + "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/trough": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", @@ -11221,13 +12531,13 @@ } }, "node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", "dev": true, "dependencies": { "@types/json5": "^0.0.29", - "json5": "^1.0.1", + "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" } @@ -11247,7 +12557,7 @@ "node_modules/tsconfig-paths/node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, "engines": { "node": ">=4" @@ -11308,6 +12618,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -11332,20 +12656,34 @@ } }, "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/unherit": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", + "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/unified": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", @@ -11364,6 +12702,116 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unified-lint-rule": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-2.1.1.tgz", + "integrity": "sha512-vsLHyLZFstqtGse2gvrGwasOmH8M2y+r2kQMoDSWzSqUkQx2MjHjvZuGSv5FUaiv4RQO1bHRajy7lSGp7XWq5A==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "trough": "^2.0.0", + "unified": "^10.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-lint-rule/node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/unified-lint-rule/node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/unified-lint-rule/node_modules/trough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/unified-lint-rule/node_modules/unified": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-lint-rule/node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-lint-rule/node_modules/vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unified-lint-rule/node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/unified/node_modules/is-plain-obj": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", @@ -11422,6 +12870,48 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unist-util-remove-position": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", + "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", + "dev": true, + "dependencies": { + "unist-util-visit": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position/node_modules/unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/unist-util-stringify-position": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", @@ -11435,6 +12925,61 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/universalify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", @@ -11491,142 +13036,509 @@ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true, - "peer": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true, + "peer": true + }, + "node_modules/url-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-5.0.0.tgz", + "integrity": "sha512-O08GjTiAFNsSlrUWfqF1jH0H1W3m35ZyadHrGv5krdnmPPoxP27oDTqux/579PtaroiSGm5yma6KT1mHFH6Y/g==", + "dev": true, + "dependencies": { + "ip-regex": "^4.1.0", + "tlds": "^1.203.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "dev": true, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "optional": true, + "peer": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", + "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "dev": true + }, + "node_modules/v8-to-istanbul": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", + "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", + "dev": true, + "peer": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "peer": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", + "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-matter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/vfile-matter/-/vfile-matter-4.0.1.tgz", + "integrity": "sha512-ZeACdaxCOxhePpoLO4A5y/VgI9EuWBXu+sUk65aQ7lXBZDFg7X0tuOzigLJUtsQzazFt6K2m9SdlDxZdfL5vVg==", + "dev": true, + "dependencies": { + "is-buffer": "^2.0.0", + "vfile": "^5.0.0", + "yaml": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-matter/node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-matter/node_modules/vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-matter/node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-matter/node_modules/yaml": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", + "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-reporter": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-7.0.5.tgz", + "integrity": "sha512-NdWWXkv6gcd7AZMvDomlQbK3MqFWL1RlGzMn++/O2TI+68+nqxCPTvLugdOtfSzXmjh+xUyhp07HhlrbJjT+mw==", + "dev": true, + "dependencies": { + "@types/supports-color": "^8.0.0", + "string-width": "^5.0.0", + "supports-color": "^9.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile": "^5.0.0", + "vfile-message": "^3.0.0", + "vfile-sort": "^3.0.0", + "vfile-statistics": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-reporter-json": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/vfile-reporter-json/-/vfile-reporter-json-3.3.0.tgz", + "integrity": "sha512-/zgRtjxQ2UGJn+HViiZ7+nIXtUzkkXFQum3BmaS/bSyr10P0X41ETRqqwMJ95RtbKUah3m7pKb6oS1eZeXXHzQ==", + "dev": true, + "dependencies": { + "vfile": "^5.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-reporter-json/node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-reporter-json/node_modules/vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-reporter-json/node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-reporter/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/vfile-reporter/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vfile-reporter/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/vfile-reporter/node_modules/supports-color": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.3.1.tgz", + "integrity": "sha512-knBY82pjmnIzK3NifMo3RxEIRD9E0kIzV4BKcyTZ9+9kWgLMxd4PrsTSMoFQUabgRBbF8KOLRDCyKgNV+iK44Q==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "node_modules/vfile-reporter/node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", "dev": true, "dependencies": { - "punycode": "^2.1.0" + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "node_modules/vfile-reporter/node_modules/vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", "dev": true, - "peer": true + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, - "node_modules/url-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-5.0.0.tgz", - "integrity": "sha512-O08GjTiAFNsSlrUWfqF1jH0H1W3m35ZyadHrGv5krdnmPPoxP27oDTqux/579PtaroiSGm5yma6KT1mHFH6Y/g==", + "node_modules/vfile-reporter/node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", "dev": true, "dependencies": { - "ip-regex": "^4.1.0", - "tlds": "^1.203.0" + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "node_modules/vfile-sort": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-3.0.1.tgz", + "integrity": "sha512-1os1733XY6y0D5x0ugqSeaVJm9lYgj0j5qdcZQFyxlZOSy1jYarL77lLyb5gK4Wqr1d5OxmuyflSO3zKyFnTFw==", "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "vfile": "^5.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "node_modules/vfile-sort/node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", "dev": true, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "node_modules/vfile-sort/node_modules/vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", "dev": true, - "optional": true, - "peer": true, - "bin": { - "uuid": "dist/bin/uuid" + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "node_modules/v8-to-istanbul": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", - "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", + "node_modules/vfile-sort/node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", "dev": true, - "peer": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" }, - "engines": { - "node": ">=10.10.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "node_modules/vfile-statistics": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-2.0.1.tgz", + "integrity": "sha512-W6dkECZmP32EG/l+dp2jCLdYzmnDBIw6jwiLZSER81oR5AHRcVqL+k3Z+pfH1R73le6ayDkJRMk0sutj1bMVeg==", "dev": true, - "peer": true, - "engines": { - "node": ">= 8" + "dependencies": { + "vfile": "^5.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "node_modules/vfile-statistics/node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", "dev": true, "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/vfile": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", - "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "node_modules/vfile-statistics/node_modules/vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", "dev": true, "dependencies": { "@types/unist": "^2.0.0", "is-buffer": "^2.0.0", - "unist-util-stringify-position": "^2.0.0", - "vfile-message": "^2.0.0" + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-message": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", - "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "node_modules/vfile-statistics/node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", "dev": true, "dependencies": { "@types/unist": "^2.0.0", - "unist-util-stringify-position": "^2.0.0" + "unist-util-stringify-position": "^3.0.0" }, "funding": { "type": "opencollective", @@ -11739,6 +13651,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", @@ -11752,6 +13679,26 @@ "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", "dev": true }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -11832,6 +13779,15 @@ "dev": true, "peer": true }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, "node_modules/y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", @@ -11968,6 +13924,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zod": { + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", + "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "node_modules/zwitch": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", @@ -12128,11 +14093,10 @@ } }, "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true, - "peer": true + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true }, "@babel/helper-simple-access": { "version": "7.17.7", @@ -12244,6 +14208,17 @@ "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", "dev": true }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + } + }, "@babel/plugin-syntax-async-generators": { "version": "7.8.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", @@ -12294,6 +14269,15 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, + "@babel/plugin-syntax-jsx": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, "@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", @@ -12329,7 +14313,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", "dev": true, - "peer": true, "requires": { "@babel/helper-plugin-utils": "^7.8.0" } @@ -12364,23 +14347,22 @@ "@babel/helper-plugin-utils": "^7.14.5" } }, - "@babel/runtime": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", - "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", + "@babel/plugin-transform-parameters": { + "version": "7.21.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz", + "integrity": "sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==", "dev": true, "requires": { - "regenerator-runtime": "^0.13.4" + "@babel/helper-plugin-utils": "^7.20.2" } }, - "@babel/runtime-corejs3": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz", - "integrity": "sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw==", + "@babel/runtime": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", + "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", "dev": true, "requires": { - "core-js-pure": "^3.20.2", - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.13.11" } }, "@babel/template": { @@ -12448,40 +14430,61 @@ "minimist": "^1.2.0" } }, + "@eslint-community/eslint-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.2.0.tgz", + "integrity": "sha512-gB8T4H4DEfX2IV9zGDJPOBgP1e/DbfCPDTtEqUMckpvzS1OYtva8JdFYBqMwYk7xAQ429WGF/UPqn8uQ//h2vQ==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.4.0.tgz", + "integrity": "sha512-A9983Q0LnDGdLPjxyXQ00sbV+K+O+ko2Dr+CZigbHWtX9pNfxlaBkMR8X1CztI73zuEyEBXTVjx7CE+/VSwDiQ==", + "dev": true + }, "@eslint/eslintrc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", - "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.1.tgz", + "integrity": "sha512-eFRmABvW2E5Ho6f5fHLqgena46rOj7r7OKHYfLElqcBfGFHHpjBhivyi5+jOEQuSpdc/1phIZJlbC2te+tZNIw==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.1", - "globals": "^13.9.0", + "espree": "^9.5.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, + "@eslint/js": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.36.0.tgz", + "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==", + "dev": true + }, "@hashicorp/platform-cli": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@hashicorp/platform-cli/-/platform-cli-2.1.0.tgz", - "integrity": "sha512-orPreFHhkFXd84zouNnHvx6C2pT8cM2tTxwPEDkTDx7C2G+GRCQxKtBq+YXxLGj6AZOMa6cuF58eecEWJRW6TA==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/@hashicorp/platform-cli/-/platform-cli-2.6.0.tgz", + "integrity": "sha512-nMO7Uiy/A5CT/BCE9RyQt6/Uci7bxwTesxCNWkXlciyqlIrz9WmBa9hr710IiMoDzrzQ1tL6AgFIeTbXs4RTqA==", "dev": true, "requires": { "@hashicorp/platform-cms": "0.3.0", - "@typescript-eslint/eslint-plugin": "5.10.2", - "@typescript-eslint/parser": "5.10.2", + "@typescript-eslint/eslint-plugin": "^5.48.0", + "@typescript-eslint/parser": "^5.48.0", "chalk": "4.1.0", "commander": "7.2.0", "ejs": "3.1.5", - "eslint": "8.8.0", - "eslint-config-next": "12.0.10", - "eslint-config-prettier": "8.3.0", - "eslint-plugin-jsx-a11y": "6.5.1", - "eslint-plugin-prettier": "4.0.0", + "eslint": "^8.31.0", + "eslint-config-next": "^13.1.1", + "eslint-config-prettier": "^8.6.0", + "eslint-plugin-jsx-a11y": "^6.6.1", + "eslint-plugin-prettier": "^4.2.1", "fs-extra": "9.0.1", "globby": "11.0.1", "inquirer": "7.3.3", @@ -12510,26 +14513,268 @@ } } }, - "@hashicorp/platform-cms": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@hashicorp/platform-cms/-/platform-cms-0.3.0.tgz", - "integrity": "sha512-sRX9A+kDEZvfZy8PvGFbEaHjn5G1mEsHwTri1vDnrmKG8apE+ELlug83b0iEkD5wIJi9OqaewMIb0NrLxg9s5A==", - "dev": true, - "requires": { - "rivet-graphql": "0.3.1" - } - }, + "@hashicorp/platform-cms": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@hashicorp/platform-cms/-/platform-cms-0.3.0.tgz", + "integrity": "sha512-sRX9A+kDEZvfZy8PvGFbEaHjn5G1mEsHwTri1vDnrmKG8apE+ELlug83b0iEkD5wIJi9OqaewMIb0NrLxg9s5A==", + "dev": true, + "requires": { + "rivet-graphql": "0.3.1" + } + }, + "@hashicorp/platform-content-conformance": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/@hashicorp/platform-content-conformance/-/platform-content-conformance-0.0.10.tgz", + "integrity": "sha512-vXLbd2w9phS4JfFyh17jCiyu+LXVonTfb7WEUK2eMlOL/wxe2umyJvEQaJNzD5bwyYC8LuXGA5JkbnPXnU5ZQg==", + "dev": true, + "requires": { + "find-up": "^6.3.0", + "flat": "^5.0.2", + "globby": "^13.1.2", + "mdast-util-to-string": "^3.1.0", + "remark": "12.0.1", + "remark-mdx": "^1.6.22", + "unified-lint-rule": "^2.1.1", + "unist-util-stringify-position": "^3.0.2", + "unist-util-visit": "^4.1.1", + "vfile": "^5.3.6", + "vfile-matter": "^4.0.0", + "vfile-reporter": "^7.0.4", + "vfile-reporter-json": "^3.2.0", + "vfile-statistics": "^2.0.0", + "yaml": "^2.1.3", + "yargs": "^17.4.1", + "zod": "^3.19.1" + }, + "dependencies": { + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "requires": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + } + }, + "globby": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", + "dev": true, + "requires": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + } + }, + "locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "requires": { + "p-locate": "^6.0.0" + } + }, + "mdast-util-to-string": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.1.1.tgz", + "integrity": "sha512-tGvhT94e+cVnQt8JWE9/b3cUQZWS732TJxXHktvP+BYo62PpYD53Ls/6cC60rW21dW+txxiM4zMdc6abASvZKA==", + "dev": true, + "requires": { + "@types/mdast": "^3.0.0" + } + }, + "p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "requires": { + "yocto-queue": "^1.0.0" + } + }, + "p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "requires": { + "p-limit": "^4.0.0" + } + }, + "path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true + }, + "remark": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/remark/-/remark-12.0.1.tgz", + "integrity": "sha512-gS7HDonkdIaHmmP/+shCPejCEEW+liMp/t/QwmF0Xt47Rpuhl32lLtDV1uKWvGoq+kxr5jSgg5oAIpGuyULjUw==", + "dev": true, + "requires": { + "remark-parse": "^8.0.0", + "remark-stringify": "^8.0.0", + "unified": "^9.0.0" + } + }, + "remark-parse": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", + "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", + "dev": true, + "requires": { + "ccount": "^1.0.0", + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^2.0.0", + "vfile-location": "^3.0.0", + "xtend": "^4.0.1" + } + }, + "remark-stringify": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-8.1.1.tgz", + "integrity": "sha512-q4EyPZT3PcA3Eq7vPpT6bIdokXzFGp9i85igjmhRyXWmPs0Y6/d2FYwUNotKAWyLch7g0ASZJn/KHHcHZQ163A==", + "dev": true, + "requires": { + "ccount": "^1.0.0", + "is-alphanumeric": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "longest-streak": "^2.0.1", + "markdown-escapes": "^1.0.0", + "markdown-table": "^2.0.0", + "mdast-util-compact": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "stringify-entities": "^3.0.0", + "unherit": "^1.0.4", + "xtend": "^4.0.1" + } + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + }, + "unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0" + } + }, + "vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + } + }, + "vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yaml": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", + "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", + "dev": true + }, + "yargs": { + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + }, + "yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true + } + } + }, "@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", "dev": true, "requires": { "@humanwhocodes/object-schema": "^1.2.1", "debug": "^4.1.1", - "minimatch": "^3.0.4" + "minimatch": "^3.0.5" } }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, "@humanwhocodes/object-schema": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", @@ -12852,6 +15097,12 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "@mdx-js/util": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/@mdx-js/util/-/util-1.6.22.tgz", + "integrity": "sha512-H1rQc1ZOHANWBvPcW+JpGwr+juXSxM8Q8YCkm3GhZd8REu1fHR3z99CErO1p9pkcfcxZnMdIZdIsXkOHY0NilA==", + "dev": true + }, "@next/env": { "version": "12.3.1", "resolved": "https://registry.npmjs.org/@next/env/-/env-12.3.1.tgz", @@ -12859,9 +15110,9 @@ "dev": true }, "@next/eslint-plugin-next": { - "version": "12.0.10", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.0.10.tgz", - "integrity": "sha512-PbGRnV5HGSfRGLjf8uTh1MaWgLwnjKjWiGVjK752ifITJbZ28/5AmLAFT2shDYeux8BHgpgVll5QXu7GN3YLFw==", + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.2.4.tgz", + "integrity": "sha512-ck1lI+7r1mMJpqLNa3LJ5pxCfOB1lfJncKmRJeJxcJqcngaFwylreLP7da6Rrjr6u2gVRTfmnkSkjc80IiQCwQ==", "dev": true, "requires": { "glob": "7.1.7" @@ -12984,10 +15235,43 @@ "fastq": "^1.6.0" } }, + "@pkgr/utils": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz", + "integrity": "sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "is-glob": "^4.0.3", + "open": "^8.4.0", + "picocolors": "^1.0.0", + "tiny-glob": "^0.2.9", + "tslib": "^2.4.0" + }, + "dependencies": { + "open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "dev": true + } + } + }, "@rushstack/eslint-patch": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.1.3.tgz", - "integrity": "sha512-WiBSI6JBIhC6LRIsB2Kwh8DsGTlbBU+mLRxJmAe3LjHTdkDpwIbEOZgoXBbZilk/vlfjK8i6nKRAvIRn1XaIMw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz", + "integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==", "dev": true }, "@sinonjs/commons": { @@ -13141,7 +15425,7 @@ "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, "@types/mdast": { @@ -13184,6 +15468,12 @@ "dev": true, "peer": true }, + "@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "dev": true + }, "@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", @@ -13191,6 +15481,12 @@ "dev": true, "peer": true }, + "@types/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-dPWnWsf+kzIG140B8z2w3fr5D03TLWbOAFQl45xUpI3vcizeXriNR5VYkWZ+WTMsUHqZ9Xlt3hrxGNANFyNQfw==", + "dev": true + }, "@types/unist": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.6.tgz", @@ -13213,73 +15509,75 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.10.2.tgz", - "integrity": "sha512-4W/9lLuE+v27O/oe7hXJKjNtBLnZE8tQAFpapdxwSVHqtmIoPB1gph3+ahNwVuNL37BX7YQHyGF9Xv6XCnIX2Q==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.55.0.tgz", + "integrity": "sha512-IZGc50rtbjk+xp5YQoJvmMPmJEYoC53SiKPXyqWfv15XoD2Y5Kju6zN0DwlmaGJp1Iw33JsWJcQ7nw0lGCGjVg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.10.2", - "@typescript-eslint/type-utils": "5.10.2", - "@typescript-eslint/utils": "5.10.2", - "debug": "^4.3.2", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.2.0", - "semver": "^7.3.5", + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.55.0", + "@typescript-eslint/type-utils": "5.55.0", + "@typescript-eslint/utils": "5.55.0", + "debug": "^4.3.4", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", "tsutils": "^3.21.0" } }, "@typescript-eslint/parser": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.10.2.tgz", - "integrity": "sha512-JaNYGkaQVhP6HNF+lkdOr2cAs2wdSZBoalE22uYWq8IEv/OVH0RksSGydk+sW8cLoSeYmC+OHvRyv2i4AQ7Czg==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.55.0.tgz", + "integrity": "sha512-ppvmeF7hvdhUUZWSd2EEWfzcFkjJzgNQzVST22nzg958CR+sphy8A6K7LXQZd6V75m1VKjp+J4g/PCEfSCmzhw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.10.2", - "@typescript-eslint/types": "5.10.2", - "@typescript-eslint/typescript-estree": "5.10.2", - "debug": "^4.3.2" + "@typescript-eslint/scope-manager": "5.55.0", + "@typescript-eslint/types": "5.55.0", + "@typescript-eslint/typescript-estree": "5.55.0", + "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.10.2.tgz", - "integrity": "sha512-39Tm6f4RoZoVUWBYr3ekS75TYgpr5Y+X0xLZxXqcZNDWZdJdYbKd3q2IR4V9y5NxxiPu/jxJ8XP7EgHiEQtFnw==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.55.0.tgz", + "integrity": "sha512-OK+cIO1ZGhJYNCL//a3ROpsd83psf4dUJ4j7pdNVzd5DmIk+ffkuUIX2vcZQbEW/IR41DYsfJTB19tpCboxQuw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.10.2", - "@typescript-eslint/visitor-keys": "5.10.2" + "@typescript-eslint/types": "5.55.0", + "@typescript-eslint/visitor-keys": "5.55.0" } }, "@typescript-eslint/type-utils": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.10.2.tgz", - "integrity": "sha512-uRKSvw/Ccs5FYEoXW04Z5VfzF2iiZcx8Fu7DGIB7RHozuP0VbKNzP1KfZkHBTM75pCpsWxIthEH1B33dmGBKHw==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.55.0.tgz", + "integrity": "sha512-ObqxBgHIXj8rBNm0yh8oORFrICcJuZPZTqtAFh0oZQyr5DnAHZWfyw54RwpEEH+fD8suZaI0YxvWu5tYE/WswA==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.10.2", - "debug": "^4.3.2", + "@typescript-eslint/typescript-estree": "5.55.0", + "@typescript-eslint/utils": "5.55.0", + "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.10.2.tgz", - "integrity": "sha512-Qfp0qk/5j2Rz3p3/WhWgu4S1JtMcPgFLnmAKAW061uXxKSa7VWKZsDXVaMXh2N60CX9h6YLaBoy9PJAfCOjk3w==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.55.0.tgz", + "integrity": "sha512-M4iRh4AG1ChrOL6Y+mETEKGeDnT7Sparn6fhZ5LtVJF1909D5O4uqK+C5NPbLmpfZ0XIIxCdwzKiijpZUOvOug==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.2.tgz", - "integrity": "sha512-WHHw6a9vvZls6JkTgGljwCsMkv8wu8XU8WaYKeYhxhWXH/atZeiMW6uDFPLZOvzNOGmuSMvHtZKd6AuC8PrwKQ==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.55.0.tgz", + "integrity": "sha512-I7X4A9ovA8gdpWMpr7b1BN9eEbvlEtWhQvpxp/yogt48fy9Lj3iE3ild/1H3jKBBIYj5YYJmS2+9ystVhC7eaQ==", "dev": true, "requires": { - "@typescript-eslint/types": "5.10.2", - "@typescript-eslint/visitor-keys": "5.10.2", - "debug": "^4.3.2", - "globby": "^11.0.4", + "@typescript-eslint/types": "5.55.0", + "@typescript-eslint/visitor-keys": "5.55.0", + "debug": "^4.3.4", + "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "dependencies": { @@ -13300,27 +15598,29 @@ } }, "@typescript-eslint/utils": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.10.2.tgz", - "integrity": "sha512-vuJaBeig1NnBRkf7q9tgMLREiYD7zsMrsN1DA3wcoMDvr3BTFiIpKjGiYZoKPllfEwN7spUjv7ZqD+JhbVjEPg==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.55.0.tgz", + "integrity": "sha512-FkW+i2pQKcpDC3AY6DU54yl8Lfl14FVGYDgBTyGKB75cCwV3KpkpTMFi9d9j2WAJ4271LR2HeC5SEWF/CZmmfw==", "dev": true, "requires": { + "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.10.2", - "@typescript-eslint/types": "5.10.2", - "@typescript-eslint/typescript-estree": "5.10.2", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.55.0", + "@typescript-eslint/types": "5.55.0", + "@typescript-eslint/typescript-estree": "5.55.0", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "semver": "^7.3.7" } }, "@typescript-eslint/visitor-keys": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.2.tgz", - "integrity": "sha512-zHIhYGGGrFJvvyfwHk5M08C5B5K4bewkm+rrvNTKk1/S15YHR+SA/QUF8ZWscXSfEaB8Nn2puZj+iHcoxVOD/Q==", + "version": "5.55.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.55.0.tgz", + "integrity": "sha512-q2dlHHwWgirKh1D3acnuApXG+VNXpEY5/AwRxDVuEQpxWaB0jCDe0jFMVMALJ3ebSfuOVE8/rMS+9ZOYGg1GWw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.10.2", - "eslint-visitor-keys": "^3.0.0" + "@typescript-eslint/types": "5.55.0", + "eslint-visitor-keys": "^3.3.0" } }, "abab": { @@ -13331,9 +15631,9 @@ "peer": true }, "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", "dev": true }, "acorn-globals": { @@ -13458,13 +15758,12 @@ "dev": true }, "aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", "dev": true, "requires": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" + "deep-equal": "^2.0.5" } }, "arr-diff": { @@ -13488,16 +15787,26 @@ "dev": true, "peer": true }, + "array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + } + }, "array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", "is-string": "^1.0.7" } }, @@ -13515,29 +15824,42 @@ "peer": true }, "array.prototype.flat": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", - "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", "es-shim-unscopables": "^1.0.0" } }, "array.prototype.flatmap": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", - "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", + "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", "es-shim-unscopables": "^1.0.0" } }, + "array.prototype.tosorted": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", + "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.3" + } + }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -13554,7 +15876,7 @@ "ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==", "dev": true }, "astral-regex": { @@ -13621,17 +15943,26 @@ } } }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, "axe-core": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz", - "integrity": "sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==", + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.6.3.tgz", + "integrity": "sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg==", "dev": true }, "axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", - "dev": true + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", + "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "dev": true, + "requires": { + "deep-equal": "^2.0.5" + } }, "babel-jest": { "version": "26.6.3", @@ -13903,6 +16234,12 @@ "rsvp": "^4.8.4" } }, + "ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "dev": true + }, "chalk": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", @@ -13926,6 +16263,12 @@ "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", "dev": true }, + "character-entities-html4": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz", + "integrity": "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==", + "dev": true + }, "character-entities-legacy": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", @@ -14133,6 +16476,12 @@ "dev": true, "peer": true }, + "collapse-white-space": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-1.0.6.tgz", + "integrity": "sha512-jEovNnrhMuqyCcjfEJA56v0Xq8SkIoPKDyaHahwo3POf4qcSXqMYuwNcOTzp74vTsR9Tn08z4MxWqAhcekogkQ==", + "dev": true + }, "collect-v8-coverage": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", @@ -14222,12 +16571,6 @@ "dev": true, "peer": true }, - "core-js-pure": { - "version": "3.22.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.22.1.tgz", - "integrity": "sha512-TChjCtgcMDc8t12RiwAsThjqrS/VpBlEvDgL009ot4HESzBo3h2FSZNa6ZS1nWKZEPDoulnszxUll9n0/spflQ==", - "dev": true - }, "cosmiconfig": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", @@ -14364,6 +16707,39 @@ "dev": true, "peer": true }, + "deep-equal": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz", + "integrity": "sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.2", + "get-intrinsic": "^1.1.3", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -14377,10 +16753,16 @@ "dev": true, "peer": true }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", "dev": true, "requires": { "has-property-descriptors": "^1.0.0", @@ -14504,6 +16886,12 @@ "domelementtype": "1" } }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, "ejs": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.5.tgz", @@ -14542,6 +16930,16 @@ "once": "^1.4.0" } }, + "enhanced-resolve": { + "version": "5.12.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", + "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, "enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", @@ -14567,31 +16965,81 @@ } }, "es-abstract": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.5.tgz", - "integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==", + "version": "1.21.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", + "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", "dev": true, "requires": { + "array-buffer-byte-length": "^1.0.0", + "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.2.0", "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", "is-negative-zero": "^2.0.2", "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", + "object-inspect": "^1.12.3", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.7", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + } + }, + "es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" } }, "es-shim-unscopables": { @@ -14686,46 +17134,51 @@ } }, "eslint": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.8.0.tgz", - "integrity": "sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.0.5", - "@humanwhocodes/config-array": "^0.9.2", + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.36.0.tgz", + "integrity": "sha512-Y956lmS7vDqomxlaaQAHVmeb4tNMp2FWIvU/RnU5BD3IKMD/MJPr76xdyr68P8tV1iNMvN2mRK0yy3c+UjL+bw==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.4.0", + "@eslint/eslintrc": "^2.0.1", + "@eslint/js": "8.36.0", + "@humanwhocodes/config-array": "^0.11.8", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.0", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.2.0", - "espree": "^9.3.0", - "esquery": "^1.4.0", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.5.0", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "grapheme-splitter": "^1.0.4", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.1", - "regexpp": "^3.2.0", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "dependencies": { "escape-string-regexp": { @@ -14743,41 +17196,70 @@ "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } } } }, "eslint-config-next": { - "version": "12.0.10", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.0.10.tgz", - "integrity": "sha512-l1er6mwSo1bltjLwmd71p5BdT6k/NQxV1n4lKZI6xt3MDMrq7ChUBr+EecxOry8GC/rCRUtPpH8Ygs0BJc5YLg==", + "version": "13.2.4", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.2.4.tgz", + "integrity": "sha512-lunIBhsoeqw6/Lfkd6zPt25w1bn0znLA/JCL+au1HoEpSb4/PpsOYsYtgV/q+YPsoKIOzFyU5xnb04iZnXjUvg==", "dev": true, "requires": { - "@next/eslint-plugin-next": "12.0.10", - "@rushstack/eslint-patch": "^1.0.8", - "@typescript-eslint/parser": "^5.0.0", - "eslint-import-resolver-node": "^0.3.4", - "eslint-import-resolver-typescript": "^2.4.0", - "eslint-plugin-import": "^2.25.2", + "@next/eslint-plugin-next": "13.2.4", + "@rushstack/eslint-patch": "^1.1.3", + "@typescript-eslint/parser": "^5.42.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.26.0", "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.27.0", - "eslint-plugin-react-hooks": "^4.3.0" + "eslint-plugin-react": "^7.31.7", + "eslint-plugin-react-hooks": "^4.5.0" } }, "eslint-config-prettier": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", - "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.7.0.tgz", + "integrity": "sha512-HHVXLSlVUhMSmyW4ZzEuvjpwqamgmlfkutD53cYXLikh4pt/modINRcCIApJ84czDxM4GZInwUrromsDdTImTA==", "dev": true, "requires": {} }, "eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", + "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", "dev": true, "requires": { "debug": "^3.2.7", - "resolve": "^1.20.0" + "is-core-module": "^2.11.0", + "resolve": "^1.22.1" }, "dependencies": { "debug": { @@ -14788,46 +17270,63 @@ "requires": { "ms": "^2.1.1" } + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } } } }, "eslint-import-resolver-typescript": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz", - "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.3.tgz", + "integrity": "sha512-njRcKYBc3isE42LaTcJNVANR3R99H9bAxBDMNDr2W7yq5gYPxbU3MkdhsQukxZ/Xg9C2vcyLlDsbKfRDg0QvCQ==", "dev": true, "requires": { "debug": "^4.3.4", - "glob": "^7.2.0", + "enhanced-resolve": "^5.10.0", + "get-tsconfig": "^4.2.0", + "globby": "^13.1.2", + "is-core-module": "^2.10.0", "is-glob": "^4.0.3", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" + "synckit": "^0.8.4" }, "dependencies": { - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "globby": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" } + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true } } }, "eslint-module-utils": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", - "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", "dev": true, "requires": { - "debug": "^3.2.7", - "find-up": "^2.1.0" + "debug": "^3.2.7" }, "dependencies": { "debug": { @@ -14842,33 +17341,35 @@ } }, "eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "version": "2.27.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", + "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", "dev": true, "requires": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "array.prototype.flatmap": "^1.3.1", + "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", + "eslint-import-resolver-node": "^0.3.7", + "eslint-module-utils": "^2.7.4", "has": "^1.0.3", - "is-core-module": "^2.8.1", + "is-core-module": "^2.11.0", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", + "object.values": "^1.1.6", + "resolve": "^1.22.1", + "semver": "^6.3.0", "tsconfig-paths": "^3.14.1" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "doctrine": { @@ -14880,63 +17381,87 @@ "esutils": "^2.0.2" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, "eslint-plugin-jsx-a11y": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", - "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==", + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", + "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", "dev": true, "requires": { - "@babel/runtime": "^7.16.3", - "aria-query": "^4.2.2", - "array-includes": "^3.1.4", + "@babel/runtime": "^7.20.7", + "aria-query": "^5.1.3", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", "ast-types-flow": "^0.0.7", - "axe-core": "^4.3.5", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.7", + "axe-core": "^4.6.2", + "axobject-query": "^3.1.1", + "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", "has": "^1.0.3", - "jsx-ast-utils": "^3.2.1", - "language-tags": "^1.0.5", - "minimatch": "^3.0.4" + "jsx-ast-utils": "^3.3.3", + "language-tags": "=1.0.5", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } } }, "eslint-plugin-prettier": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", - "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" } }, "eslint-plugin-react": { - "version": "7.29.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz", - "integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==", + "version": "7.32.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", + "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", "dev": true, "requires": { - "array-includes": "^3.1.4", - "array.prototype.flatmap": "^1.2.5", + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", "doctrine": "^2.1.0", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.0", - "object.values": "^1.1.5", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.3", + "resolve": "^2.0.0-next.4", "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.6" + "string.prototype.matchall": "^4.0.8" }, "dependencies": { "doctrine": { @@ -14949,13 +17474,14 @@ } }, "resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "version": "2.0.0-next.4", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", + "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "semver": { @@ -14967,9 +17493,9 @@ } }, "eslint-plugin-react-hooks": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.4.0.tgz", - "integrity": "sha512-U3RVIfdzJaeKDQKEJbz5p3NW8/L80PCATJAfuojwbaEL+gBjfGdhUcGde+WGUW46Q5sr/NgxevsIiDtNXrvZaQ==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", "dev": true, "requires": {} }, @@ -14991,23 +17517,6 @@ } } }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - } - } - }, "eslint-visitor-keys": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", @@ -15015,13 +17524,13 @@ "dev": true }, "espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.0.tgz", + "integrity": "sha512-JPbJGhKc47++oo4JkEoTe2wjy4fmMwvFpgJT9cQzmfXKp22Dr6Hf1tdCteLz1h0P3t+mGvWZ+4Uankvh8+c6zw==", "dev": true, "requires": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.3.0" } }, @@ -15033,9 +17542,9 @@ "peer": true }, "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -15468,6 +17977,12 @@ "locate-path": "^2.0.0" } }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, "flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -15484,6 +17999,15 @@ "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -15544,11 +18068,17 @@ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } }, "functions-have-names": { "version": "1.2.3", @@ -15566,18 +18096,17 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "peer": true + "dev": true }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "dev": true, "requires": { "function-bind": "^1.1.1", "has": "^1.0.3", - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.3" } }, "get-own-enumerable-property-symbols": { @@ -15619,6 +18148,12 @@ "get-intrinsic": "^1.1.1" } }, + "get-tsconfig": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.4.0.tgz", + "integrity": "sha512-0Gdjo/9+FzsYhXCEFueo2aY1z1tpXrxWZzP7k8ul9qt1U5o8rYJwTJYmaeHdrVosYIVYkOy2iwCJ9FdpocJhPQ==", + "dev": true + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -15681,14 +18216,29 @@ } }, "globals": { - "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "version": "13.20.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", "dev": true, "requires": { "type-fest": "^0.20.2" } }, + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3" + } + }, + "globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, "globby": { "version": "11.0.1", "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", @@ -15709,6 +18259,12 @@ "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=", "dev": true }, + "globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, "gonzales-pe": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", @@ -15718,12 +18274,27 @@ "minimist": "^1.2.5" } }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, "graphql": { "version": "15.8.0", "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", @@ -15785,6 +18356,12 @@ "get-intrinsic": "^1.1.1" } }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -16101,12 +18678,12 @@ } }, "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", "dev": true, "requires": { - "get-intrinsic": "^1.1.0", + "get-intrinsic": "^1.2.0", "has": "^1.0.3", "side-channel": "^1.0.4" } @@ -16133,6 +18710,12 @@ "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", "dev": true }, + "is-alphanumeric": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz", + "integrity": "sha512-ZmRL7++ZkcMOfDuWZuMJyIVLr2keE1o/DeNWh1EmgqGhUcV+9BIVsx0BcSBOHTZqzjs4+dISzr2KAeBEWGgXeA==", + "dev": true + }, "is-alphanumerical": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", @@ -16143,6 +18726,27 @@ "is-decimal": "^1.0.0" } }, + "is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -16175,9 +18779,9 @@ "dev": true }, "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true }, "is-ci": { @@ -16190,9 +18794,9 @@ } }, "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, "requires": { "has": "^1.0.3" @@ -16285,6 +18889,12 @@ "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", "dev": true }, + "is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true + }, "is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -16312,6 +18922,12 @@ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -16351,6 +18967,12 @@ "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", "dev": true }, + "is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true + }, "is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", @@ -16384,6 +19006,19 @@ "has-symbols": "^1.0.2" } }, + "is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -16405,6 +19040,12 @@ "url-regex": "^5.0.0" } }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true + }, "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -16414,6 +19055,22 @@ "call-bind": "^1.0.2" } }, + "is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "is-whitespace-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz", + "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==", + "dev": true + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -16421,6 +19078,12 @@ "dev": true, "peer": true }, + "is-word-character": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz", + "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==", + "dev": true + }, "is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -16988,6 +19651,12 @@ "supports-color": "^7.0.0" } }, + "js-sdsl": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", + "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", + "dev": true + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -17066,7 +19735,7 @@ "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "json5": { @@ -17094,13 +19763,13 @@ } }, "jsx-ast-utils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz", - "integrity": "sha512-HDAyJ4MNQBboGpUnHAVUNJs6X0lh058s6FuixsFGP7MgJYpD6Vasd6nzSG5iIfXu1zAYlHJ/zsOKNlrenTUBnw==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", + "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", "dev": true, "requires": { - "array-includes": "^3.1.4", - "object.assign": "^4.1.2" + "array-includes": "^3.1.5", + "object.assign": "^4.1.3" } }, "kind-of": { @@ -17123,15 +19792,15 @@ "dev": true }, "language-subtag-registry": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", - "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==", + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", "dev": true }, "language-tags": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", + "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", "dev": true, "requires": { "language-subtag-registry": "~0.3.2" @@ -17450,12 +20119,59 @@ "object-visit": "^1.0.0" } }, + "markdown-escapes": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz", + "integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg==", + "dev": true + }, + "markdown-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "dev": true, + "requires": { + "repeat-string": "^1.0.0" + } + }, "mathml-tag-names": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", "dev": true }, + "mdast-util-compact": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz", + "integrity": "sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA==", + "dev": true, + "requires": { + "unist-util-visit": "^2.0.0" + }, + "dependencies": { + "unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + } + } + } + }, "mdast-util-from-markdown": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", @@ -17683,6 +20399,12 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "next": { "version": "12.3.1", "resolved": "https://registry.npmjs.org/next/-/next-12.3.1.tgz", @@ -17842,7 +20564,7 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true }, "object-copy": { @@ -17928,11 +20650,21 @@ } }, "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "dev": true }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", @@ -17950,47 +20682,47 @@ } }, "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" } }, "object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", + "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" } }, "object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", + "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" } }, "object.hasown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", - "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", + "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" } }, "object.pick": { @@ -18004,14 +20736,14 @@ } }, "object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" } }, "once": { @@ -18772,9 +21504,9 @@ } }, "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "dev": true }, "regex-not": { @@ -18799,12 +21531,6 @@ "functions-have-names": "^1.2.2" } }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, "remark": { "version": "13.0.0", "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", @@ -18816,6 +21542,110 @@ "unified": "^9.1.0" } }, + "remark-mdx": { + "version": "1.6.22", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-1.6.22.tgz", + "integrity": "sha512-phMHBJgeV76uyFkH4rvzCftLfKCr2RZuF+/gmVcaKrpsihyzmhXjA0BEMDaPTXG5y8qZOKPVo83NAOX01LPnOQ==", + "dev": true, + "requires": { + "@babel/core": "7.12.9", + "@babel/helper-plugin-utils": "7.10.4", + "@babel/plugin-proposal-object-rest-spread": "7.12.1", + "@babel/plugin-syntax-jsx": "7.12.1", + "@mdx-js/util": "1.6.22", + "is-alphabetical": "1.0.4", + "remark-parse": "8.0.3", + "unified": "9.2.0" + }, + "dependencies": { + "@babel/core": { + "version": "7.12.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.9.tgz", + "integrity": "sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helpers": "^7.12.5", + "@babel/parser": "^7.12.7", + "@babel/template": "^7.12.7", + "@babel/traverse": "^7.12.9", + "@babel/types": "^7.12.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "remark-parse": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-8.0.3.tgz", + "integrity": "sha512-E1K9+QLGgggHxCQtLt++uXltxEprmWzNfg+MxpfHsZlrddKzZ/hZyWHDbK3/Ap8HJQqYJRXP+jHczdL6q6i85Q==", + "dev": true, + "requires": { + "ccount": "^1.0.0", + "collapse-white-space": "^1.0.2", + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-whitespace-character": "^1.0.0", + "is-word-character": "^1.0.0", + "markdown-escapes": "^1.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.5.4", + "state-toggle": "^1.0.0", + "trim": "0.0.1", + "trim-trailing-lines": "^1.0.0", + "unherit": "^1.0.4", + "unist-util-remove-position": "^2.0.0", + "vfile-location": "^3.0.0", + "xtend": "^4.0.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + }, + "unified": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz", + "integrity": "sha512-vx2Z0vY+a3YoTj8+pttM3tiJHCwY5UFbYdiWrwBEbHmK8pvsPj2rtAX2BFfgXen8T39CJWblWRDT4L5WGXtDdg==", + "dev": true, + "requires": { + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + } + } + } + }, "remark-parse": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", @@ -18858,8 +21688,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true, - "peer": true + "dev": true }, "require-from-string": { "version": "2.0.2", @@ -19012,6 +21841,17 @@ "ret": "~0.1.10" } }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -19815,6 +22655,12 @@ } } }, + "state-toggle": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/state-toggle/-/state-toggle-1.0.3.tgz", + "integrity": "sha512-d/5Z4/2iiCnHw6Xzghyhb+GcmF89bxwgXG60wjIiZaxnymbyOmI8Hk4VqHXiVVp6u2ysaskFfXg3ekCj4WNftQ==", + "dev": true + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -19908,6 +22754,15 @@ } } }, + "stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "requires": { + "internal-slot": "^1.0.4" + } + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -19962,39 +22817,63 @@ } }, "string.prototype.matchall": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", - "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", + "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", "has-symbols": "^1.0.3", "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.1", + "regexp.prototype.flags": "^1.4.3", "side-channel": "^1.0.4" } }, + "string.prototype.trim": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", + "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" } }, "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "stringify-entities": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz", + "integrity": "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "character-entities-html4": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "xtend": "^4.0.0" } }, "stringify-object": { @@ -20293,6 +23172,24 @@ "dev": true, "peer": true }, + "synckit": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", + "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "dev": true, + "requires": { + "@pkgr/utils": "^2.3.1", + "tslib": "^2.5.0" + }, + "dependencies": { + "tslib": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", + "dev": true + } + } + }, "table": { "version": "6.8.0", "resolved": "https://registry.npmjs.org/table/-/table-6.8.0.tgz", @@ -20337,6 +23234,12 @@ } } }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, "terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", @@ -20363,7 +23266,7 @@ "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "throat": { @@ -20379,6 +23282,16 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, + "tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "requires": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, "tlds": { "version": "1.231.0", "resolved": "https://registry.npmjs.org/tlds/-/tlds-1.231.0.tgz", @@ -20489,12 +23402,24 @@ "punycode": "^2.1.1" } }, + "trim": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/trim/-/trim-0.0.1.tgz", + "integrity": "sha512-YzQV+TZg4AxpKxaTHK3c3D+kRDCGVEE7LemdlQZoQXn0iennk10RsIoY6ikzAqJTc9Xjl9C1/waHom/J86ziAQ==", + "dev": true + }, "trim-newlines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true }, + "trim-trailing-lines": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-1.1.4.tgz", + "integrity": "sha512-rjUWSqnfTNrjbB9NQWfPMH/xRK1deHeGsHoVfpxJ++XeYXE0d6B1En37AHfw3jtfTU7dzMzZL2jjpe8Qb5gLIQ==", + "dev": true + }, "trough": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", @@ -20520,13 +23445,13 @@ } }, "tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", "dev": true, "requires": { "@types/json5": "^0.0.29", - "json5": "^1.0.1", + "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" }, @@ -20543,7 +23468,7 @@ "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true } } @@ -20585,6 +23510,17 @@ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -20602,17 +23538,27 @@ "peer": true }, "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" } }, + "unherit": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.3.tgz", + "integrity": "sha512-Ft16BJcnapDKp0+J/rqFC3Rrk6Y/Ng4nzsC028k2jdDII/rdZ7Wd3pPT/6+vIIxRagwRc9K0IUX0Ra4fKvw+WQ==", + "dev": true, + "requires": { + "inherits": "^2.0.0", + "xtend": "^4.0.0" + } + }, "unified": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", @@ -20635,6 +23581,84 @@ } } }, + "unified-lint-rule": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/unified-lint-rule/-/unified-lint-rule-2.1.1.tgz", + "integrity": "sha512-vsLHyLZFstqtGse2gvrGwasOmH8M2y+r2kQMoDSWzSqUkQx2MjHjvZuGSv5FUaiv4RQO1bHRajy7lSGp7XWq5A==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "trough": "^2.0.0", + "unified": "^10.0.0", + "vfile": "^5.0.0" + }, + "dependencies": { + "bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "dev": true + }, + "is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "dev": true + }, + "trough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", + "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", + "dev": true + }, + "unified": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + } + }, + "unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0" + } + }, + "vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + } + }, + "vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + } + } + } + }, "union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", @@ -20672,6 +23696,38 @@ "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", "dev": true }, + "unist-util-remove-position": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-2.0.1.tgz", + "integrity": "sha512-fDZsLYIe2uT+oGFnuZmy73K6ZxOPG/Qcm+w7jbEjaFcJgbQ6cqjs/eSPzXhsmGpAsWPkqZM9pYjww5QTn3LHMA==", + "dev": true, + "requires": { + "unist-util-visit": "^2.0.0" + }, + "dependencies": { + "unist-util-visit": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz", + "integrity": "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + } + }, + "unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" + } + } + } + }, "unist-util-stringify-position": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", @@ -20681,6 +23737,49 @@ "@types/unist": "^2.0.2" } }, + "unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "dependencies": { + "unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0" + } + } + } + }, + "unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "dependencies": { + "unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0" + } + } + } + }, "universalify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", @@ -20834,6 +23933,62 @@ "vfile-message": "^2.0.0" } }, + "vfile-location": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-3.2.0.tgz", + "integrity": "sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==", + "dev": true + }, + "vfile-matter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/vfile-matter/-/vfile-matter-4.0.1.tgz", + "integrity": "sha512-ZeACdaxCOxhePpoLO4A5y/VgI9EuWBXu+sUk65aQ7lXBZDFg7X0tuOzigLJUtsQzazFt6K2m9SdlDxZdfL5vVg==", + "dev": true, + "requires": { + "is-buffer": "^2.0.0", + "vfile": "^5.0.0", + "yaml": "^2.0.0" + }, + "dependencies": { + "unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0" + } + }, + "vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + } + }, + "vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + } + }, + "yaml": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", + "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", + "dev": true + } + } + }, "vfile-message": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", @@ -20844,6 +23999,216 @@ "unist-util-stringify-position": "^2.0.0" } }, + "vfile-reporter": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/vfile-reporter/-/vfile-reporter-7.0.5.tgz", + "integrity": "sha512-NdWWXkv6gcd7AZMvDomlQbK3MqFWL1RlGzMn++/O2TI+68+nqxCPTvLugdOtfSzXmjh+xUyhp07HhlrbJjT+mw==", + "dev": true, + "requires": { + "@types/supports-color": "^8.0.0", + "string-width": "^5.0.0", + "supports-color": "^9.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile": "^5.0.0", + "vfile-message": "^3.0.0", + "vfile-sort": "^3.0.0", + "vfile-statistics": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "dev": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "supports-color": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.3.1.tgz", + "integrity": "sha512-knBY82pjmnIzK3NifMo3RxEIRD9E0kIzV4BKcyTZ9+9kWgLMxd4PrsTSMoFQUabgRBbF8KOLRDCyKgNV+iK44Q==", + "dev": true + }, + "unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0" + } + }, + "vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + } + }, + "vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + } + } + } + }, + "vfile-reporter-json": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/vfile-reporter-json/-/vfile-reporter-json-3.3.0.tgz", + "integrity": "sha512-/zgRtjxQ2UGJn+HViiZ7+nIXtUzkkXFQum3BmaS/bSyr10P0X41ETRqqwMJ95RtbKUah3m7pKb6oS1eZeXXHzQ==", + "dev": true, + "requires": { + "vfile": "^5.0.0", + "vfile-message": "^3.0.0" + }, + "dependencies": { + "unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0" + } + }, + "vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + } + }, + "vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + } + } + } + }, + "vfile-sort": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/vfile-sort/-/vfile-sort-3.0.1.tgz", + "integrity": "sha512-1os1733XY6y0D5x0ugqSeaVJm9lYgj0j5qdcZQFyxlZOSy1jYarL77lLyb5gK4Wqr1d5OxmuyflSO3zKyFnTFw==", + "dev": true, + "requires": { + "vfile": "^5.0.0", + "vfile-message": "^3.0.0" + }, + "dependencies": { + "unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0" + } + }, + "vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + } + }, + "vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + } + } + } + }, + "vfile-statistics": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/vfile-statistics/-/vfile-statistics-2.0.1.tgz", + "integrity": "sha512-W6dkECZmP32EG/l+dp2jCLdYzmnDBIw6jwiLZSER81oR5AHRcVqL+k3Z+pfH1R73le6ayDkJRMk0sutj1bMVeg==", + "dev": true, + "requires": { + "vfile": "^5.0.0", + "vfile-message": "^3.0.0" + }, + "dependencies": { + "unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0" + } + }, + "vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + } + }, + "vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dev": true, + "requires": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + } + } + } + }, "w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -20932,6 +24297,18 @@ "is-symbol": "^1.0.3" } }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", @@ -20945,6 +24322,20 @@ "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", "dev": true }, + "which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + } + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -21002,6 +24393,12 @@ "dev": true, "peer": true }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, "y18n": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", @@ -21107,6 +24504,12 @@ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true }, + "zod": { + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", + "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", + "dev": true + }, "zwitch": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", diff --git a/website/package.json b/website/package.json index 1ec08a0f6b9..fe977d49062 100644 --- a/website/package.json +++ b/website/package.json @@ -4,7 +4,8 @@ "version": "1.0.0", "author": "HashiCorp", "devDependencies": { - "@hashicorp/platform-cli": "^2.1.0", + "@hashicorp/platform-cli": "^2.6.0", + "@hashicorp/platform-content-conformance": "^0.0.10", "dart-linkcheck": "2.0.15", "husky": "4.3.8", "next": "^12.3.1", @@ -21,7 +22,8 @@ "format": "next-hashicorp format", "lint": "next-hashicorp lint", "start": "./scripts/website-start.sh", - "linkcheck": "linkcheck https://packer.io" + "linkcheck": "linkcheck https://packer.io", + "content-check": "hc-content --config base-docs" }, "engines": { "npm": ">=7.0.0" From 20c2d48df7dd107736d64dc44afa63791c6ae7eb Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 29 Mar 2023 12:43:50 -0400 Subject: [PATCH 062/381] Migrate external Linode plugin to linode/packer-plugin-linode (#12329) * Update external plugin documentation source The Linode plugin for Packer is now maintained by the Linode team, under their respective GitHub org. This changes updates the source address for the external plugin that should be used for pulling new plugin documentation. * Removed packer-plugin-linode for list of vendored plugins The Linode plugin for Packer is now maintained by the Linode team, under their respective GitHub org. This changes removes Linode from the vendored plugins lists. --- command/vendored_plugins.go | 2 -- go.mod | 3 --- go.sum | 7 ------- website/data/plugins-manifest.json | 4 ++-- 4 files changed, 2 insertions(+), 14 deletions(-) diff --git a/command/vendored_plugins.go b/command/vendored_plugins.go index 4295c8261a6..26fef05361b 100644 --- a/command/vendored_plugins.go +++ b/command/vendored_plugins.go @@ -46,7 +46,6 @@ import ( hypervvmcxbuilder "github.com/hashicorp/packer-plugin-hyperv/builder/hyperv/vmcx" inspecprovisioner "github.com/hashicorp/packer-plugin-inspec/provisioner/inspec" jdcloudbuilder "github.com/hashicorp/packer-plugin-jdcloud/builder/jdcloud" - linodebuilder "github.com/hashicorp/packer-plugin-linode/builder/linode" lxcbuilder "github.com/hashicorp/packer-plugin-lxc/builder/lxc" lxdbuilder "github.com/hashicorp/packer-plugin-lxd/builder/lxd" ncloudbuilder "github.com/hashicorp/packer-plugin-ncloud/builder/ncloud" @@ -110,7 +109,6 @@ var VendoredBuilders = map[string]packersdk.Builder{ "hyperv-vmcx": new(hypervvmcxbuilder.Builder), "hyperone": new(hyperonebuilder.Builder), "jdcloud": new(jdcloudbuilder.Builder), - "linode": new(linodebuilder.Builder), "lxc": new(lxcbuilder.Builder), "lxd": new(lxdbuilder.Builder), "ncloud": new(ncloudbuilder.Builder), diff --git a/go.mod b/go.mod index 0c6b8b146e0..cf97b84eb9c 100644 --- a/go.mod +++ b/go.mod @@ -74,7 +74,6 @@ require ( github.com/hashicorp/packer-plugin-hyperv v1.0.4 github.com/hashicorp/packer-plugin-inspec v1.0.0 github.com/hashicorp/packer-plugin-jdcloud v1.0.1 - github.com/hashicorp/packer-plugin-linode v1.0.3 github.com/hashicorp/packer-plugin-lxc v1.0.2 github.com/hashicorp/packer-plugin-lxd v1.0.1 github.com/hashicorp/packer-plugin-ncloud v1.0.3 @@ -164,7 +163,6 @@ require ( github.com/go-openapi/strfmt v0.21.3 // indirect github.com/go-openapi/swag v0.22.3 // indirect github.com/go-openapi/validate v0.22.1 // indirect - github.com/go-resty/resty/v2 v2.6.0 // indirect github.com/gofrs/uuid v4.0.0+incompatible // indirect github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3 // indirect github.com/golang-jwt/jwt v3.2.2+incompatible // indirect @@ -212,7 +210,6 @@ require ( github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect github.com/kr/fs v0.1.0 // indirect - github.com/linode/linodego v0.30.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786 // indirect github.com/matryer/is v1.4.0 // indirect diff --git a/go.sum b/go.sum index c42b05f40bc..1b1902abd63 100644 --- a/go.sum +++ b/go.sum @@ -305,9 +305,7 @@ github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/ github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-openapi/validate v0.22.1 h1:G+c2ub6q47kfX1sOBLwIQwzBVt8qmOAARyo/9Fqs9NU= github.com/go-openapi/validate v0.22.1/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= -github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= github.com/go-resty/resty/v2 v2.6.0 h1:joIR5PNLM2EFqqESUjCMGXrWmXNHEU9CEiK813oKYS4= -github.com/go-resty/resty/v2 v2.6.0/go.mod h1:PwvJS6hvaPkjtjNg9ph+VrSD92bi5Zq73w/BIH7cC3Q= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= @@ -543,8 +541,6 @@ github.com/hashicorp/packer-plugin-inspec v1.0.0 h1:6qRgH90Q+L3HSzo5UvuSozzS4VzU github.com/hashicorp/packer-plugin-inspec v1.0.0/go.mod h1:SsVyBs8b/g1wMC+4HgZQWT01kqxrwprA7dKxHAIRFKw= github.com/hashicorp/packer-plugin-jdcloud v1.0.1 h1:qgecywtT8EqGiHdvopC36eBz1lSZs336w7X2q+y+UY0= github.com/hashicorp/packer-plugin-jdcloud v1.0.1/go.mod h1:1i/cCievlQE+grHJWUxhwi5nzwSXt9n0WmcHpFVMt5I= -github.com/hashicorp/packer-plugin-linode v1.0.3 h1:CHE4G5GsgT8CEiMn7FBsckBFsfwUF+0i0b/t+a0PyEs= -github.com/hashicorp/packer-plugin-linode v1.0.3/go.mod h1:zxEZrwpN8X1L1P3QlRvaT5asH33xdx62/qPIVnqycbA= github.com/hashicorp/packer-plugin-lxc v1.0.2 h1:JvIkbSynft+9JAi1uPEVHesIe02OX2yL9rPj1Ud0kM8= github.com/hashicorp/packer-plugin-lxc v1.0.2/go.mod h1:kirXCLekY6h0YPbWaue2YRqKqiumyDnbwwww/TGjGjE= github.com/hashicorp/packer-plugin-lxd v1.0.1 h1:sqdaEdip0y/wC7x99CQHIbakJSmZY2kI3LfFT0FvYVo= @@ -668,8 +664,6 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/linode/linodego v0.30.0 h1:r9Sujfeo4FfEn/KdOjYegMP5sNCXL5rZUc4zNcDa+2E= -github.com/linode/linodego v0.30.0/go.mod h1:BR0gVkCJffEdIGJSl6bHR80Ty+Uvg/2jkjmrWaFectM= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -1033,7 +1027,6 @@ golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= diff --git a/website/data/plugins-manifest.json b/website/data/plugins-manifest.json index b254d6acaca..c23a353d53b 100644 --- a/website/data/plugins-manifest.json +++ b/website/data/plugins-manifest.json @@ -161,8 +161,8 @@ { "title": "Linode", "path": "linode", - "repo": "hashicorp/packer-plugin-linode", - "pluginTier": "community", + "repo": "linode/packer-plugin-linode", + "pluginTier": "verified", "version": "latest", "isHcpPackerReady": true }, From 1dd0814e642516979fcb8a807ef790f17f3d1fde Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Mar 2023 12:44:15 -0400 Subject: [PATCH 063/381] build(deps): bump github/issue-labeler from 3.0 to 3.1 (#12328) Bumps [github/issue-labeler](https://github.com/github/issue-labeler) from 3.0 to 3.1. - [Release notes](https://github.com/github/issue-labeler/releases) - [Commits](https://github.com/github/issue-labeler/compare/v3.0...v3.1) --- updated-dependencies: - dependency-name: github/issue-labeler dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/issues-opened.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/issues-opened.yml b/.github/workflows/issues-opened.yml index a00573c7460..218f3667ba2 100644 --- a/.github/workflows/issues-opened.yml +++ b/.github/workflows/issues-opened.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: github/issue-labeler@v3.0 + - uses: github/issue-labeler@v3.1 with: repo-token: "${{ secrets.GITHUB_TOKEN }}" configuration-path: .github/labeler-issue-triage.yml From 0112eef059102ff448db8a563b5816c028b458de Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Mar 2023 12:46:40 -0400 Subject: [PATCH 064/381] build(deps): bump actions/setup-go from 2 to 4 (#12316) Bumps [actions/setup-go](https://github.com/actions/setup-go) from 2 to 4. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/v2...v4) --- updated-dependencies: - dependency-name: actions/setup-go dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/acceptance-test.yml | 2 +- .github/workflows/go-test.yml | 6 +++--- .github/workflows/go-validate.yml | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/acceptance-test.yml b/.github/workflows/acceptance-test.yml index 5c2425251ac..1d5c4ef6f42 100644 --- a/.github/workflows/acceptance-test.yml +++ b/.github/workflows/acceptance-test.yml @@ -41,7 +41,7 @@ jobs: PACKER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/setup-go@v4 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - name: IAM Assume Role diff --git a/.github/workflows/go-test.yml b/.github/workflows/go-test.yml index 04d8159ae1d..ecdb45b5bd9 100644 --- a/.github/workflows/go-test.yml +++ b/.github/workflows/go-test.yml @@ -23,7 +23,7 @@ jobs: name: Linux go tests steps: - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/setup-go@v4 with: go-version: '1.18' - run: TESTARGS="-coverprofile=coverage.txt -covermode=atomic" make ci @@ -32,7 +32,7 @@ jobs: name: Darwin go tests steps: - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/setup-go@v4 with: go-version: '1.18' - run: go test ./... -coverprofile=coverage.txt -covermode=atomic @@ -41,7 +41,7 @@ jobs: name: Windows go tests steps: - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/setup-go@v4 with: go-version: '1.18' - run: go test ./... -coverprofile=coverage.txt -covermode=atomic diff --git a/.github/workflows/go-validate.yml b/.github/workflows/go-validate.yml index 878f7a2238a..068dc79a168 100644 --- a/.github/workflows/go-validate.yml +++ b/.github/workflows/go-validate.yml @@ -19,7 +19,7 @@ jobs: name: Go Mod Tidy steps: - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/setup-go@v4 with: go-version: '1.18' - run: go mod tidy @@ -30,7 +30,7 @@ jobs: - uses: actions/checkout@v2 with: fetch-depth: 0 - - uses: actions/setup-go@v2 + - uses: actions/setup-go@v4 with: go-version: '1.18' - run: echo "$GITHUB_SHA" @@ -42,7 +42,7 @@ jobs: name: Fmt check steps: - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/setup-go@v4 with: go-version: '1.18' - run: make fmt-check @@ -51,7 +51,7 @@ jobs: name: Generate check steps: - uses: actions/checkout@v2 - - uses: actions/setup-go@v2 + - uses: actions/setup-go@v4 with: go-version: '1.18' - run: make generate-check From 93aef96924c7413c475ec9a478dd1bf54e3dc0bb Mon Sep 17 00:00:00 2001 From: Chris Griggs Date: Thu, 30 Mar 2023 10:54:52 -0700 Subject: [PATCH 065/381] Update Outscale plugin HCP Ready tag Adding the HCP Ready tag to the Outscale plugin. The HCP compatibility was added in this PR: https://github.com/outscale/packer-plugin-outscale/pull/70 --- website/data/plugins-manifest.json | 1 + 1 file changed, 1 insertion(+) diff --git a/website/data/plugins-manifest.json b/website/data/plugins-manifest.json index c23a353d53b..b352cbbc428 100644 --- a/website/data/plugins-manifest.json +++ b/website/data/plugins-manifest.json @@ -230,6 +230,7 @@ "repo": "outscale/packer-plugin-outscale", "version": "latest", "pluginTier": "verified" + "isHcpPackerReady": true }, { "title": "Parallels", From 004471835a575b078b6d235e0eb04eaa743ee779 Mon Sep 17 00:00:00 2001 From: Chris Griggs Date: Thu, 30 Mar 2023 11:09:22 -0700 Subject: [PATCH 066/381] Update website/data/plugins-manifest.json adding comma! Co-authored-by: Lucas Bajolet <105649352+lbajolet-hashicorp@users.noreply.github.com> --- website/data/plugins-manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/data/plugins-manifest.json b/website/data/plugins-manifest.json index b352cbbc428..07f9f259d3a 100644 --- a/website/data/plugins-manifest.json +++ b/website/data/plugins-manifest.json @@ -229,7 +229,7 @@ "path": "outscale", "repo": "outscale/packer-plugin-outscale", "version": "latest", - "pluginTier": "verified" + "pluginTier": "verified", "isHcpPackerReady": true }, { From f678c063961de1f3e7bc4e8530f6b3654cbff0b8 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 4 Apr 2023 20:47:47 -0400 Subject: [PATCH 067/381] Migrate external UCloud plugin to ucloud/packer-plugin-ucloud (#12335) * Update external plugin documentation source The UCloud plugin for Packer is now maintained by the UCloud team, under their respective GitHub org. This changes updates the source address for the external plugin that should be used for pulling new plugin documentation. * Remove packer-plugin-ucloud from vendored plugins. --- command/vendored_plugins.go | 4 ---- go.mod | 5 ----- go.sum | 9 --------- website/data/plugins-manifest.json | 2 +- 4 files changed, 1 insertion(+), 19 deletions(-) diff --git a/command/vendored_plugins.go b/command/vendored_plugins.go index 26fef05361b..95065a75ea8 100644 --- a/command/vendored_plugins.go +++ b/command/vendored_plugins.go @@ -62,8 +62,6 @@ import ( saltmasterlessprovisioner "github.com/hashicorp/packer-plugin-salt/provisioner/salt-masterless" tencentcloudcvmbuilder "github.com/hashicorp/packer-plugin-tencentcloud/builder/tencentcloud/cvm" tritonbuilder "github.com/hashicorp/packer-plugin-triton/builder/triton" - uclouduhostbuilder "github.com/hashicorp/packer-plugin-ucloud/builder/ucloud/uhost" - ucloudimportpostprocessor "github.com/hashicorp/packer-plugin-ucloud/post-processor/ucloud-import" vagrantbuilder "github.com/hashicorp/packer-plugin-vagrant/builder/vagrant" vagrantpostprocessor "github.com/hashicorp/packer-plugin-vagrant/post-processor/vagrant" vagrantcloudpostprocessor "github.com/hashicorp/packer-plugin-vagrant/post-processor/vagrant-cloud" @@ -123,7 +121,6 @@ var VendoredBuilders = map[string]packersdk.Builder{ "qemu": new(qemubuilder.Builder), "tencentcloud-cvm": new(tencentcloudcvmbuilder.Builder), "triton": new(tritonbuilder.Builder), - "ucloud-uhost": new(uclouduhostbuilder.Builder), "vagrant": new(vagrantbuilder.Builder), "vsphere-clone": new(vsphereclonebuilder.Builder), "vsphere-iso": new(vsphereisobuilder.Builder), @@ -162,7 +159,6 @@ var VendoredPostProcessors = map[string]packersdk.PostProcessor{ "docker-tag": new(dockertagpostprocessor.PostProcessor), "googlecompute-export": new(googlecomputeexportpostprocessor.PostProcessor), "googlecompute-import": new(googlecomputeimportpostprocessor.PostProcessor), - "ucloud-import": new(ucloudimportpostprocessor.PostProcessor), "vagrant": new(vagrantpostprocessor.PostProcessor), "vagrant-cloud": new(vagrantcloudpostprocessor.PostProcessor), "vsphere-template": new(vspheretemplatepostprocessor.PostProcessor), diff --git a/go.mod b/go.mod index cf97b84eb9c..5e281de6f18 100644 --- a/go.mod +++ b/go.mod @@ -87,7 +87,6 @@ require ( github.com/hashicorp/packer-plugin-salt v1.0.0 github.com/hashicorp/packer-plugin-tencentcloud v1.0.6 github.com/hashicorp/packer-plugin-triton v1.0.2 - github.com/hashicorp/packer-plugin-ucloud v1.0.1 github.com/hashicorp/packer-plugin-vagrant v1.0.3 github.com/hashicorp/packer-plugin-virtualbox v1.0.4 github.com/hashicorp/packer-plugin-vmware v1.0.7 @@ -208,7 +207,6 @@ require ( github.com/joyent/triton-go v1.8.5 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect - github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect github.com/kr/fs v0.1.0 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786 // indirect @@ -233,15 +231,12 @@ require ( github.com/rivo/uniseg v0.2.0 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect - github.com/sirupsen/logrus v1.4.2 // indirect github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 // indirect github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.367 // indirect github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.366 // indirect github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.366 // indirect github.com/tklauser/go-sysconf v0.3.9 // indirect github.com/tklauser/numcpus v0.4.0 // indirect - github.com/ucloud/ucloud-sdk-go v0.20.2 // indirect - github.com/ufilesdk-dev/ufile-gosdk v1.0.1 // indirect github.com/ugorji/go/codec v1.2.6 // indirect github.com/vmware/govmomi v0.29.0 // indirect github.com/xanzy/ssh-agent v0.3.0 // indirect diff --git a/go.sum b/go.sum index 1b1902abd63..f2fcdcd2fbb 100644 --- a/go.sum +++ b/go.sum @@ -569,8 +569,6 @@ github.com/hashicorp/packer-plugin-tencentcloud v1.0.6 h1:h7thXtVaXZhrF5L+bMcdMk github.com/hashicorp/packer-plugin-tencentcloud v1.0.6/go.mod h1:J7RslhmI+X7EdAVOtEp59X7L3L5VGyZNwiXxDyIpYpI= github.com/hashicorp/packer-plugin-triton v1.0.2 h1:Yla93I7Jl/WXCuCRWYYR0J8/57X4puGLZ07wBn+QS9w= github.com/hashicorp/packer-plugin-triton v1.0.2/go.mod h1:4eeTOUPYYD1B9iNF0FMqfVczqhTRuL9bXn3AqJa2N9Y= -github.com/hashicorp/packer-plugin-ucloud v1.0.1 h1:zHNRpIwXZLGZymj7Jf752Hs0lhywJFiEF1jbCAP0bd0= -github.com/hashicorp/packer-plugin-ucloud v1.0.1/go.mod h1:Blwxt0UxAdXQWZJntwlGkFQ/C1ftxi7L6WSB3namT1U= github.com/hashicorp/packer-plugin-vagrant v1.0.3 h1:IUfEdYuAjSjGsgJI2rnZ1qEo5rI0UWoueJ+yq9ysx4M= github.com/hashicorp/packer-plugin-vagrant v1.0.3/go.mod h1:Ymg8LJrT8N2Dclu91G3ZhXpE67jL7hfbtyDVKeNsKTc= github.com/hashicorp/packer-plugin-virtualbox v1.0.4 h1:mceFO34yhBU4BUMmCcQAB6KQ98GPjBIXTG3eS22RmZM= @@ -647,7 +645,6 @@ github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgo github.com/klauspost/pgzip v1.2.5 h1:qnWYvvKqedOF2ulHpMG72XQol4ILEJ8k2wwRl/Km8oE= github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kortschak/utter v0.0.0-20190412033250-50fe362e6560/go.mod h1:oDr41C7kH9wvAikWyFhr6UFr8R7nelpmCF5XR5rL7I8= github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= @@ -845,10 +842,8 @@ github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMT github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.3.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= -github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 h1:JIAuq3EEf9cgbU6AtGPK4CTG3Zf6CKMNqf0MHTggAUA= github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= @@ -900,10 +895,6 @@ github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq// github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/ucloud/ucloud-sdk-go v0.20.2 h1:ZNB38C7oZ2imCHEC79mVFvVT+ASkbryriOkZ+q2E0XI= -github.com/ucloud/ucloud-sdk-go v0.20.2/go.mod h1:dyLmFHmUfgb4RZKYQP9IArlvQ2pxzFthfhwxRzOEPIw= -github.com/ufilesdk-dev/ufile-gosdk v1.0.1 h1:TNtFN3vO8ghuxLKBwQqSELllHYP4rggvXCox8JtVV0Y= -github.com/ufilesdk-dev/ufile-gosdk v1.0.1/go.mod h1:R5FMQxkQ+QK/9Vz+jfnJP4rZIktYrRcWmuAnbOSkROI= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.2.6/go.mod h1:anCg0y61KIhDlPZmnH+so+RQbysYVyDko0IMgJv0Nn0= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= diff --git a/website/data/plugins-manifest.json b/website/data/plugins-manifest.json index 07f9f259d3a..906ad1023e6 100644 --- a/website/data/plugins-manifest.json +++ b/website/data/plugins-manifest.json @@ -312,7 +312,7 @@ { "title": "UCloud", "path": "ucloud", - "repo": "hashicorp/packer-plugin-ucloud", + "repo": "ucloud/packer-plugin-ucloud", "version": "latest", "pluginTier": "community" }, From 8d93b3fbd4e1bb00afb45b0a5632dcda71f1764c Mon Sep 17 00:00:00 2001 From: Ernst-Christian Kloeden <36385444+antikaspar@users.noreply.github.com> Date: Wed, 5 Apr 2023 15:52:10 +0200 Subject: [PATCH 068/381] website: fix typo in documentation of validate command (#12344) --- website/content/docs/commands/validate.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/commands/validate.mdx b/website/content/docs/commands/validate.mdx index 80637de4d63..0827f5b53c0 100644 --- a/website/content/docs/commands/validate.mdx +++ b/website/content/docs/commands/validate.mdx @@ -47,7 +47,7 @@ Errors validating build 'vmware'. 1 error(s) occurred: source block's "name" label, unless an in-build source definition adds the "name" configuration option. -- `-no-warn-on-undeclared-var` - Silence warnings when the a variable definition +- `-no-warn-undeclared-var` - Silence warnings when the variable definition file contains variable assignments for undeclared variables. This can occur when using a var-file that contains a large amount of unused variables for a given HCL2 template. For HCL2 template defining a value for a variable in a From 290fb9d9083104d78ccc0e68debb0adba1737182 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 6 Apr 2023 16:51:48 -0400 Subject: [PATCH 069/381] Update CHANGELOG --- CHANGELOG.md | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index dcc6bc92241..64a569ba9bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,58 @@ already specified in the environment. [GH-12172](https://github.com/hashicorp/packer/pull/12172) +## 1.8.7 (Upcoming) + +### NOTES: + +* packer-plugin-linode: The Linode plugin has been handed over to the Linode + team. New releases for this plugin are available at + https://github.com/linode/packer-plugin-linode. This plugin is is no longer + being bundled in the Packer binary release. Existing references to the + plugin will continue to work but users are advised to update the + required_plugins block to use the new plugin source address. + [GH-12329](https://github.com/hashicorp/packer/pull/12329) + ``` + required_plugins { + linode = { + source = "github.com/linode/linode" + version = ">=1.0.5" + } + } + ``` +* packer-plugin-ucloud: The UCloud plugin has been handed over to the UCloud + team. New releases for this plugin are available at + https://github.com/ucloud/packer-plugin-ucloud. This plugin is is no longer + being bundled in the Packer binary release. Existing references to the + plugin will continue to work but users are advised to update the + required_plugins block to use the new plugin source address. + [GH-12335](https://github.com/hashicorp/packer/pull/12335) + ``` + required_plugins { + ucloud = { + source = "github.com/ucloud/ucloud" + version = ">=1.0.8" + } + } + ``` + +### Plugins +* Migrate external Linode plugin to linode/packer-plugin-linode. + [GH-12329](https://github.com/hashicorp/packer/pull/12329) +* Migrate external UCloud plugin to ucloud/packer-plugin-ucloud. + [GH-12335](https://github.com/hashicorp/packer/pull/12335) + +### BUG FIXES +* Bump github.com/hashicorp/hcp-sdk-go to 0.36.0. + [GH-12292](https://github.com/hashicorp/packer/pull/12292) +* Bump github.com/hashicorp/packer-plugin-sdk to 0.4.0 to address CVE-2023-0475, CVE-2022-41723. + [GH-12306](https://github.com/hashicorp/packer/pull/12306) +* cmd/hcl2_upgrade: Fix crash when variables block is undefined in legacy JSON + templates. [GH-12257](https://github.com/hashicorp/packer/pull/12257) +* Fix regression introduced in 1.8.6, where configurations with custom builder + names , via the name attribute, but would display the name to STDOUT with + uninterpolated variable values. + [GH-12290](https://github.com/hashicorp/packer/pull/12290) ## 1.8.6 (February 15, 2023) ### NOTES: From 06653b98c00b9a4bf21cd5e2cad03a68b7dff09a Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 7 Apr 2023 13:44:26 -0400 Subject: [PATCH 070/381] Update allowed dependencies to track (#12355) * Packer plugins rely on the Packer SDK for the majority of its HCL dependency. To prevent issues with the version of go-cty or hcl/v2 pkg getting out of sync this changes sets the allowed dependency to packer-plugin-sdk only. * HashiCorp is standardizing on pinning versions of allowed GitHub actions to prevent the introduction of potential security issues. This change removes GitHub actions from dependabot. --- .github/dependabot.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 96502c2e109..bbf1c27f6ce 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -6,10 +6,4 @@ updates: interval: daily allow: - dependency-name: "github.com/hashicorp/packer-plugin-sdk" - - dependency-name: "github.com/hashicorp/hcl/v2" - - dependency-name: "github.com/zclconf/go-cty" - dependency-name: "github.com/hashicorp/hcp-sdk-go" -- package-ecosystem: github-actions - directory: / - schedule: - interval: daily From e0a52866459f86c3dab9581ea0134ca285f4d9bf Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 12 Apr 2023 14:27:39 -0400 Subject: [PATCH 071/381] cmd/console: Add config-type flag to command help (#12360) It is not clear that the console command runs in legacy JSON mode by default and that users can specify the -config-type flag to toggle HCL2 mode. This change adds the config-type flag to the command's help text to alert users of the gotcha. In the next minor Packer release the console command will be updated to default to HCL2 mode. Relates to: #12359 Relates to: #10603 --- command/console.go | 1 + 1 file changed, 1 insertion(+) diff --git a/command/console.go b/command/console.go index 431cc147755..54281fdd6ed 100644 --- a/command/console.go +++ b/command/console.go @@ -85,6 +85,7 @@ Usage: packer console [options] [TEMPLATE] Options: -var 'key=value' Variable for templates, can be used multiple times. -var-file=path JSON or HCL2 file containing user variables. + -config-type Set to 'hcl2' to run in HCL2 mode when no file is passed. Defaults to json. ` return strings.TrimSpace(helpText) From 485e0807258aae7328ba95036037a3d29e54dd97 Mon Sep 17 00:00:00 2001 From: Alan Szlosek Jr Date: Wed, 12 Apr 2023 18:05:29 -0400 Subject: [PATCH 072/381] clarify local and input variables (#12334) * clarify local and input variables * Apply suggestions from code review Co-authored-by: Rose M Koron <32436232+rkoron007@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Rose M Koron <32436232+rkoron007@users.noreply.github.com> Co-authored-by: Wilken Rivera * Apply suggestions from code review Co-authored-by: Wilken Rivera --------- Co-authored-by: Rose M Koron <32436232+rkoron007@users.noreply.github.com> Co-authored-by: Wilken Rivera --- .../docs/templates/hcl_templates/locals.mdx | 29 +++++++++---------- .../templates/hcl_templates/variables.mdx | 10 +++---- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/website/content/docs/templates/hcl_templates/locals.mdx b/website/content/docs/templates/hcl_templates/locals.mdx index 21f6914b464..456f6af90ec 100644 --- a/website/content/docs/templates/hcl_templates/locals.mdx +++ b/website/content/docs/templates/hcl_templates/locals.mdx @@ -1,35 +1,34 @@ --- -page_title: Local Values - HCL Configuration Language +page_title: Local Variables - HCL Configuration Language description: >- - Local values assign a name to an expression that can then be used multiple + Local variables assign a name to an expression that you can use multiple times within a folder. --- -# Local Values +# Local Variables `@include 'from-1.5/beta-hcl2-note.mdx'` There are two kinds of variables in HCL Packer templates: Input variables, sometimes simply called "variables", and Local variables, also known as -"locals". Input variables may have defaults, but those defaults can -be overridden from the command line or special variable files. Local variables -can be thought of as constants, and are not able to be overridden at runtime. +"locals". Input variables may have defaults, but those defaults can be +overridden using command line options, environment variables, or variable +definitions files. Local variables can not be overridden. This page is about local variables. To learn about input variables, see the [input variables](/packer/docs/templates/hcl_templates/variables) page. -Local values assign a name to an expression, that can then be used multiple -times within a folder. - -If [variables](/packer/docs/templates/hcl_templates/variables) are analogous to function arguments then -_local values_ are comparable to a function's local variables. +Local variables assign a name to an expression, which you can use multiple +times within a folder. The expression is evaluated at run time, and can +reference input variables, other local variables, data sources, and HCL +functions. Input variable and local variable usage are introduced in the [_Variables Guide_](/packer/guides/hcl/variables). ## Examples -Local values are defined in `local` or `locals` blocks: +Local variables are defined in a `local` or `locals` block: ```hcl # Using the local block allows you to mark locals as sensitive, which will @@ -51,7 +50,7 @@ locals { name_prefix = "${var.name_prefix != "" ? var.name_prefix : local.default_name_prefix}" } -# Local values can be interpolated elsewhere using the "local." prefix. +# Local variables can be referenced using the "local." prefix. source "virtualbox-iso" "example" { output = "${local.name_prefix}-files" # ... @@ -120,10 +119,10 @@ The expression of a local value can refer to other locals, but reference cycles are not allowed. That is, a local cannot refer to itself or to a variable that refers (directly or indirectly) back to it. -It's recommended to group together logically-related local values into a single +It's recommended to group together logically-related local variables into a single block, particularly if they depend on each other. This will help the reader understand the relationships between variables. Conversely, prefer to define -_unrelated_ local values in _separate_ blocks, and consider annotating each +_unrelated_ local variables in _separate_ blocks, and consider annotating each block with a comment describing any context common to all of the enclosed locals. diff --git a/website/content/docs/templates/hcl_templates/variables.mdx b/website/content/docs/templates/hcl_templates/variables.mdx index 43b2a7db16f..4c8f856fafc 100644 --- a/website/content/docs/templates/hcl_templates/variables.mdx +++ b/website/content/docs/templates/hcl_templates/variables.mdx @@ -11,9 +11,10 @@ description: |- There are two kinds of variables in HCL Packer templates: Input variables, sometimes simply called "variables", and Local variables, also known as -"locals". Input variables may have defaults, but those defaults can -be overridden from the command line or special variable files. Local variables -can be thought of as constants, and are not able to be overridden at runtime. +"locals". Input variables may have defaults, but those defaults can be +overridden using command line options, environment variables, or variable +definitions files. However, nothing can change the value of an input variable +after the initial override. This page is about input variables. To learn about local variables, see the [locals](/packer/docs/templates/hcl_templates/locals) page. @@ -21,9 +22,6 @@ This page is about input variables. To learn about local variables, see the Input variables serve as parameters for a Packer build, allowing aspects of the build to be customized without altering the build's own source code. -When you declare variables in the build of your configuration, you can set -their values using CLI options and environment variables. - Input variable and local variable usage are introduced in the [_Variables Guide_](/packer/guides/hcl/variables). From 43b9bef6fdcc5f4f3cde077a9b54a8b41080e6be Mon Sep 17 00:00:00 2001 From: Michael Rolli Date: Thu, 13 Apr 2023 16:15:02 +0200 Subject: [PATCH 073/381] Enhance zsh completion for the packer command (#12356) Now completes more commands and also matches template files both for *pkr.hcl and *pkr.json as suggested by the packer template naming scheme. --- contrib/zsh-completion/_packer | 46 +++++++++++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/contrib/zsh-completion/_packer b/contrib/zsh-completion/_packer index 7653991ea67..2210d035b94 100644 --- a/contrib/zsh-completion/_packer +++ b/contrib/zsh-completion/_packer @@ -3,8 +3,13 @@ _packer () { local -a sub_commands && sub_commands=( 'build:Build image(s) from template' + 'console:Creates a console for testing variable interpolation' 'fix:Fixes templates from old versions of packer' + 'fmt:Rewrites HCL2 config files to canonical format' + 'hcl2_upgrade:Transform a JSON template into an HCL2 configuration' + 'init:Install missing plugins or upgrade plugins' 'inspect:See components of a template' + 'plugins:Interact with Packer plugins and catalog' 'validate:Check that a template is valid' 'version:Prints the Packer version' ) @@ -19,14 +24,39 @@ _packer () { '-only=[(foo,bar,baz) Only build the given builds by name.]' '-parallel=[(false) Disable parallelization. (Default: false)]' '-parallel-builds=[(0) Number of builds to run in parallel. (Defaults to infinite: 0)]' + '-timestamp-ui[Enable prefixing of each ui output with an RFC3339 timestamp]' '-var[("key=value") Variable for templates, can be used multiple times.]' '-var-file=[(path) JSON or HCL2 file containing user variables.]' - '(-)*:files:_files -g "*.json"' + '-warn-on-undeclared-var[Display warnings for user variable files containing undeclared variables.]' + '(-)*:files:_files -g "*pkr.{hcl,json}"' + ) + + local -a console_arguments && console_arguments=( + '-var[("key=value") Variable for templates, can be used multiple times.]' + '-var-file=[(path) JSON or HCL2 file containing user variables.]' + '(-)*:files:_files -g "*pkr.{hcl,json}"' + ) + + local -a fix_arguments && fix_arguments=( + '(-)*:files:_files -g "*pkr.{hcl,json}"' + ) + + local -a fmt_arguments && fmt_arguments=( + '-check[Check if the input is formatted. Exit status 0 = properly formatted, non-zero otherwise.]' + '-diff[Display diffs of formatting change]' + '-write=[(false) Don not write to source files (always disabled if using -check)]' + '-recursive[Also process files in subdirectories. By default cwd only]' + '(-)*:files:_files -g "*pkr.{hcl,json}"' + ) + + local -a init_arguments && init_arguments=( + '-upgrade[on top also update plugins to latest]' + '(-)*:files:_files -g "*pkr.{hcl,json}"' ) local -a inspect_arguments && inspect_arguments=( '-machine-readable[Machine-readable output]' - '(-)*:files:_files -g "*.json"' + '(-)*:files:_files -g "*pkr.{hcl,json}"' ) local -a validate_arguments && validate_arguments=( @@ -35,7 +65,9 @@ _packer () { '-only=[(foo,bar,baz) Validate only these builds.]' '-var[("key=value") Variable for templates, can be used multiple times.]' '-var-file=[(path) JSON or HCL2 file containing user variables.]' - '(-)*:files:_files -g "*.json"' + '-no-warn-undeclared-var[Disable warnings for user variable files containing undeclared variables.]' + '-evaluate-datasources[(false) Evaluate data sources during validation (HCL2 only, may incur costs).]' + '(-)*:files:_files -g "*pkr.{hcl,json}"' ) _arguments -C \ @@ -49,6 +81,14 @@ _packer () { case $line[1] in build) _arguments -s -S : $build_arguments ;; + console) + _arguments -s -S : $console_arguments ;; + fix) + _arguments -s -S : $fix_arguments ;; + fmt) + _arguments -s -S : $fmt_arguments ;; + init) + _arguments -s -S : $init_arguments ;; inspect) _arguments -s -S : $inspect_arguments ;; validate) From 26af7901fec0cf71e0513fb243191baf8a2d7008 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 14 Apr 2023 13:00:24 -0400 Subject: [PATCH 074/381] Update fix command autocomplete to work for JSON template files only (#12366) --- contrib/zsh-completion/_packer | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/zsh-completion/_packer b/contrib/zsh-completion/_packer index 2210d035b94..4b361b4aaf7 100644 --- a/contrib/zsh-completion/_packer +++ b/contrib/zsh-completion/_packer @@ -38,7 +38,7 @@ _packer () { ) local -a fix_arguments && fix_arguments=( - '(-)*:files:_files -g "*pkr.{hcl,json}"' + '(-)*:files:_files -g "*.json"' ) local -a fmt_arguments && fmt_arguments=( From f1a41b488fce1a892dd946ce191a49fdfe08e5f5 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 17 Mar 2023 10:26:41 -0400 Subject: [PATCH 075/381] packer: add HCL2 support for telemetry Packer's telemetry package captures the field names from a configuration on legacy JSON templates, but did not contain any code for handling HCL2 template configurations. This commit adds a routine to extract the field names from a HCL2 configuration once flattened, and adds some glue code to propagate the configurations to the telemetry structures. --- hcl2template/common_test.go | 9 ++++ hcl2template/types.packer_config.go | 15 +++++++ packer/build.go | 56 ++++++++++++++++++----- packer/build_test.go | 23 +++++----- packer/telemetry.go | 70 ++++++++++++++++++++++++----- 5 files changed, 140 insertions(+), 33 deletions(-) diff --git a/hcl2template/common_test.go b/hcl2template/common_test.go index 62f937da94f..cb37a7bf996 100644 --- a/hcl2template/common_test.go +++ b/hcl2template/common_test.go @@ -367,6 +367,15 @@ var cmpOpts = []cmp.Option{ cmpopts.IgnoreFields(VariableAssignment{}, "Expr", // its an interface ), + cmpopts.IgnoreFields(packer.CoreBuild{}, + "HCLConfig", + ), + cmpopts.IgnoreFields(packer.CoreBuildProvisioner{}, + "HCLConfig", + ), + cmpopts.IgnoreFields(packer.CoreBuildPostProcessor{}, + "HCLConfig", + ), cmpopts.IgnoreTypes(hcl2template.MockBuilder{}), cmpopts.IgnoreTypes(HCL2Ref{}), cmpopts.IgnoreTypes([]*LocalBlock{}), diff --git a/hcl2template/types.packer_config.go b/hcl2template/types.packer_config.go index b3802ea9706..84d1fe8de7d 100644 --- a/hcl2template/types.packer_config.go +++ b/hcl2template/types.packer_config.go @@ -362,7 +362,10 @@ func (cfg *PackerConfig) evaluateDatasources(skipExecution bool) hcl.Diagnostics continue } + dsOpts, _ := decodeHCL2Spec(body, cfg.EvalContext(DatasourceContext, nil), datasource) + sp := packer.CheckpointReporter.AddSpan(ref.Type, "datasource", dsOpts) realValue, err := datasource.Execute() + sp.End(err) if err != nil { diags = append(diags, &hcl.Diagnostic{ Summary: err.Error(), @@ -444,7 +447,10 @@ func (cfg *PackerConfig) recursivelyEvaluateDatasources(ref DatasourceRef, depen return dependencies, diags, shouldContinue } + opts, _ := decodeHCL2Spec(ds.block.Body, cfg.EvalContext(DatasourceContext, nil), datasource) + sp := packer.CheckpointReporter.AddSpan(ref.Type, "datasource", opts) realValue, err := datasource.Execute() + sp.End(err) if err != nil { diags = append(diags, &hcl.Diagnostic{ Summary: err.Error(), @@ -489,6 +495,8 @@ func (cfg *PackerConfig) getCoreBuildProvisioner(source SourceUseBlock, pb *Prov return packer.CoreBuildProvisioner{}, diags } + flatProvisionerCfg, _ := decodeHCL2Spec(pb.HCL2Ref.Rest, ectx, provisioner) + // If we're pausing, we wrap the provisioner in a special pauser. if pb.PauseBefore != 0 { provisioner = &packer.PausedProvisioner{ @@ -512,6 +520,7 @@ func (cfg *PackerConfig) getCoreBuildProvisioner(source SourceUseBlock, pb *Prov PType: pb.PType, PName: pb.PName, Provisioner: provisioner, + HCLConfig: flatProvisionerCfg, }, diags } @@ -550,10 +559,13 @@ func (cfg *PackerConfig) getCoreBuildPostProcessors(source SourceUseBlock, block continue } + flatPostProcessorCfg, moreDiags := decodeHCL2Spec(ppb.HCL2Ref.Rest, ectx, postProcessor) + pps = append(pps, packer.CoreBuildPostProcessor{ PostProcessor: postProcessor, PName: ppb.PName, PType: ppb.PType, + HCLConfig: flatPostProcessorCfg, KeepInputArtifact: ppb.KeepInputArtifact, }) } @@ -656,6 +668,9 @@ func (cfg *PackerConfig) GetBuilds(opts packer.GetBuildsOptions) ([]packersdk.Bu continue } + decoded, _ := decodeHCL2Spec(srcUsage.Body, cfg.EvalContext(BuildContext, nil), builder) + pcb.HCLConfig = decoded + // If the builder has provided a list of to-be-generated variables that // should be made accessible to provisioners, pass that list into // the provisioner prepare() so that the provisioner can appropriately diff --git a/packer/build.go b/packer/build.go index 688692c4c5b..3309bb194d5 100644 --- a/packer/build.go +++ b/packer/build.go @@ -13,6 +13,7 @@ import ( packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/packerbuilderdata" "github.com/hashicorp/packer/version" + "github.com/zclconf/go-cty/cty" ) // A CoreBuild struct represents a single build job, the result of which should @@ -20,10 +21,19 @@ import ( // multiple files, of course, but it should be for only a single provider (such // as VirtualBox, EC2, etc.). type CoreBuild struct { - BuildName string - Type string - Builder packersdk.Builder - BuilderConfig interface{} + BuildName string + Type string + Builder packersdk.Builder + // BuilderConfig is the config for the builder. + // + // Is is deserialised directly from the JSON template, + // and is only populated for legacy JSON templates. + BuilderConfig interface{} + // HCLConfig is the HCL config for the builder + // + // Its only use is for telemetry, since we use it to extract the + // field names from it. + HCLConfig cty.Value BuilderType string hooks map[string][]packersdk.Hook Provisioners []CoreBuildProvisioner @@ -45,9 +55,16 @@ type CoreBuild struct { // CoreBuildPostProcessor Keeps track of the post-processor and the // configuration of the post-processor used within a build. type CoreBuildPostProcessor struct { - PostProcessor packersdk.PostProcessor - PType string - PName string + PostProcessor packersdk.PostProcessor + PType string + PName string + // HCLConfig is the HCL config for the post-processor + // + // Its only use is for telemetry, since we use it to extract the + // field names from it. + HCLConfig cty.Value + // config is JSON-specific, the configuration for the post-processor + // deserialised directly from the JSON template config map[string]interface{} KeepInputArtifact *bool } @@ -58,7 +75,14 @@ type CoreBuildProvisioner struct { PType string PName string Provisioner packersdk.Provisioner - config []interface{} + // HCLConfig is the HCL config for the provisioner + // + // Its only use is for telemetry, since we use it to extract the + // field names from it. + HCLConfig cty.Value + // config is JSON-specific, and is the configuration of the + // provisioner, with overrides + config []interface{} } // Returns the name of the build. @@ -176,6 +200,8 @@ func (b *CoreBuild) Run(ctx context.Context, originalUi packersdk.Ui) ([]packers var pConfig interface{} if len(p.config) > 0 { pConfig = p.config[0] + } else { + pConfig = p.HCLConfig } if b.debug { hookedProvisioners[i] = &HookedProvisioner{ @@ -221,8 +247,13 @@ func (b *CoreBuild) Run(ctx context.Context, originalUi packersdk.Ui) ([]packers Ui: originalUi, } + var ts *TelemetrySpan log.Printf("Running builder: %s", b.BuilderType) - ts := CheckpointReporter.AddSpan(b.Type, "builder", b.BuilderConfig) + if b.BuilderConfig != nil { + ts = CheckpointReporter.AddSpan(b.Type, "builder", b.BuilderConfig) + } else { + ts = CheckpointReporter.AddSpan(b.Type, "builder", b.HCLConfig) + } builderArtifact, err := b.Builder.Run(ctx, builderUi, hook) ts.End(err) if err != nil { @@ -260,7 +291,12 @@ PostProcessorRunSeqLoop: } else { builderUi.Say(fmt.Sprintf("Running post-processor: %s (type %s)", corePP.PName, corePP.PType)) } - ts := CheckpointReporter.AddSpan(corePP.PType, "post-processor", corePP.config) + var ts *TelemetrySpan + if corePP.config != nil { + ts = CheckpointReporter.AddSpan(corePP.PType, "post-processor", corePP.config) + } else { + ts = CheckpointReporter.AddSpan(corePP.PType, "post-processor", corePP.HCLConfig) + } artifact, defaultKeep, forceOverride, err := corePP.PostProcessor.PostProcess(ctx, ppUi, priorArtifact) ts.End(err) if err != nil { diff --git a/packer/build_test.go b/packer/build_test.go index 4ae5f253753..86531d8ca4b 100644 --- a/packer/build_test.go +++ b/packer/build_test.go @@ -12,6 +12,7 @@ import ( packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/packerbuilderdata" "github.com/hashicorp/packer/version" + "github.com/zclconf/go-cty/cty" ) func boolPointer(tf bool) *bool { @@ -35,7 +36,7 @@ func testBuild() *CoreBuild { }, PostProcessors: [][]CoreBuildPostProcessor{ { - {&MockPostProcessor{ArtifactId: "pp"}, "testPP", "testPPName", make(map[string]interface{}), boolPointer(true)}, + {&MockPostProcessor{ArtifactId: "pp"}, "testPP", "testPPName", cty.Value{}, make(map[string]interface{}), boolPointer(true)}, }, }, Variables: make(map[string]string), @@ -305,7 +306,7 @@ func TestBuild_Run_Artifacts(t *testing.T) { build = testBuild() build.PostProcessors = [][]CoreBuildPostProcessor{ { - {&MockPostProcessor{ArtifactId: "pp"}, "pp", "testPPName", make(map[string]interface{}), boolPointer(false)}, + {&MockPostProcessor{ArtifactId: "pp"}, "pp", "testPPName", cty.Value{}, make(map[string]interface{}), boolPointer(false)}, }, } @@ -330,10 +331,10 @@ func TestBuild_Run_Artifacts(t *testing.T) { build = testBuild() build.PostProcessors = [][]CoreBuildPostProcessor{ { - {&MockPostProcessor{ArtifactId: "pp1"}, "pp", "testPPName", make(map[string]interface{}), boolPointer(false)}, + {&MockPostProcessor{ArtifactId: "pp1"}, "pp", "testPPName", cty.Value{}, make(map[string]interface{}), boolPointer(false)}, }, { - {&MockPostProcessor{ArtifactId: "pp2"}, "pp", "testPPName", make(map[string]interface{}), boolPointer(true)}, + {&MockPostProcessor{ArtifactId: "pp2"}, "pp", "testPPName", cty.Value{}, make(map[string]interface{}), boolPointer(true)}, }, } @@ -358,12 +359,12 @@ func TestBuild_Run_Artifacts(t *testing.T) { build = testBuild() build.PostProcessors = [][]CoreBuildPostProcessor{ { - {&MockPostProcessor{ArtifactId: "pp1a"}, "pp", "testPPName", make(map[string]interface{}), boolPointer(false)}, - {&MockPostProcessor{ArtifactId: "pp1b"}, "pp", "testPPName", make(map[string]interface{}), boolPointer(true)}, + {&MockPostProcessor{ArtifactId: "pp1a"}, "pp", "testPPName", cty.Value{}, make(map[string]interface{}), boolPointer(false)}, + {&MockPostProcessor{ArtifactId: "pp1b"}, "pp", "testPPName", cty.Value{}, make(map[string]interface{}), boolPointer(true)}, }, { - {&MockPostProcessor{ArtifactId: "pp2a"}, "pp", "testPPName", make(map[string]interface{}), boolPointer(false)}, - {&MockPostProcessor{ArtifactId: "pp2b"}, "pp", "testPPName", make(map[string]interface{}), boolPointer(false)}, + {&MockPostProcessor{ArtifactId: "pp2a"}, "pp", "testPPName", cty.Value{}, make(map[string]interface{}), boolPointer(false)}, + {&MockPostProcessor{ArtifactId: "pp2b"}, "pp", "testPPName", cty.Value{}, make(map[string]interface{}), boolPointer(false)}, }, } @@ -389,7 +390,7 @@ func TestBuild_Run_Artifacts(t *testing.T) { build.PostProcessors = [][]CoreBuildPostProcessor{ { { - &MockPostProcessor{ArtifactId: "pp", Keep: true, ForceOverride: true}, "pp", "testPPName", make(map[string]interface{}), boolPointer(false), + &MockPostProcessor{ArtifactId: "pp", Keep: true, ForceOverride: true}, "pp", "testPPName", cty.Value{}, make(map[string]interface{}), boolPointer(false), }, }, } @@ -417,7 +418,7 @@ func TestBuild_Run_Artifacts(t *testing.T) { build.PostProcessors = [][]CoreBuildPostProcessor{ { { - &MockPostProcessor{ArtifactId: "pp", Keep: true, ForceOverride: false}, "pp", "testPPName", make(map[string]interface{}), boolPointer(false), + &MockPostProcessor{ArtifactId: "pp", Keep: true, ForceOverride: false}, "pp", "testPPName", cty.Value{}, make(map[string]interface{}), boolPointer(false), }, }, } @@ -444,7 +445,7 @@ func TestBuild_Run_Artifacts(t *testing.T) { build.PostProcessors = [][]CoreBuildPostProcessor{ { { - &MockPostProcessor{ArtifactId: "pp", Keep: true, ForceOverride: false}, "pp", "testPPName", make(map[string]interface{}), nil, + &MockPostProcessor{ArtifactId: "pp", Keep: true, ForceOverride: false}, "pp", "testPPName", cty.Value{}, make(map[string]interface{}), nil, }, }, } diff --git a/packer/telemetry.go b/packer/telemetry.go index 2dd7a6f2b58..9148ea9f110 100644 --- a/packer/telemetry.go +++ b/packer/telemetry.go @@ -5,6 +5,7 @@ package packer import ( "context" + "fmt" "log" "os" "path/filepath" @@ -14,6 +15,7 @@ import ( checkpoint "github.com/hashicorp/go-checkpoint" "github.com/hashicorp/packer-plugin-sdk/pathing" packerVersion "github.com/hashicorp/packer/version" + "github.com/zclconf/go-cty/cty" ) const TelemetryVersion string = "beta/packer/5" @@ -157,22 +159,66 @@ func flattenConfigKeys(options interface{}) []string { var flatten func(string, interface{}) []string flatten = func(prefix string, options interface{}) (strOpts []string) { - if m, ok := options.(map[string]interface{}); ok { - for k, v := range m { - if prefix != "" { - k = prefix + "/" + k - } - if n, ok := v.(map[string]interface{}); ok { - strOpts = append(strOpts, flatten(k, n)...) - } else { - strOpts = append(strOpts, k) - } - } + switch opt := options.(type) { + case map[string]interface{}: + return flattenJSON(prefix, options) + case cty.Value: + return flattenHCL(prefix, opt) + default: + return nil } - return } flattened := flatten("", options) sort.Strings(flattened) return flattened } + +func flattenJSON(prefix string, options interface{}) (strOpts []string) { + if m, ok := options.(map[string]interface{}); ok { + for k, v := range m { + if prefix != "" { + k = prefix + "/" + k + } + if n, ok := v.(map[string]interface{}); ok { + strOpts = append(strOpts, flattenJSON(k, n)...) + } else { + strOpts = append(strOpts, k) + } + } + } + return +} + +func flattenHCL(prefix string, v cty.Value) (args []string) { + if v.IsNull() { + return []string{} + } + t := v.Type() + switch { + case t.IsObjectType(), t.IsMapType(): + if !v.IsKnown() { + return []string{} + } + it := v.ElementIterator() + for it.Next() { + key, val := it.Element() + keyStr := key.AsString() + + if val.IsNull() { + continue + } + + if prefix != "" { + keyStr = fmt.Sprintf("%s/%s", prefix, keyStr) + } + + if val.Type().IsObjectType() || val.Type().IsMapType() { + args = append(args, flattenHCL(keyStr, val)...) + } else { + args = append(args, keyStr) + } + } + } + return args +} From 31921f0c9ffaf50a4a02a6216fc67189d925456a Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Mon, 20 Mar 2023 10:13:04 -0400 Subject: [PATCH 076/381] packer: track template type in spans The template type for a builder, provisioner, post-processor or datasource was not tracked with telemetry data. This commit adds the infrastructure to track this, bumping the schema for non-crashes to `beta/packer/6' at the same time. --- command/meta.go | 2 ++ packer/telemetry.go | 32 +++++++++++++++++++++++++++----- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/command/meta.go b/command/meta.go index 1232aafcabb..99123fd8ec7 100644 --- a/command/meta.go +++ b/command/meta.go @@ -120,9 +120,11 @@ func (m *Meta) GetConfig(cla *MetaArgs) (packer.Handler, int) { switch cfgType { case ConfigTypeHCL2: + packer.CheckpointReporter.SetTemplateType(packer.HCL2Template) // TODO(azr): allow to pass a slice of files here. return m.GetConfigFromHCL(cla) default: + packer.CheckpointReporter.SetTemplateType(packer.JSONTemplate) // TODO: uncomment once we've polished HCL a bit more. // c.Ui.Say(`Legacy JSON Configuration Will Be Used. // The template will be parsed in the legacy configuration style. This style diff --git a/packer/telemetry.go b/packer/telemetry.go index 9148ea9f110..d4e20696649 100644 --- a/packer/telemetry.go +++ b/packer/telemetry.go @@ -18,22 +18,32 @@ import ( "github.com/zclconf/go-cty/cty" ) -const TelemetryVersion string = "beta/packer/5" +type PackerTemplateType string + +const ( + UnknownTemplate PackerTemplateType = "Unknown" + HCL2Template PackerTemplateType = "HCL2" + JSONTemplate PackerTemplateType = "JSON" +) + +const TelemetryVersion string = "beta/packer/6" const TelemetryPanicVersion string = "beta/packer_panic/4" var CheckpointReporter *CheckpointTelemetry type PackerReport struct { - Spans []*TelemetrySpan `json:"spans"` - ExitCode int `json:"exit_code"` - Error string `json:"error"` - Command string `json:"command"` + Spans []*TelemetrySpan `json:"spans"` + ExitCode int `json:"exit_code"` + Error string `json:"error"` + Command string `json:"command"` + TemplateType PackerTemplateType `json:"template_type"` } type CheckpointTelemetry struct { spans []*TelemetrySpan signatureFile string startTime time.Time + templateType PackerTemplateType } func NewCheckpointReporter(disableSignature bool) *CheckpointTelemetry { @@ -57,6 +67,7 @@ func NewCheckpointReporter(disableSignature bool) *CheckpointTelemetry { return &CheckpointTelemetry{ signatureFile: signatureFile, startTime: time.Now().UTC(), + templateType: UnknownTemplate, } } @@ -108,6 +119,15 @@ func (c *CheckpointTelemetry) AddSpan(name, pluginType string, options interface return ts } +// SetTemplateType registers the template type being processed for a Packer command +func (c *CheckpointTelemetry) SetTemplateType(t PackerTemplateType) { + if c == nil { + return + } + + c.templateType = t +} + func (c *CheckpointTelemetry) Finalize(command string, errCode int, err error) error { if c == nil { return nil @@ -124,6 +144,8 @@ func (c *CheckpointTelemetry) Finalize(command string, errCode int, err error) e if err != nil { extra.Error = err.Error() } + + extra.TemplateType = c.templateType params.Payload = extra // b, _ := json.MarshalIndent(params, "", " ") // log.Println(string(b)) From 08d1dfe36c9dba6ce36661c38a825a56bef3afd4 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 26 Apr 2023 14:06:57 -0400 Subject: [PATCH 077/381] Remove external plugin for Digital Ocean (#12376) The Digital Ocean plugin is now maintained and released by the Digital Ocean team. To ensure users are downloading the latest available version the plugin will nolonger be bundled with Packer. --- command/vendored_plugins.go | 4 ---- go.mod | 2 -- go.sum | 4 ---- 3 files changed, 10 deletions(-) diff --git a/command/vendored_plugins.go b/command/vendored_plugins.go index 95065a75ea8..dfbf684e2d5 100644 --- a/command/vendored_plugins.go +++ b/command/vendored_plugins.go @@ -10,8 +10,6 @@ import ( // still vendored with Packer for now. Importing as library instead of // forcing use of packer init, until packer v1.8.0 - digitaloceanbuilder "github.com/digitalocean/packer-plugin-digitalocean/builder/digitalocean" - digitaloceanimportpostprocessor "github.com/digitalocean/packer-plugin-digitalocean/post-processor/digitalocean-import" alicloudecsbuilder "github.com/hashicorp/packer-plugin-alicloud/builder/ecs" alicloudimportpostprocessor "github.com/hashicorp/packer-plugin-alicloud/post-processor/alicloud-import" amazonchrootbuilder "github.com/hashicorp/packer-plugin-amazon/builder/chroot" @@ -99,7 +97,6 @@ var VendoredBuilders = map[string]packersdk.Builder{ "azure-chroot": new(azurechrootbuilder.Builder), "azure-dtl": new(azuredtlbuilder.Builder), "cloudstack": new(cloudstackbuilder.Builder), - "digitalocean": new(digitaloceanbuilder.Builder), "docker": new(dockerbuilder.Builder), "googlecompute": new(googlecomputebuilder.Builder), "hcloud": new(hcloudbuilder.Builder), @@ -152,7 +149,6 @@ var VendoredProvisioners = map[string]packersdk.Provisioner{ var VendoredPostProcessors = map[string]packersdk.PostProcessor{ "alicloud-import": new(alicloudimportpostprocessor.PostProcessor), "amazon-import": new(anazibimportpostprocessor.PostProcessor), - "digitalocean-import": new(digitaloceanimportpostprocessor.PostProcessor), "docker-import": new(dockerimportpostprocessor.PostProcessor), "docker-push": new(dockerpushpostprocessor.PostProcessor), "docker-save": new(dockersavepostprocessor.PostProcessor), diff --git a/go.mod b/go.mod index 5e281de6f18..299b5a3ff64 100644 --- a/go.mod +++ b/go.mod @@ -60,7 +60,6 @@ require ( ) require ( - github.com/digitalocean/packer-plugin-digitalocean v1.1.1 github.com/hashicorp/packer-plugin-alicloud v1.0.7 github.com/hashicorp/packer-plugin-ansible v1.0.3 github.com/hashicorp/packer-plugin-azure v1.4.0 @@ -142,7 +141,6 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/digitalocean/go-libvirt v0.0.0-20201209184759-e2a69bcd5bd1 // indirect github.com/digitalocean/go-qemu v0.0.0-20210326154740-ac9e0b687001 // indirect - github.com/digitalocean/godo v1.82.0 // indirect github.com/dimchansky/utfbom v1.1.1 // indirect github.com/dylanmei/iso8601 v0.1.0 // indirect github.com/emirpasic/gods v1.12.0 // indirect diff --git a/go.sum b/go.sum index f2fcdcd2fbb..65f053dd778 100644 --- a/go.sum +++ b/go.sum @@ -202,10 +202,6 @@ github.com/digitalocean/go-libvirt v0.0.0-20201209184759-e2a69bcd5bd1 h1:j6vGfla github.com/digitalocean/go-libvirt v0.0.0-20201209184759-e2a69bcd5bd1/go.mod h1:QS1XzqZLcDniNYrN7EZefq3wIyb/M2WmJbql4ZKoc1Q= github.com/digitalocean/go-qemu v0.0.0-20210326154740-ac9e0b687001 h1:WAg57gnaAWWjMAELcwHjc2xy0PoXQ5G+vn3+XS6s1jI= github.com/digitalocean/go-qemu v0.0.0-20210326154740-ac9e0b687001/go.mod h1:IetBE52JfFxK46p2n2Rqm+p5Gx1gpu2hRHsrbnPOWZQ= -github.com/digitalocean/godo v1.82.0 h1:lqAit46H1CqJGjh7LDbsamng/UMBME5rvmfH3Vb5Yy8= -github.com/digitalocean/godo v1.82.0/go.mod h1:BPCqvwbjbGqxuUnIKB4EvS/AX7IDnNmt5fwvIkWo+ew= -github.com/digitalocean/packer-plugin-digitalocean v1.1.1 h1:/Ki8nKK/b38L5uu7VqZVf9sNkqm5Qot+AE36zpoXfj0= -github.com/digitalocean/packer-plugin-digitalocean v1.1.1/go.mod h1:87IUPejfcIvtQYqIA7u19+Rk1mpwIM8ny+OyJm8L+X4= github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U= github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= From 3ac1179841bd9c126f204016f5fcfa631322c7d8 Mon Sep 17 00:00:00 2001 From: "hashicorp-tsccr[bot]" <129506189+hashicorp-tsccr[bot]@users.noreply.github.com> Date: Thu, 27 Apr 2023 14:55:22 -0400 Subject: [PATCH 078/381] Result of tsccr-helper -pin-all-workflows . (#12381) Co-authored-by: hashicorp-tsccr[bot] --- .github/workflows/acceptance-test.yml | 10 +++++----- .github/workflows/auto-close-stale-issues.yml | 2 +- .github/workflows/build.yml | 20 +++++++++---------- .github/workflows/check-plugin-docs.yml | 4 ++-- .github/workflows/create-release-branch.yml | 2 +- .github/workflows/go-test.yml | 12 +++++------ .github/workflows/go-validate.yml | 16 +++++++-------- .github/workflows/issue-comment-created.yml | 4 ++-- .github/workflows/issue-migrator.yml | 2 +- .github/workflows/issues-opened.yml | 10 +++++----- .github/workflows/jira.yml | 8 ++++---- .github/workflows/lock.yml | 2 +- .github/workflows/nightly-release.yml | 14 ++++++------- 13 files changed, 53 insertions(+), 53 deletions(-) diff --git a/.github/workflows/acceptance-test.yml b/.github/workflows/acceptance-test.yml index 1d5c4ef6f42..11b4f08b851 100644 --- a/.github/workflows/acceptance-test.yml +++ b/.github/workflows/acceptance-test.yml @@ -19,7 +19,7 @@ jobs: outputs: go-version: ${{ steps.get-go-version.outputs.go-version }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - name: 'Determine Go version' id: get-go-version # We use .go-version as our source of truth for current Go @@ -40,12 +40,12 @@ jobs: # Packer GH Token for API Rate Limiting PACKER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v4 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - name: IAM Assume Role - uses: aws-actions/configure-aws-credentials@v2 + uses: aws-actions/configure-aws-credentials@e1e17a757e536f70e52b5a12b2e8d1d1c60e04ef # v2.0.0 with: role-to-assume: ${{ env.AWS_ROLE_ARN }} aws-region: ${{ env.AWS_REGION }} @@ -70,7 +70,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Send slack notification on failure - uses: slackapi/slack-github-action@v1.23.0 + uses: slackapi/slack-github-action@007b2c3c751a190b6f0f040e47ed024deaa72844 # v1.23.0 with: payload: | { diff --git a/.github/workflows/auto-close-stale-issues.yml b/.github/workflows/auto-close-stale-issues.yml index 91d24bca094..aa6b2e10861 100644 --- a/.github/workflows/auto-close-stale-issues.yml +++ b/.github/workflows/auto-close-stale-issues.yml @@ -14,7 +14,7 @@ jobs: pull-requests: write # for actions/stale to close stale PRs runs-on: ubuntu-latest steps: - - uses: actions/stale@v5.2.0 + - uses: actions/stale@v5.2.0 # TSCCR: no entry for repository "actions/stale" with: repo-token: ${{ secrets.GITHUB_TOKEN }} days-before-issue-stale: 23 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9eb20afc6d0..2eedb08f411 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,7 @@ jobs: outputs: go-version: ${{ steps.get-go-version.outputs.go-version }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - name: 'Determine Go version' id: get-go-version # We use .go-version as our source of truth for current Go @@ -44,7 +44,7 @@ jobs: product-prerelease-version: ${{ steps.set-product-version.outputs.prerelease-product-version }} set-ld-flags: ${{ steps.set-ld-flags.outputs.set-ld-flags }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - name: set product version id: set-product-version uses: hashicorp/actions-set-product-version@v1 @@ -67,7 +67,7 @@ jobs: filepath: ${{ steps.generate-metadata-file.outputs.filepath }} steps: - name: 'Checkout directory' - uses: actions/checkout@v3 + uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - name: Generate metadata file id: generate-metadata-file uses: hashicorp/actions-generate-metadata@main @@ -75,7 +75,7 @@ jobs: version: ${{ needs.set-product-version.outputs.product-version }} product: ${{ env.REPO_NAME }} - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 with: name: metadata.json path: ${{ steps.generate-metadata-file.outputs.filepath }} @@ -105,7 +105,7 @@ jobs: GOPRIVATE: "github.com/hashicorp" GO111MODULE: on steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - name: Go Build env: PRODUCT_VERSION: ${{ needs.set-product-version.outputs.product-version }} @@ -142,7 +142,7 @@ jobs: GO111MODULE: on steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - name: Go Build env: PRODUCT_VERSION: ${{ needs.set-product-version.outputs.product-version }} @@ -177,11 +177,11 @@ jobs: run: | echo "RPM_PACKAGE=$(basename out/*.rpm)" >> $GITHUB_ENV echo "DEB_PACKAGE=$(basename out/*.deb)" >> $GITHUB_ENV - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 with: name: ${{ env.RPM_PACKAGE }} path: out/${{ env.RPM_PACKAGE }} - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 with: name: ${{ env.DEB_PACKAGE }} path: out/${{ env.DEB_PACKAGE }} @@ -204,7 +204,7 @@ jobs: GO111MODULE: on steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - name: Go Build env: PRODUCT_VERSION: ${{ needs.set-product-version.outputs.product-version }} @@ -234,7 +234,7 @@ jobs: env: version: ${{ needs.set-product-version.outputs.product-version }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - name: Docker Build (Action) uses: hashicorp/actions-docker-build@v1 with: diff --git a/.github/workflows/check-plugin-docs.yml b/.github/workflows/check-plugin-docs.yml index 233f2688108..c43ae9cb33c 100644 --- a/.github/workflows/check-plugin-docs.yml +++ b/.github/workflows/check-plugin-docs.yml @@ -23,9 +23,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - name: Setup Node - uses: actions/setup-node@v2 + uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: node-version: '16.x' - name: Install Dependencies diff --git a/.github/workflows/create-release-branch.yml b/.github/workflows/create-release-branch.yml index bde81745517..0d1f4f3953c 100644 --- a/.github/workflows/create-release-branch.yml +++ b/.github/workflows/create-release-branch.yml @@ -4,7 +4,7 @@ jobs: create-branch: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - uses: hashicorp/actions-create-release-branch@v1 with: token: ${{ secrets.ELEVATED_GITHUB_TOKEN }} diff --git a/.github/workflows/go-test.yml b/.github/workflows/go-test.yml index ecdb45b5bd9..4a74d6e0c12 100644 --- a/.github/workflows/go-test.yml +++ b/.github/workflows/go-test.yml @@ -22,8 +22,8 @@ jobs: runs-on: ubuntu-latest name: Linux go tests steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v4 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 with: go-version: '1.18' - run: TESTARGS="-coverprofile=coverage.txt -covermode=atomic" make ci @@ -31,8 +31,8 @@ jobs: runs-on: macos-latest name: Darwin go tests steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v4 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 with: go-version: '1.18' - run: go test ./... -coverprofile=coverage.txt -covermode=atomic @@ -40,8 +40,8 @@ jobs: runs-on: windows-latest name: Windows go tests steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v4 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 with: go-version: '1.18' - run: go test ./... -coverprofile=coverage.txt -covermode=atomic diff --git a/.github/workflows/go-validate.yml b/.github/workflows/go-validate.yml index 068dc79a168..ae87a6da71d 100644 --- a/.github/workflows/go-validate.yml +++ b/.github/workflows/go-validate.yml @@ -18,8 +18,8 @@ jobs: runs-on: ubuntu-latest name: Go Mod Tidy steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v4 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 with: go-version: '1.18' - run: go mod tidy @@ -27,10 +27,10 @@ jobs: runs-on: ubuntu-latest name: Lint steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 with: fetch-depth: 0 - - uses: actions/setup-go@v4 + - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 with: go-version: '1.18' - run: echo "$GITHUB_SHA" @@ -41,8 +41,8 @@ jobs: runs-on: ubuntu-latest name: Fmt check steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v4 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 with: go-version: '1.18' - run: make fmt-check @@ -50,8 +50,8 @@ jobs: runs-on: ubuntu-latest name: Generate check steps: - - uses: actions/checkout@v2 - - uses: actions/setup-go@v4 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 with: go-version: '1.18' - run: make generate-check diff --git a/.github/workflows/issue-comment-created.yml b/.github/workflows/issue-comment-created.yml index 72ca61e925b..f250dc1f101 100644 --- a/.github/workflows/issue-comment-created.yml +++ b/.github/workflows/issue-comment-created.yml @@ -14,8 +14,8 @@ jobs: issues: write # for actions-ecosystem/action-remove-labels to remove issue labels runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions-ecosystem/action-remove-labels@v1 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - uses: actions-ecosystem/action-remove-labels@2ce5d41b4b6aa8503e285553f75ed56e0a40bae0 # v1.3.0 with: github_token: "${{ secrets.GITHUB_TOKEN }}" labels: | diff --git a/.github/workflows/issue-migrator.yml b/.github/workflows/issue-migrator.yml index c9e579b407c..9acc66ee6d4 100644 --- a/.github/workflows/issue-migrator.yml +++ b/.github/workflows/issue-migrator.yml @@ -12,7 +12,7 @@ jobs: if: startsWith(github.event.label.name, 'remote-plugin/') runs-on: ubuntu-latest steps: - - uses: bflad/action-migrate-issue@main + - uses: bflad/action-migrate-issue@main # TSCCR: no entry for repository "bflad/action-migrate-issue" with: source-issue-comment: | This issue has been migrated to {target-issue-url} due to the [Packer Plugin split](https://github.com/hashicorp/packer/issues/8610#issuecomment-770034737). diff --git a/.github/workflows/issues-opened.yml b/.github/workflows/issues-opened.yml index 218f3667ba2..2866dc87f47 100644 --- a/.github/workflows/issues-opened.yml +++ b/.github/workflows/issues-opened.yml @@ -13,8 +13,8 @@ jobs: issues: write # for github/issue-labeler to create or remove labels runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: github/issue-labeler@v3.1 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - uses: github/issue-labeler@e24a3eb6b2e28c8904d086302a2b760647f5f45c # v3.1 with: repo-token: "${{ secrets.GITHUB_TOKEN }}" configuration-path: .github/labeler-issue-triage.yml @@ -23,7 +23,7 @@ jobs: name: Add issue to request queue runs-on: ubuntu-latest steps: - - uses: actions/add-to-project@main + - uses: actions/add-to-project@main # TSCCR: no entry for repository "actions/add-to-project" with: project-url: https://github.com/orgs/hashicorp/projects/105 github-token: ${{ secrets.PACKER_PROJ_BOARD_TOKEN }} @@ -37,7 +37,7 @@ jobs: if: contains(github.event.issue.labels.*.name, 'question') runs-on: ubuntu-latest steps: - - uses: actions-ecosystem/action-create-comment@v1.0.2 + - uses: actions-ecosystem/action-create-comment@v1.0.2 # TSCCR: no entry for repository "actions-ecosystem/action-create-comment" with: github_token: ${{ secrets.GITHUB_TOKEN }} body: | @@ -49,7 +49,7 @@ jobs: If no activity is taken on this question within 30 days it will be automatically closed. If you find the forum to be more helpful or if you've found the answer to your question elsewhere please feel free to post a response and close the issue. - - uses: actions-ecosystem/action-add-labels@v1.1.3 + - uses: actions-ecosystem/action-add-labels@v1.1.3 # TSCCR: no entry for repository "actions-ecosystem/action-add-labels" with: github_token: ${{ secrets.GITHUB_TOKEN }} labels: needs-reply diff --git a/.github/workflows/jira.yml b/.github/workflows/jira.yml index 2307ec4df8d..688eada877a 100644 --- a/.github/workflows/jira.yml +++ b/.github/workflows/jira.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Login - uses: atlassian/gajira-login@v3.0.1 + uses: atlassian/gajira-login@45fd029b9f1d6d8926c6f04175aa80c0e42c9026 # v3.0.1 env: JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} @@ -24,7 +24,7 @@ jobs: - name: Search if: github.event.action == 'labeled' id: search - uses: tomhjp/gh-action-jira-search@v0.2.2 + uses: tomhjp/gh-action-jira-search@04700b457f317c3e341ce90da5a3ff4ce058f2fa # v0.2.2 with: # cf[10089] is Issue Link (use JIRA API to retrieve) jql: 'project = "HPR" AND cf[10089] = "${{ github.event.issue.html_url }}"' @@ -61,7 +61,7 @@ jobs: - name: Create ticket id: create-ticket if: steps.search.outputs.issue == '' && github.event.label.name == 'sync to jira' && steps.set-ticket-type.outputs.type != 'Invalid' - uses: atlassian/gajira-create@v3.0.1 + uses: atlassian/gajira-create@59e177c4f6451399df5b4911c2211104f171e669 # v3.0.1 with: project: HPR issuetype: "${{ steps.set-ticket-type.outputs.type }}" @@ -74,7 +74,7 @@ jobs: - name: Add tracking comment if: steps.create-ticket.outputs.issue != '' && steps.set-ticket-type.outputs.type != 'Invalid' - uses: actions-ecosystem/action-create-comment@v1.0.0 + uses: actions-ecosystem/action-create-comment@v1.0.0 # TSCCR: no entry for repository "actions-ecosystem/action-create-comment" with: github_token: ${{ secrets.GITHUB_TOKEN }} body: | diff --git a/.github/workflows/lock.yml b/.github/workflows/lock.yml index 1ae51ba4756..77f57ab0a7f 100644 --- a/.github/workflows/lock.yml +++ b/.github/workflows/lock.yml @@ -15,7 +15,7 @@ jobs: pull-requests: write # for dessant/lock-threads to lock PRs runs-on: ubuntu-latest steps: - - uses: dessant/lock-threads@v4 + - uses: dessant/lock-threads@c1b35aecc5cdb1a34539d14196df55838bb2f836 # v4.0.0 with: github-token: ${{ github.token }} issue-comment: > diff --git a/.github/workflows/nightly-release.yml b/.github/workflows/nightly-release.yml index 33cbaa7d892..653a450e095 100644 --- a/.github/workflows/nightly-release.yml +++ b/.github/workflows/nightly-release.yml @@ -24,9 +24,9 @@ jobs: needs: build-artifacts runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - name: Download built artifacts - uses: actions/download-artifact@v2 + uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 with: path: out/ # Set BUILD_OUTPUT_LIST to out\-.\*,out\... @@ -38,7 +38,7 @@ jobs: echo "BUILD_OUTPUT_LIST=$(cat tmp2.txt | tr '\n' ',' | perl -ple 'chop')" >> $GITHUB_ENV rm -rf tmp.txt && rm -rf tmp2.txt - name: Advance nightly tag - uses: actions/github-script@v3 + uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | @@ -62,7 +62,7 @@ jobs: - name: Create a nightly GitHub prerelease id: create_prerelease continue-on-error: true - uses: ncipollo/release-action@v1 + uses: ncipollo/release-action@v1 # TSCCR: no entry for repository "ncipollo/release-action" with: name: nightly artifacts: "${{ env.BUILD_OUTPUT_LIST }}" @@ -85,7 +85,7 @@ jobs: - name: Retry failed nightly GitHub prerelease id: create_prerelease_retry if: steps.create_prerelease.outcome == 'failure' - uses: ncipollo/release-action@v1 + uses: ncipollo/release-action@v1 # TSCCR: no entry for repository "ncipollo/release-action" with: name: nightly artifacts: "${{ env.BUILD_OUTPUT_LIST }}" @@ -101,7 +101,7 @@ jobs: run: | echo "prerelease_id=${{ steps.create_prerelease_retry.outputs.id }}" >> $GITHUB_ENV - name: Publish nightly GitHub prerelease - uses: eregon/publish-release@v1 + uses: eregon/publish-release@v1 # TSCCR: no entry for repository "eregon/publish-release" env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -117,7 +117,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Send slack notification on failure - uses: slackapi/slack-github-action@v1.23.0 + uses: slackapi/slack-github-action@007b2c3c751a190b6f0f040e47ed024deaa72844 # v1.23.0 with: payload: | { From ddd7ee98b6f76eb404293811ce80c246ea555afb Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 26 Apr 2023 17:19:52 -0400 Subject: [PATCH 079/381] Bump go.mod to 1.20 * Fix go vet issue * Bump Go tooling to version 1.20 * Update workflows to use go-version file --- .github/workflows/go-test.yml | 23 ++++++++++++++++++++--- .github/workflows/go-validate.yml | 29 ++++++++++++++++++++++++----- .go-version | 2 +- command/build_cancellation_test.go | 1 + go.mod | 2 +- 5 files changed, 47 insertions(+), 10 deletions(-) diff --git a/.github/workflows/go-test.yml b/.github/workflows/go-test.yml index 4a74d6e0c12..dbd387fa0a4 100644 --- a/.github/workflows/go-test.yml +++ b/.github/workflows/go-test.yml @@ -18,30 +18,47 @@ permissions: contents: read jobs: + get-go-version: + runs-on: ubuntu-latest + outputs: + go-version: ${{ steps.get-go-version.outputs.go-version }} + steps: + - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3.5.0 + - name: 'Determine Go version' + id: get-go-version + run: | + echo "Found Go $(cat .go-version)" + echo "go-version=$(cat .go-version)" >> $GITHUB_OUTPUT linux-go-tests: + needs: + - get-go-version runs-on: ubuntu-latest name: Linux go tests steps: - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 with: - go-version: '1.18' + go-version: ${{ needs.get-go-version.outputs.go-version }} - run: TESTARGS="-coverprofile=coverage.txt -covermode=atomic" make ci darwin-go-tests: + needs: + - get-go-version runs-on: macos-latest name: Darwin go tests steps: - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 with: - go-version: '1.18' + go-version: ${{ needs.get-go-version.outputs.go-version }} - run: go test ./... -coverprofile=coverage.txt -covermode=atomic windows-go-tests: + needs: + - get-go-version runs-on: windows-latest name: Windows go tests steps: - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 with: - go-version: '1.18' + go-version: ${{ needs.get-go-version.outputs.go-version }} - run: go test ./... -coverprofile=coverage.txt -covermode=atomic diff --git a/.github/workflows/go-validate.yml b/.github/workflows/go-validate.yml index ae87a6da71d..c3aa5408b18 100644 --- a/.github/workflows/go-validate.yml +++ b/.github/workflows/go-validate.yml @@ -14,16 +14,31 @@ permissions: contents: read jobs: + get-go-version: + runs-on: ubuntu-latest + outputs: + go-version: ${{ steps.get-go-version.outputs.go-version }} + steps: + - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3.5.0 + - name: 'Determine Go version' + id: get-go-version + run: | + echo "Found Go $(cat .go-version)" + echo "go-version=$(cat .go-version)" >> $GITHUB_OUTPUT check-mod-tidy: + needs: + - get-go-version runs-on: ubuntu-latest name: Go Mod Tidy steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3.5.0 - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 with: - go-version: '1.18' + go-version: ${{ needs.get-go-version.outputs.go-version }} - run: go mod tidy check-lint: + needs: + - get-go-version runs-on: ubuntu-latest name: Lint steps: @@ -32,26 +47,30 @@ jobs: fetch-depth: 0 - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 with: - go-version: '1.18' + go-version: ${{ needs.get-go-version.outputs.go-version }} - run: echo "$GITHUB_SHA" - run: git fetch --all - run: echo $(git merge-base origin/main $GITHUB_SHA) - run: make ci-lint check-fmt: + needs: + - get-go-version runs-on: ubuntu-latest name: Fmt check steps: - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 with: - go-version: '1.18' + go-version: ${{ needs.get-go-version.outputs.go-version }} - run: make fmt-check check-generate: + needs: + - get-go-version runs-on: ubuntu-latest name: Generate check steps: - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 with: - go-version: '1.18' + go-version: ${{ needs.get-go-version.outputs.go-version }} - run: make generate-check diff --git a/.go-version b/.go-version index cafc0b7add4..f5b00dc262b 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.18.9 +1.20.3 diff --git a/command/build_cancellation_test.go b/command/build_cancellation_test.go index 809fd53bf4d..348b1d9180e 100644 --- a/command/build_cancellation_test.go +++ b/command/build_cancellation_test.go @@ -53,6 +53,7 @@ func TestBuildCommand_RunContext_CtxCancel(t *testing.T) { } for _, tt := range tests { + tt := tt t.Run(tt.name, func(t *testing.T) { t.Parallel() b := NewParallelTestBuilder(tt.parallelPassingTests) diff --git a/go.mod b/go.mod index 299b5a3ff64..9a68329eb13 100644 --- a/go.mod +++ b/go.mod @@ -259,4 +259,4 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect ) -go 1.18 +go 1.20 From eca75a6847ad2e5bc060defc2c091223ffe5aab1 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 27 Apr 2023 15:17:31 -0400 Subject: [PATCH 080/381] Run make fmt to fix checks --- command/configtype_enumer.go | 1 - config_test.go | 4 +++- hcl2template/addrs/plugin.go | 7 ++++--- hcl2template/docs.go | 1 - hcl2template/functions.go | 1 - hcl2template/types.source.go | 11 ++++++----- internal/hcp/api/mock_service.go | 12 ++++++------ internal/hcp/registry/types.iterations.go | 6 +++--- packer/fixconfigmode_enumer.go | 1 - packer/plugin-getter/plugins.go | 2 +- provisioner/powershell/executionpolicy_enumer.go | 1 - provisioner/windows-shell/provisioner.go | 2 +- scripts/generate-plugins.go | 8 ++++---- 13 files changed, 28 insertions(+), 29 deletions(-) diff --git a/command/configtype_enumer.go b/command/configtype_enumer.go index 5d02f035855..c7a5cf52a32 100644 --- a/command/configtype_enumer.go +++ b/command/configtype_enumer.go @@ -1,6 +1,5 @@ // Code generated by "enumer -type configType -trimprefix ConfigType -transform snake"; DO NOT EDIT. -// package command import ( diff --git a/config_test.go b/config_test.go index b744a274b89..772fea4fe3b 100644 --- a/config_test.go +++ b/config_test.go @@ -188,7 +188,9 @@ func generateFakePlugins(dirname string, pluginNames []string) (string, []string return dir, plugins, cleanUpFunc, nil } -/* generateFakePackerConfigData creates a collection of mock plugins along with a basic packerconfig. +/* + generateFakePackerConfigData creates a collection of mock plugins along with a basic packerconfig. + The return packerConfigData is a valid packerconfig file that can be used for configuring external plugins, cleanUpFunc is a function that should be called for cleaning up any generated mock data. This function will only clean up if there is an error, on successful runs the caller is responsible for cleaning up the data via cleanUpFunc(). diff --git a/hcl2template/addrs/plugin.go b/hcl2template/addrs/plugin.go index 8c4c3485d6a..8b4891044fc 100644 --- a/hcl2template/addrs/plugin.go +++ b/hcl2template/addrs/plugin.go @@ -97,9 +97,10 @@ func IsPluginPartNormalized(str string) (bool, error) { // This is intended primarily to parse the FQN-like strings // // The following are valid source string formats: -// name -// namespace/name -// hostname/namespace/name +// +// name +// namespace/name +// hostname/namespace/name func ParsePluginSourceString(str string) (*Plugin, hcl.Diagnostics) { ret := &Plugin{ Hostname: "", diff --git a/hcl2template/docs.go b/hcl2template/docs.go index d1ad307ccbd..2b19f42b029 100644 --- a/hcl2template/docs.go +++ b/hcl2template/docs.go @@ -7,5 +7,4 @@ // // Checkout the files in testdata/complete/ to see what a packer config could // look like. -// package hcl2template diff --git a/hcl2template/functions.go b/hcl2template/functions.go index 5876acb0d4e..cc144940cf6 100644 --- a/hcl2template/functions.go +++ b/hcl2template/functions.go @@ -27,7 +27,6 @@ import ( // basedir is used with file functions and allows a user to reference a file // using local path. Usually basedir is the directory in which the config file // is located -// func Functions(basedir string) map[string]function.Function { funcs := map[string]function.Function{ diff --git a/hcl2template/types.source.go b/hcl2template/types.source.go index 49b0316f6b2..1ea939d015f 100644 --- a/hcl2template/types.source.go +++ b/hcl2template/types.source.go @@ -67,11 +67,12 @@ func (b *SourceUseBlock) ctyValues() map[string]cty.Value { } // decodeBuildSource reads a used source block from a build: -// build { -// source "type.example" { -// name = "local_name" -// } -// } +// +// build { +// source "type.example" { +// name = "local_name" +// } +// } func (p *Parser) decodeBuildSource(block *hcl.Block) (SourceUseBlock, hcl.Diagnostics) { ref := sourceRefFromString(block.Labels[0]) out := SourceUseBlock{SourceRef: ref} diff --git a/internal/hcp/api/mock_service.go b/internal/hcp/api/mock_service.go index 9bd8e706ec7..9a126346e06 100644 --- a/internal/hcp/api/mock_service.go +++ b/internal/hcp/api/mock_service.go @@ -16,9 +16,9 @@ import ( "google.golang.org/grpc/status" ) -//MockPackerClientService represents a basic mock of the Cloud Packer Service. -//Upon calling a service method a boolean is set to true to indicate that a method has been called. -//To skip the setting of these booleans set TrackCalledServiceMethods to false; defaults to true in NewMockPackerClientService(). +// MockPackerClientService represents a basic mock of the Cloud Packer Service. +// Upon calling a service method a boolean is set to true to indicate that a method has been called. +// To skip the setting of these booleans set TrackCalledServiceMethods to false; defaults to true in NewMockPackerClientService(). type MockPackerClientService struct { CreateBucketCalled, UpdateBucketCalled, BucketAlreadyExist bool CreateIterationCalled, GetIterationCalled, IterationAlreadyExist, IterationCompleted bool @@ -39,9 +39,9 @@ type MockPackerClientService struct { packerSvc.ClientService } -//NewMockPackerClientService returns a basic mock of the Cloud Packer Service. -//Upon calling a service method a boolean is set to true to indicate that a method has been called. -//To skip the setting of these booleans set TrackCalledServiceMethods to false. By default it is true. +// NewMockPackerClientService returns a basic mock of the Cloud Packer Service. +// Upon calling a service method a boolean is set to true to indicate that a method has been called. +// To skip the setting of these booleans set TrackCalledServiceMethods to false. By default it is true. func NewMockPackerClientService() *MockPackerClientService { m := MockPackerClientService{ ExistingBuilds: make([]string, 0), diff --git a/internal/hcp/registry/types.iterations.go b/internal/hcp/registry/types.iterations.go index 8997491c2ef..b9ffc232243 100644 --- a/internal/hcp/registry/types.iterations.go +++ b/internal/hcp/registry/types.iterations.go @@ -64,12 +64,12 @@ func (i *Iteration) Initialize() error { return nil } -//StoreBuild stores a build for buildName to an active iteration. +// StoreBuild stores a build for buildName to an active iteration. func (i *Iteration) StoreBuild(buildName string, build *Build) { i.builds.Store(buildName, build) } -//Build gets the store build associated with buildName in the active iteration. +// Build gets the store build associated with buildName in the active iteration. func (i *Iteration) Build(buildName string) (*Build, error) { build, ok := i.builds.Load(buildName) if !ok { @@ -84,7 +84,7 @@ func (i *Iteration) Build(buildName string) (*Build, error) { return b, nil } -//HasBuild checks if iteration has a stored build associated with buildName. +// HasBuild checks if iteration has a stored build associated with buildName. func (i *Iteration) HasBuild(buildName string) bool { _, ok := i.builds.Load(buildName) diff --git a/packer/fixconfigmode_enumer.go b/packer/fixconfigmode_enumer.go index 82b09a63399..715fa73f558 100644 --- a/packer/fixconfigmode_enumer.go +++ b/packer/fixconfigmode_enumer.go @@ -1,6 +1,5 @@ // Code generated by "enumer -type FixConfigMode"; DO NOT EDIT. -// package packer import ( diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index 2ef5d80f910..09acf7052c8 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -386,8 +386,8 @@ func (e ChecksumFileEntry) Os() string { return e.os } func (e ChecksumFileEntry) Arch() string { return e.arch } // a file inside will look like so: -// packer-plugin-comment_v0.2.12_x5.0_freebsd_amd64.zip // +// packer-plugin-comment_v0.2.12_x5.0_freebsd_amd64.zip func (e *ChecksumFileEntry) init(req *Requirement) (err error) { filename := e.Filename res := strings.TrimPrefix(filename, req.FilenamePrefix()) diff --git a/provisioner/powershell/executionpolicy_enumer.go b/provisioner/powershell/executionpolicy_enumer.go index b8157b9cfc3..eac957360e8 100644 --- a/provisioner/powershell/executionpolicy_enumer.go +++ b/provisioner/powershell/executionpolicy_enumer.go @@ -1,6 +1,5 @@ // Code generated by "enumer -transform snake -trimprefix ExecutionPolicy -type ExecutionPolicy"; DO NOT EDIT. -// package powershell import ( diff --git a/provisioner/windows-shell/provisioner.go b/provisioner/windows-shell/provisioner.go index ab263d359f8..c6f22a3e778 100644 --- a/provisioner/windows-shell/provisioner.go +++ b/provisioner/windows-shell/provisioner.go @@ -28,7 +28,7 @@ import ( "github.com/hashicorp/packer-plugin-sdk/tmp" ) -//FIXME query remote host or use %SYSTEMROOT%, %TEMP% and more creative filename +// FIXME query remote host or use %SYSTEMROOT%, %TEMP% and more creative filename const DefaultRemotePath = "c:/Windows/Temp/script.bat" type Config struct { diff --git a/scripts/generate-plugins.go b/scripts/generate-plugins.go index 35f83c2d3d0..e52c063b3fe 100755 --- a/scripts/generate-plugins.go +++ b/scripts/generate-plugins.go @@ -99,10 +99,10 @@ type plugin struct { // makeMap creates a map named Name with type packer.Name that looks something // like this: // -// var Builders = map[string]packersdk.Builder{ -// "amazon-chroot": new(chroot.Builder), -// "amazon-ebs": new(ebs.Builder), -// "amazon-instance": new(instance.Builder), +// var Builders = map[string]packersdk.Builder{ +// "amazon-chroot": new(chroot.Builder), +// "amazon-ebs": new(ebs.Builder), +// "amazon-instance": new(instance.Builder), func makeMap(varName, varType string, items []plugin) string { output := "" From 502d77cbae617a32e5f80aaf455f08b6e36425b8 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 27 Apr 2023 15:20:56 -0400 Subject: [PATCH 081/381] Bump version of golanci-lint --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 13102b0444d..ad6cfd3a28a 100644 --- a/Makefile +++ b/Makefile @@ -57,7 +57,7 @@ install-gen-deps: ## Install dependencies for code generation install-lint-deps: ## Install linter dependencies @echo "==> Updating linter dependencies..." - @curl -sSfL -q https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(GOPATH)/bin v1.46.0 + @curl -sSfL -q https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(GOPATH)/bin v1.52.0 dev: ## Build and install a development build @grep 'const VersionPrerelease = ""' version/version.go > /dev/null ; if [ $$? -eq 0 ]; then \ From 00db5bfff86092d86e75a5c2bd6fe3f5d8f38194 Mon Sep 17 00:00:00 2001 From: Quentin L Date: Fri, 28 Apr 2023 12:40:51 +0200 Subject: [PATCH 082/381] Fix url git repository modern Windows version in the Autounattend Windows Guide (#12382) --- .../autounattend_windows.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/guides/automatic-operating-system-installs/autounattend_windows.mdx b/website/content/guides/automatic-operating-system-installs/autounattend_windows.mdx index b34ea843bae..e36354dd4a2 100644 --- a/website/content/guides/automatic-operating-system-installs/autounattend_windows.mdx +++ b/website/content/guides/automatic-operating-system-installs/autounattend_windows.mdx @@ -67,7 +67,7 @@ disconnections can fail a build. The chef-maintained bento boxes are a great example of a Windows build that sets up openssh as part of the unattended installation so that Packer can connect using the SSH communicator. The functioning answer files for every -modern Windows version can be found [here](https://github.com/chef/bento/tree/master/packer_templates/windows/answer_files). +modern Windows version can be found [here](https://github.com/chef/bento/tree/master/packer_templates/win_answer_files). Stefan Scherer's [packer-windows repo](https://github.com/StefanScherer/packer-windows) is a great example of Windows builds that set up WinRM as part of the unattended From 13a24db0de7079864732a8688f940c5960e6d9a9 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 28 Apr 2023 13:31:09 -0400 Subject: [PATCH 083/381] Remove IONOS plugins from vendored plugins (#12385) * Remove profitbricks plugin * Remove oneandone plugin The following plugins have been unmaintained for some time now, and their upstream cloud provider has consolidate the services. These plugins will continue to be available to Packer via direct installation using packer init or the packer plugins install command. But they will no longer be bundled with Packer. --- command/vendored_plugins.go | 6 +----- go.mod | 4 ---- go.sum | 8 -------- 3 files changed, 1 insertion(+), 17 deletions(-) diff --git a/command/vendored_plugins.go b/command/vendored_plugins.go index dfbf684e2d5..2bf400b6598 100644 --- a/command/vendored_plugins.go +++ b/command/vendored_plugins.go @@ -8,7 +8,7 @@ import ( // Previously core-bundled components, split into their own plugins but // still vendored with Packer for now. Importing as library instead of - // forcing use of packer init, until packer v1.8.0 + // forcing use of packer init. alicloudecsbuilder "github.com/hashicorp/packer-plugin-alicloud/builder/ecs" alicloudimportpostprocessor "github.com/hashicorp/packer-plugin-alicloud/post-processor/alicloud-import" @@ -47,11 +47,9 @@ import ( lxcbuilder "github.com/hashicorp/packer-plugin-lxc/builder/lxc" lxdbuilder "github.com/hashicorp/packer-plugin-lxd/builder/lxd" ncloudbuilder "github.com/hashicorp/packer-plugin-ncloud/builder/ncloud" - oneandonebuilder "github.com/hashicorp/packer-plugin-oneandone/builder/oneandone" openstackbuilder "github.com/hashicorp/packer-plugin-openstack/builder/openstack" parallelsisobuilder "github.com/hashicorp/packer-plugin-parallels/builder/parallels/iso" parallelspvmbuilder "github.com/hashicorp/packer-plugin-parallels/builder/parallels/pvm" - profitbricksbuilder "github.com/hashicorp/packer-plugin-profitbricks/builder/profitbricks" proxmoxclone "github.com/hashicorp/packer-plugin-proxmox/builder/proxmox/clone" proxmoxiso "github.com/hashicorp/packer-plugin-proxmox/builder/proxmox/iso" puppetmasterlessprovisioner "github.com/hashicorp/packer-plugin-puppet/provisioner/puppet-masterless" @@ -107,9 +105,7 @@ var VendoredBuilders = map[string]packersdk.Builder{ "lxc": new(lxcbuilder.Builder), "lxd": new(lxdbuilder.Builder), "ncloud": new(ncloudbuilder.Builder), - "oneandone": new(oneandonebuilder.Builder), "openstack": new(openstackbuilder.Builder), - "profitbricks": new(profitbricksbuilder.Builder), "proxmox": new(proxmoxiso.Builder), "proxmox-iso": new(proxmoxiso.Builder), "proxmox-clone": new(proxmoxclone.Builder), diff --git a/go.mod b/go.mod index 299b5a3ff64..087f56e6534 100644 --- a/go.mod +++ b/go.mod @@ -76,10 +76,8 @@ require ( github.com/hashicorp/packer-plugin-lxc v1.0.2 github.com/hashicorp/packer-plugin-lxd v1.0.1 github.com/hashicorp/packer-plugin-ncloud v1.0.3 - github.com/hashicorp/packer-plugin-oneandone v1.0.1 github.com/hashicorp/packer-plugin-openstack v1.0.1 github.com/hashicorp/packer-plugin-parallels v1.0.3 - github.com/hashicorp/packer-plugin-profitbricks v1.0.2 github.com/hashicorp/packer-plugin-proxmox v1.1.1 github.com/hashicorp/packer-plugin-puppet v1.0.1 github.com/hashicorp/packer-plugin-qemu v1.0.9 @@ -99,7 +97,6 @@ require ( cloud.google.com/go/compute/metadata v0.1.1 // indirect cloud.google.com/go/iam v0.6.0 // indirect cloud.google.com/go/storage v1.27.0 // indirect - github.com/1and1/oneandone-cloudserver-sdk-go v1.0.1 // indirect github.com/Azure/azure-sdk-for-go v64.0.0+incompatible // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest v0.11.19 // indirect @@ -225,7 +222,6 @@ require ( github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/profitbricks/profitbricks-sdk-go v4.0.2+incompatible // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect diff --git a/go.sum b/go.sum index 65f053dd778..705d50b32db 100644 --- a/go.sum +++ b/go.sum @@ -13,8 +13,6 @@ cloud.google.com/go/longrunning v0.1.1 h1:y50CXG4j0+qvEukslYFBCrzaXX0qpFbBzc3Pch cloud.google.com/go/storage v1.27.0 h1:YOO045NZI9RKfCj1c5A/ZtuuENUc8OAW+gHdGnDgyMQ= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/1and1/oneandone-cloudserver-sdk-go v1.0.1 h1:RMTyvS5bjvSWiUcfqfr/E2pxHEMrALvU+E12n6biymg= -github.com/1and1/oneandone-cloudserver-sdk-go v1.0.1/go.mod h1:61apmbkVJH4kg+38ftT+/l0XxdUCVnHggqcOTqZRSEE= github.com/Azure/azure-sdk-for-go v51.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v64.0.0+incompatible h1:WAA77WBDWYtNfCC95V70VvkdzHe+wM/r2MQ9mG7fnQs= github.com/Azure/azure-sdk-for-go v64.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= @@ -543,14 +541,10 @@ github.com/hashicorp/packer-plugin-lxd v1.0.1 h1:sqdaEdip0y/wC7x99CQHIbakJSmZY2k github.com/hashicorp/packer-plugin-lxd v1.0.1/go.mod h1:IZJTYWyGxlNZm0GKUgVejCPrXAU/cTlIpRiFgeQCCn4= github.com/hashicorp/packer-plugin-ncloud v1.0.3 h1:+LCQ404nhWM871dy8oLuspFgTAt6qpx1fXZj9e4GcZY= github.com/hashicorp/packer-plugin-ncloud v1.0.3/go.mod h1:5KQwE5s6GG8rAjwmzmWbjwQH7/nrn/hmJ/aZJIn4i+Q= -github.com/hashicorp/packer-plugin-oneandone v1.0.1 h1:6rnqSWSve4XB+im1MYfgdGnyDCFJuEKCORw3aLsYkfk= -github.com/hashicorp/packer-plugin-oneandone v1.0.1/go.mod h1:9alSvlih9aE4Pebnnw7CmfmOyKKjnAxbxXZN9yFCCsE= github.com/hashicorp/packer-plugin-openstack v1.0.1 h1:R4Iw0Vx/o14e2GRbKypwsR1B21z6CkaISX+KqwtLuTo= github.com/hashicorp/packer-plugin-openstack v1.0.1/go.mod h1:i5qn9aUabJM9mjhpXS81hFSuDjJYA2kOi0vLlo3VGsE= github.com/hashicorp/packer-plugin-parallels v1.0.3 h1:smypphUCEj3arCdlvbNtZvGC1ujsUSRtN1MBvZHt/w8= github.com/hashicorp/packer-plugin-parallels v1.0.3/go.mod h1:Q842nvosVmP5FnYozk8ZZj93HGIan19jHTxGeteBCb0= -github.com/hashicorp/packer-plugin-profitbricks v1.0.2 h1:wAlTRm1A39T9hferxFtKaLCDmlsqA9cU7dTQtMLcvKQ= -github.com/hashicorp/packer-plugin-profitbricks v1.0.2/go.mod h1:Gpg/h6A0UcTYzLwDw2GrUJjlPUmL5QaxGBJWH0NMx0g= github.com/hashicorp/packer-plugin-proxmox v1.1.1 h1:uBwW7MQN1p3vUha1BVIG3wqWrxa349qWekYyScSvDls= github.com/hashicorp/packer-plugin-proxmox v1.1.1/go.mod h1:S83+dabgqpNuKvm7sdNh2ivqx5rpgO6mbJn/iVrrXjk= github.com/hashicorp/packer-plugin-puppet v1.0.1 h1:/obGvsyiKiO2hX9TxRTJ7Y+/44K4WqKJlzg4xHAyIoY= @@ -788,8 +782,6 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.2.3 h1:NP0eAhjcjImqslEwo/1hq7gpajME0fTLTezBKDqfXqo= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= -github.com/profitbricks/profitbricks-sdk-go v4.0.2+incompatible h1:ZoVHH6voxW9Onzo6z2yLtocVoN6mBocyDoqoyAMHokE= -github.com/profitbricks/profitbricks-sdk-go v4.0.2+incompatible/go.mod h1:T3/WrziK7fYH3C8ilAFAHe99R452/IzIG3YYkqaOFeQ= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= From 65f6428fce77ff8d0fadaf71bcb4f356e5ee085e Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 28 Apr 2023 13:52:49 -0400 Subject: [PATCH 084/381] Remove external archived provisioner plugins (#12374) This change removes a set of plugins that have not been updated in a while. These plugins have been archived for some time now. Users wishing to continue using these plugins should use the `packer plugins install` or `packer init` commands to install the external plugin. --- command/vendored_plugins.go | 14 -------------- go.mod | 5 ----- go.sum | 10 ---------- 3 files changed, 29 deletions(-) diff --git a/command/vendored_plugins.go b/command/vendored_plugins.go index 2bf400b6598..e2452913371 100644 --- a/command/vendored_plugins.go +++ b/command/vendored_plugins.go @@ -26,10 +26,7 @@ import ( azurechrootbuilder "github.com/hashicorp/packer-plugin-azure/builder/azure/chroot" azuredtlbuilder "github.com/hashicorp/packer-plugin-azure/builder/azure/dtl" azuredtlartifactprovisioner "github.com/hashicorp/packer-plugin-azure/provisioner/azure-dtlartifact" - chefclientprovisioner "github.com/hashicorp/packer-plugin-chef/provisioner/chef-client" - chefsoloprovisioner "github.com/hashicorp/packer-plugin-chef/provisioner/chef-solo" cloudstackbuilder "github.com/hashicorp/packer-plugin-cloudstack/builder/cloudstack" - convergeprovisioner "github.com/hashicorp/packer-plugin-converge/provisioner/converge" dockerbuilder "github.com/hashicorp/packer-plugin-docker/builder/docker" dockerimportpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-import" dockerpushpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-push" @@ -42,7 +39,6 @@ import ( hyperonebuilder "github.com/hashicorp/packer-plugin-hyperone/builder/hyperone" hypervisobuilder "github.com/hashicorp/packer-plugin-hyperv/builder/hyperv/iso" hypervvmcxbuilder "github.com/hashicorp/packer-plugin-hyperv/builder/hyperv/vmcx" - inspecprovisioner "github.com/hashicorp/packer-plugin-inspec/provisioner/inspec" jdcloudbuilder "github.com/hashicorp/packer-plugin-jdcloud/builder/jdcloud" lxcbuilder "github.com/hashicorp/packer-plugin-lxc/builder/lxc" lxdbuilder "github.com/hashicorp/packer-plugin-lxd/builder/lxd" @@ -52,10 +48,7 @@ import ( parallelspvmbuilder "github.com/hashicorp/packer-plugin-parallels/builder/parallels/pvm" proxmoxclone "github.com/hashicorp/packer-plugin-proxmox/builder/proxmox/clone" proxmoxiso "github.com/hashicorp/packer-plugin-proxmox/builder/proxmox/iso" - puppetmasterlessprovisioner "github.com/hashicorp/packer-plugin-puppet/provisioner/puppet-masterless" - puppetserverprovisioner "github.com/hashicorp/packer-plugin-puppet/provisioner/puppet-server" qemubuilder "github.com/hashicorp/packer-plugin-qemu/builder/qemu" - saltmasterlessprovisioner "github.com/hashicorp/packer-plugin-salt/provisioner/salt-masterless" tencentcloudcvmbuilder "github.com/hashicorp/packer-plugin-tencentcloud/builder/tencentcloud/cvm" tritonbuilder "github.com/hashicorp/packer-plugin-triton/builder/triton" vagrantbuilder "github.com/hashicorp/packer-plugin-vagrant/builder/vagrant" @@ -131,13 +124,6 @@ var VendoredProvisioners = map[string]packersdk.Provisioner{ "azure-dtlartifact": new(azuredtlartifactprovisioner.Provisioner), "ansible": new(ansibleprovisioner.Provisioner), "ansible-local": new(ansiblelocalprovisioner.Provisioner), - "chef-client": new(chefclientprovisioner.Provisioner), - "chef-solo": new(chefsoloprovisioner.Provisioner), - "converge": new(convergeprovisioner.Provisioner), - "inspec": new(inspecprovisioner.Provisioner), - "puppet-masterless": new(puppetmasterlessprovisioner.Provisioner), - "puppet-server": new(puppetserverprovisioner.Provisioner), - "salt-masterless": new(saltmasterlessprovisioner.Provisioner), } // VendoredPostProcessors are post-processor components that were once bundled with the diff --git a/go.mod b/go.mod index 087f56e6534..d1e0e8dcb56 100644 --- a/go.mod +++ b/go.mod @@ -63,15 +63,12 @@ require ( github.com/hashicorp/packer-plugin-alicloud v1.0.7 github.com/hashicorp/packer-plugin-ansible v1.0.3 github.com/hashicorp/packer-plugin-azure v1.4.0 - github.com/hashicorp/packer-plugin-chef v1.0.2 github.com/hashicorp/packer-plugin-cloudstack v1.0.2 - github.com/hashicorp/packer-plugin-converge v1.0.1 github.com/hashicorp/packer-plugin-docker v1.0.8 github.com/hashicorp/packer-plugin-googlecompute v1.1.0 github.com/hashicorp/packer-plugin-hcloud v1.0.5 github.com/hashicorp/packer-plugin-hyperone v1.0.1 github.com/hashicorp/packer-plugin-hyperv v1.0.4 - github.com/hashicorp/packer-plugin-inspec v1.0.0 github.com/hashicorp/packer-plugin-jdcloud v1.0.1 github.com/hashicorp/packer-plugin-lxc v1.0.2 github.com/hashicorp/packer-plugin-lxd v1.0.1 @@ -79,9 +76,7 @@ require ( github.com/hashicorp/packer-plugin-openstack v1.0.1 github.com/hashicorp/packer-plugin-parallels v1.0.3 github.com/hashicorp/packer-plugin-proxmox v1.1.1 - github.com/hashicorp/packer-plugin-puppet v1.0.1 github.com/hashicorp/packer-plugin-qemu v1.0.9 - github.com/hashicorp/packer-plugin-salt v1.0.0 github.com/hashicorp/packer-plugin-tencentcloud v1.0.6 github.com/hashicorp/packer-plugin-triton v1.0.2 github.com/hashicorp/packer-plugin-vagrant v1.0.3 diff --git a/go.sum b/go.sum index 705d50b32db..0dde511c132 100644 --- a/go.sum +++ b/go.sum @@ -515,12 +515,8 @@ github.com/hashicorp/packer-plugin-ansible v1.0.3 h1:XjltQVPYnnZdNyBjwHr1QthR413 github.com/hashicorp/packer-plugin-ansible v1.0.3/go.mod h1:N4OZtNDq2FSRBknuNU/GSoKtllfxQnHCYYaJUD1p1MA= github.com/hashicorp/packer-plugin-azure v1.4.0 h1:rxkcGe5pjjnzddfR5/sBJmg8kb+ko+r2M+Ce7OC8sQ4= github.com/hashicorp/packer-plugin-azure v1.4.0/go.mod h1:7j1q0SNPeZr7xRID0c/Hu9QojE41pSlSJwsNB9/rOTI= -github.com/hashicorp/packer-plugin-chef v1.0.2 h1:hkVhBuglBc5wY4cNfFObW7hzJuT+VdWMAu/gQ9nDNOI= -github.com/hashicorp/packer-plugin-chef v1.0.2/go.mod h1:RWNaO+NprfeW4mdZDAGaLPJE3hUR8f/poSw1MNTt+NA= github.com/hashicorp/packer-plugin-cloudstack v1.0.2 h1:JsT2AuCcZGajbFL0w/sQ5yzoWLwOPyETboDR+Ws0xbo= github.com/hashicorp/packer-plugin-cloudstack v1.0.2/go.mod h1:WCX3zX0P6ubg3QoErIFu/b7UwzxVli2WVa82wfbPqa0= -github.com/hashicorp/packer-plugin-converge v1.0.1 h1:LNjhWQCaPNHSgeKGj/vXwqlEuqz3lA4P7gD7YQ1XsNA= -github.com/hashicorp/packer-plugin-converge v1.0.1/go.mod h1:iXfr0QvDEOmSIK2ry53KCfztK3QaeQuTo8eHqzWMlVI= github.com/hashicorp/packer-plugin-docker v1.0.8 h1:UWPG/pl+1RFsaNQVhEuowCeOZuES6/mqy5R6FTyMeQo= github.com/hashicorp/packer-plugin-docker v1.0.8/go.mod h1:4U3gHULbUw3okSqqZgQZD5ptyJKs0S7LfOOt2U3V4Jk= github.com/hashicorp/packer-plugin-googlecompute v1.1.0 h1:/cSZCJuRV6osaSa1uOy8cpN+c/uiCbrSsZ8vyNC0slk= @@ -531,8 +527,6 @@ github.com/hashicorp/packer-plugin-hyperone v1.0.1 h1:rTxnbFE8UDnzWG3prHQZpWmCpF github.com/hashicorp/packer-plugin-hyperone v1.0.1/go.mod h1:tT5g5xjFRuFX28w0NhpiwMum/JQDjboJwfa3Zt3ND+Q= github.com/hashicorp/packer-plugin-hyperv v1.0.4 h1:SHdo60jfrmeSz+T25Aa2BuSWBioFOWe4hKmp7W6lIUs= github.com/hashicorp/packer-plugin-hyperv v1.0.4/go.mod h1:8kHew9yWRaKYojmOMj1FYVlhOrdtiIZX2Z8RM+sHxJE= -github.com/hashicorp/packer-plugin-inspec v1.0.0 h1:6qRgH90Q+L3HSzo5UvuSozzS4VzU+ckkwJi9pMHYW1M= -github.com/hashicorp/packer-plugin-inspec v1.0.0/go.mod h1:SsVyBs8b/g1wMC+4HgZQWT01kqxrwprA7dKxHAIRFKw= github.com/hashicorp/packer-plugin-jdcloud v1.0.1 h1:qgecywtT8EqGiHdvopC36eBz1lSZs336w7X2q+y+UY0= github.com/hashicorp/packer-plugin-jdcloud v1.0.1/go.mod h1:1i/cCievlQE+grHJWUxhwi5nzwSXt9n0WmcHpFVMt5I= github.com/hashicorp/packer-plugin-lxc v1.0.2 h1:JvIkbSynft+9JAi1uPEVHesIe02OX2yL9rPj1Ud0kM8= @@ -547,12 +541,8 @@ github.com/hashicorp/packer-plugin-parallels v1.0.3 h1:smypphUCEj3arCdlvbNtZvGC1 github.com/hashicorp/packer-plugin-parallels v1.0.3/go.mod h1:Q842nvosVmP5FnYozk8ZZj93HGIan19jHTxGeteBCb0= github.com/hashicorp/packer-plugin-proxmox v1.1.1 h1:uBwW7MQN1p3vUha1BVIG3wqWrxa349qWekYyScSvDls= github.com/hashicorp/packer-plugin-proxmox v1.1.1/go.mod h1:S83+dabgqpNuKvm7sdNh2ivqx5rpgO6mbJn/iVrrXjk= -github.com/hashicorp/packer-plugin-puppet v1.0.1 h1:/obGvsyiKiO2hX9TxRTJ7Y+/44K4WqKJlzg4xHAyIoY= -github.com/hashicorp/packer-plugin-puppet v1.0.1/go.mod h1:avMyKLTT/6SVR/hEgJk92SMziK3nwlNJ00kOYgwIDMk= github.com/hashicorp/packer-plugin-qemu v1.0.9 h1:1YKBBzBULYUBWtpAZJTbaLjjZPAdQ63okkpTqMBTnzM= github.com/hashicorp/packer-plugin-qemu v1.0.9/go.mod h1:BpWIpVpOoPFV9Ppmzq4DP/S0QNoh1R+7DUCqxHdXc+Y= -github.com/hashicorp/packer-plugin-salt v1.0.0 h1:bLGdlDG2nLyOzjp/5d2rmZ9XVxDeDUGejOK3wayqEL4= -github.com/hashicorp/packer-plugin-salt v1.0.0/go.mod h1:onggPITzeB6LPSW8XlSobu8eI6yj3IMUi5cS6vWnL7s= github.com/hashicorp/packer-plugin-sdk v0.4.0 h1:UyLYe0y02D9wkOQ3FeeZWyFg2+mx2vLuWRGUL5xt50I= github.com/hashicorp/packer-plugin-sdk v0.4.0/go.mod h1:uNhU3pmjM2ejgHYce/g4J+sa5rh81iYQztpGvGa5FOs= github.com/hashicorp/packer-plugin-tencentcloud v1.0.6 h1:h7thXtVaXZhrF5L+bMcdMktrcV4RufQvJI41y10dHtE= From 1ad92b0759133e62040e23027aca9463d82024f5 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Mon, 24 Apr 2023 11:19:45 -0400 Subject: [PATCH 085/381] docs: add docs to show diffs between JSON and HCL2 --- .../content/docs/templates/json_to_hcl.mdx | 158 ++++++++++++++++++ website/data/docs-nav-data.json | 4 + 2 files changed, 162 insertions(+) create mode 100644 website/content/docs/templates/json_to_hcl.mdx diff --git a/website/content/docs/templates/json_to_hcl.mdx b/website/content/docs/templates/json_to_hcl.mdx new file mode 100644 index 00000000000..2be56685dcb --- /dev/null +++ b/website/content/docs/templates/json_to_hcl.mdx @@ -0,0 +1,158 @@ +--- +description: | + This section highlights the differences between JSON and HCL2 templates and explains the parallels between the specifications. +page_title: JSON to HCL +--- + +# Packer templates + +Packer uses templates to orchestrate builds for one or more images. +In [legacy JSON templates](/packer/docs/templates/legacy_json_templates), you would declare a series of builders, provisioners and post-processors to build images. +In [HCL2 templates](/packer/docs/templates/hcl_templates), things are different, as the configuration language allows you to specify builders through sources, and weave them in build blocks. + +This document aims to explain the parallels between the two configuration template types, and what you +should expect when moving a template away from JSON to HCL2. + +In addition to this document, you may find the `packer hcl2_upgrade` command useful when converting your existing JSON templates to HCL2. +Refer to the [hcl2_upgrade](/packer/docs/commands/hcl2_upgrade) page for more information on its usage. + +## Builders + +Builders are components that are specialized for a platform. +Their role is to set the stage for the steps that will let you build the final image from your configuration template. + +### JSON + +In JSON, the `builders` attribute declares how a builder will be invoked to build an image. + +```json +{ + "builders": [ + { + "type": "null", + "name": "test", + "communicator": "none" + } + ] +} +``` + +### HCL2 + +In HCL2, builders are declared through a `source` block. Sources on their own are not enough, and must be invoked in a `build` block. +The `build` block serves as a container for all the steps (i.e. `source`, `provisioners` and `post-processors`) to go from a blank image to a finished one. + +```hcl +source "null" "test" { + communicator = "none" +} + +build { + sources = ["null.test"] +} +``` + +## Provisioners + +Provisioners are components that modify the state of the machine image you are building. +They can be used for installing packages, writing data to the remote file system, or executing remote commands. +They can be defined in both JSON or HCL templates. + +### JSON + +In a JSON template, provisioners are declared at the top-level of the template as an array of sequentially +invoked components to provision the image you are building. They apply to all the builders defined in the template. + +```json +{ + "builders": [ + { + "type": "null", + "name": "test", + "communicator": "none" + } + ], + "provisioners": [ + { + "type": "shell-local", + "inline": ["echo test"] + } + ] +} +``` + +### HCL2 + +In HCL2, provisioners are declared in the `build` block, and apply only to the sources invoked as +part of this build block. +This lets you declare multiple build blocks, each with its own set of provisioners, which will +result in multiple different builds executed in parallel. + +```hcl +source "null" "test" { + communicator = "none" +} + +build { + sources = ["null.test"] + + provisioner "shell-local" { + inline = ["echo test"] + } +} +``` + +## Post-processors + +Post-processors are components that are invoked after the image was produced. Their +role is to consume an artifact produced by a builder, or another post-processor, and +build a new artifact from that. + +### JSON + +As with provisioners, in JSON templates, post-processors are sequentially invoked after a +build finished provisioning, and are declared in the template under "post-processors". + +```json +{ + "builders": [ + { + "type": "null", + "name": "test", + "communicator": "none" + } + ], + "provisioners": [ + { + "type": "shell-local", + "inline": ["echo test"] + } + ], + "post-processors": [ + { + "type": "manifest" + } + ] +} +``` + +### HCL2 + +In HCL2, much like provisioners, they are also part of the `build` block, and similar rules +apply as with provisioners. + +```hcl +source "null" "test" { + communicator = "none" +} + +build { + sources = ["null.test"] + + provisioner "shell-local" { + inline = ["echo test"] + } + + post-processor "manifest" {} +} +``` diff --git a/website/data/docs-nav-data.json b/website/data/docs-nav-data.json index f2c065c3db8..e1de91658f1 100644 --- a/website/data/docs-nav-data.json +++ b/website/data/docs-nav-data.json @@ -100,6 +100,10 @@ "title": "Overview", "path": "templates" }, + { + "title": "JSON to HCL2", + "path": "templates/json_to_hcl" + }, { "title": "HCL Templates", "routes": [ From 7c29c9887edc37596e16d57e32a3d6d00331fe3a Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 28 Apr 2023 14:16:37 -0400 Subject: [PATCH 086/381] Add release branches to Go GHA workflows --- .github/workflows/go-test.yml | 1 + .github/workflows/go-validate.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/go-test.yml b/.github/workflows/go-test.yml index dbd387fa0a4..93f8eeb1ae8 100644 --- a/.github/workflows/go-test.yml +++ b/.github/workflows/go-test.yml @@ -9,6 +9,7 @@ on: push: branches: - 'main' + - release/** pull_request: env: diff --git a/.github/workflows/go-validate.yml b/.github/workflows/go-validate.yml index c3aa5408b18..d67b3aa5151 100644 --- a/.github/workflows/go-validate.yml +++ b/.github/workflows/go-validate.yml @@ -8,6 +8,7 @@ on: push: branches: - 'main' + - release/** pull_request: permissions: From f809cbce5f2f4d32827a7b55de6a524221a6d6a7 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 28 Apr 2023 16:26:01 -0400 Subject: [PATCH 087/381] Remove circular reference between data source documentation pages * Update the data source documentation with a link to the amazon-ami configuration reference guide. Closes #12336 --- website/content/docs/templates/hcl_templates/datasources.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/website/content/docs/templates/hcl_templates/datasources.mdx b/website/content/docs/templates/hcl_templates/datasources.mdx index 7dc98e50f91..d596c61fc04 100644 --- a/website/content/docs/templates/hcl_templates/datasources.mdx +++ b/website/content/docs/templates/hcl_templates/datasources.mdx @@ -36,8 +36,8 @@ local name ("example"). The name is used to refer to this data source from elsew The data block creates a data instance of the given _type_ (first block label) and _name_ (second block label). The combination of the type and name must be unique within a configuration. -Within the block (the `{ }`) is the configuration for the data instance. The configuration is dependent on the type, -and is documented for each data source in the [data sources](/packer/docs/datasources) section. +Within the block (the `{ }`) is the configuration for the data instance. The configuration is dependent on the data source type, +and is documented for each data source. For example the configuration of the `amazon-ami` data source can be found at [plugins/datasources/amazon/ami](/packer/plugins/datasources/amazon/ami#configuration-reference). A data source can output one or more attributes, which can be used by adding their key name to the data source unique identifier, like `data...`. From 1a1fada9e8159408784dc722b3bda9488bc28664 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 2 May 2023 09:52:39 -0400 Subject: [PATCH 088/381] .github: re-pin github-script to v3 When tsscr bumped the version of the action to v6, we experienced some failures in our nightly runs. To make the action operable again, we pin the action to the former: v3. --- .github/workflows/nightly-release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/nightly-release.yml b/.github/workflows/nightly-release.yml index 653a450e095..ea388be057c 100644 --- a/.github/workflows/nightly-release.yml +++ b/.github/workflows/nightly-release.yml @@ -38,7 +38,7 @@ jobs: echo "BUILD_OUTPUT_LIST=$(cat tmp2.txt | tr '\n' ',' | perl -ple 'chop')" >> $GITHUB_ENV rm -rf tmp.txt && rm -rf tmp2.txt - name: Advance nightly tag - uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1 + uses: actions/github-script@ffc2c79a5b2490bd33e0a41c1de74b877714d736 # v3 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | From f81e9c22223ae441928e1fb8034cb64b8f8fe498 Mon Sep 17 00:00:00 2001 From: josiahsmythe-bah <111589881+josiahsmythe-bah@users.noreply.github.com> Date: Wed, 3 May 2023 11:38:52 -0400 Subject: [PATCH 089/381] Fixed formatting issue --- .../templates/hcl_templates/blocks/build/post-processors.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/templates/hcl_templates/blocks/build/post-processors.mdx b/website/content/docs/templates/hcl_templates/blocks/build/post-processors.mdx index dc57c5c793c..181ac03a18e 100644 --- a/website/content/docs/templates/hcl_templates/blocks/build/post-processors.mdx +++ b/website/content/docs/templates/hcl_templates/blocks/build/post-processors.mdx @@ -10,7 +10,7 @@ page_title: post-processors - build - Blocks `@include 'from-1.5/beta-hcl2-note.mdx'` The `post-processors` block allows to define lists of -[`post-processor`s](/packer/docs/templates/hcl_templates/blocks/build/post-processor), that will run +[`post-processors`](/packer/docs/templates/hcl_templates/blocks/build/post-processor), that will run from the artifact of each build. ```hcl From 353882b00c4f3825a42f96ef37a2c6f7ba05c27c Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 3 May 2023 18:53:42 -0400 Subject: [PATCH 090/381] .go-version: Bump version of Go to 1.20.4 --- .go-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.go-version b/.go-version index f5b00dc262b..0bd54efd316 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.20.3 +1.20.4 From 88abc56781d2eea542f79259565e8a5bb0937348 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 3 May 2023 17:41:18 -0400 Subject: [PATCH 091/381] Update CHANGELOG --- CHANGELOG.md | 75 +++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 66 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64a569ba9bd..195c0a5dae1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,10 +8,17 @@ users to define the fingerprint in the environment manually in order to adopt this behaviour, otherwise, by default, a new iteration will be created. This does not impact workflows where the fingerprint was defined - through the HCP_PACKER_ITERATION_FINGERPRINT environment variable, and + through the `HCP_PACKER_ITERATION_FINGERPRINT` environment variable, and these builds will work exactly as they did before. [GH-12172](https://github.com/hashicorp/packer/pull/12172) +### PLUGINS +* Remove provisioner plugins for Chef, Converge, Puppet, Salt, and Inspec as + vendored plugins. These plugins have been previously archived and not + updated in release since being archived. These plugins can be installed + using `packer init` or with the Packer plugins sub-command `packer plugins install github.com/hashicorp/chef`. + [GH-12374](https://github.com/hashicorp/packer/pull/12374) + ### IMPROVEMENTS: * core/hcp: Now, fingerprints used by HCP Packer are randomly generated ULIDs @@ -19,16 +26,32 @@ already specified in the environment. [GH-12172](https://github.com/hashicorp/packer/pull/12172) -## 1.8.7 (Upcoming) +## 1.8.7 (May 4, 2023) ### NOTES: +* Vendored plugins within Packer have not been updated. Plugin releases occur on + a regular basis to address issues and feature requests. Users are encouraged + to use `packer init` for HCL2 templates or `packer plugins install` with + legacy JSON templates for installing external plugins. + +* packer-plugin-digitalocean: The Digital Ocean Packer plugin has been handed + over to the Digital Ocean team. New releases for this plugin are available + at https://github.com/digitalocean/packer-plugin-digitalocean. + ``` + required_plugins { + digitalocean = { + source = "github.com/digitalocean/digitalocean" + version = ">=1.0.8" + } + } + ``` * packer-plugin-linode: The Linode plugin has been handed over to the Linode team. New releases for this plugin are available at https://github.com/linode/packer-plugin-linode. This plugin is is no longer being bundled in the Packer binary release. Existing references to the plugin will continue to work but users are advised to update the - required_plugins block to use the new plugin source address. + `required_plugins` block to use the new plugin source address. [GH-12329](https://github.com/hashicorp/packer/pull/12329) ``` required_plugins { @@ -43,7 +66,7 @@ https://github.com/ucloud/packer-plugin-ucloud. This plugin is is no longer being bundled in the Packer binary release. Existing references to the plugin will continue to work but users are advised to update the - required_plugins block to use the new plugin source address. + `required_plugins` block to use the new plugin source address. [GH-12335](https://github.com/hashicorp/packer/pull/12335) ``` required_plugins { @@ -53,24 +76,58 @@ } } ``` +* packer-plugin-profitbricks: The Profitbricks plugin has been removed as a + bundled plugin in Packer. New releases for this plugin are available at + https://github.com/hashicorp/packer-plugin-profitbricks. This plugin is is + no longer being bundled in the Packer binary release. Existing references + to the plugin will continue to work but users are advised to update the + `required_plugins` block to use the new plugin source address. + [GH-12385](https://github.com/hashicorp/packer/pull/12385) + ``` + required_plugins { + ucloud = { + source = "github.com/ucloud/ucloud" + version = ">=1.0.8" + } + } + ``` -### Plugins +### PLUGINS +* Add HCP Ready label to Oracle builder components. + [GH-12217](https://github.com/hashicorp/packer/pull/12217) * Migrate external Linode plugin to linode/packer-plugin-linode. [GH-12329](https://github.com/hashicorp/packer/pull/12329) * Migrate external UCloud plugin to ucloud/packer-plugin-ucloud. [GH-12335](https://github.com/hashicorp/packer/pull/12335) +* Remove external plugin for Digital Ocean as a vendored plugin. + [GH-12376](https://github.com/hashicorp/packer/pull/12376) +* Remove external plugins for Profitbricks and 1&1 as vendored plugins. + [GH-12385](https://github.com/hashicorp/packer/pull/12385) + + +### IMPROVEMENTS + +* cmd/console: Add config-type flag to command help. + [GH-12360](https://github.com/hashicorp/packer/pull/12360) +* Enhance zsh completion for the Packer command. + [GH-12356](https://github.com/hashicorp/packer/pull/12356), + [GH-12366](https://github.com/hashicorp/packer/pull/12366) ### BUG FIXES * Bump github.com/hashicorp/hcp-sdk-go to 0.36.0. [GH-12292](https://github.com/hashicorp/packer/pull/12292) -* Bump github.com/hashicorp/packer-plugin-sdk to 0.4.0 to address CVE-2023-0475, CVE-2022-41723. +* Bump github.com/hashicorp/packer-plugin-sdk to 0.4.0 to address + CVE-2023-0475, CVE-2022-41723. [GH-12306](https://github.com/hashicorp/packer/pull/12306) +* Bump Go module version to 1.20 + [GH-12380](https://github.com/hashicorp/packer/pull/12380) * cmd/hcl2_upgrade: Fix crash when variables block is undefined in legacy JSON templates. [GH-12257](https://github.com/hashicorp/packer/pull/12257) * Fix regression introduced in 1.8.6, where configurations with custom builder - names , via the name attribute, but would display the name to STDOUT with - uninterpolated variable values. + names, via the name attribute, but would display the name to STDOUT with + non-interpolated variable values. [GH-12290](https://github.com/hashicorp/packer/pull/12290) + ## 1.8.6 (February 15, 2023) ### NOTES: @@ -309,7 +366,7 @@ required_plugins { advised to install the latest version of the plugin by running `packer plugins install github.com/outscale/outscale`. [GH-11912](https://github.com/hashicorp/packer/pull/11912) -* packer-plugin-outscale: The Scaleway Packer plugin managed by the Scaleway +* packer-plugin-scaleway: The Scaleway Packer plugin managed by the Scaleway team, since Packer 1.7.7, has been removed from the Packer binary. Users are advised to install the latest version of the plugin by running `packer plugins install github.com/scaleway/scaleway`. [GH-11912](https://github.com/hashicorp/packer/pull/11912) From 0eb65683d37cbed99c2aef6d0dee1f9f2ed41222 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 4 May 2023 19:24:05 -0400 Subject: [PATCH 092/381] Update CHANGELOG * Add a few missing entries * Fix minor typos --- CHANGELOG.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 195c0a5dae1..051b4b565a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,7 +29,6 @@ ## 1.8.7 (May 4, 2023) ### NOTES: - * Vendored plugins within Packer have not been updated. Plugin releases occur on a regular basis to address issues and feature requests. Users are encouraged to use `packer init` for HCL2 templates or `packer plugins install` with @@ -42,7 +41,7 @@ required_plugins { digitalocean = { source = "github.com/digitalocean/digitalocean" - version = ">=1.0.8" + version = ">=1.1.1" } } ``` @@ -86,8 +85,8 @@ ``` required_plugins { ucloud = { - source = "github.com/ucloud/ucloud" - version = ">=1.0.8" + source = "github.com/hashicorp/profitbricks" + version = ">=1.0.2" } } ``` @@ -106,9 +105,10 @@ ### IMPROVEMENTS - * cmd/console: Add config-type flag to command help. [GH-12360](https://github.com/hashicorp/packer/pull/12360) +* core: Add enhanced support to Packer telemetry for HCL2. + [GH-12319](https://github.com/hashicorp/packer/pull/12319) * Enhance zsh completion for the Packer command. [GH-12356](https://github.com/hashicorp/packer/pull/12356), [GH-12366](https://github.com/hashicorp/packer/pull/12366) @@ -124,8 +124,8 @@ * cmd/hcl2_upgrade: Fix crash when variables block is undefined in legacy JSON templates. [GH-12257](https://github.com/hashicorp/packer/pull/12257) * Fix regression introduced in 1.8.6, where configurations with custom builder - names, via the name attribute, but would display the name to STDOUT with - non-interpolated variable values. + names via the name attribute are outputted to STDOUT with uninterpolated + user variables for legacy JSON templates. [GH-12290](https://github.com/hashicorp/packer/pull/12290) ## 1.8.6 (February 15, 2023) @@ -154,11 +154,11 @@ The following external plugins have been updated and pinned to address open ### IMPROVEMENTS: * Bump bundled plugins to latest available version. - [GH-12271](https://github.com/hashicorp/packer/pull/12271) + [GH-12274](https://github.com/hashicorp/packer/pull/12274) * bump github.com/hashicorp/hcp-sdk-go from 0.28.0 to 0.29.0 [GH-12163](https://github.com/hashicorp/packer/pull/12163) * Bump github.com/hashicorp/hcp-sdk-go from 0.33.0 to 0.34.0 - [GH-12262](https://github.com/hashicorp/packer/pull/12262) + [GH-12275](https://github.com/hashicorp/packer/pull/12275) * core/hcl2: Packer will no longer warn on excluded post-processors when using `-only/exlude` filters for running select builds. [GH-12187](https://github.com/hashicorp/packer/pull/12187) @@ -175,6 +175,7 @@ The following external plugins have been updated and pinned to address open * core: Linux packages now have vendor label and set the default label to HashiCorp. This fix is implemented for any future releases, but will not be updated for historical releases. + [GH-12252](https://github.com/hashicorp/packer/pull/12252) * core/hcp: The bucket's description was not properly set in the bucket object sent to HCP Packer leaving all newly created buckets with an empty description. [GH-12235] From c6e2468489a95b4efd8e38191e02a52f0803e9ef Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 4 May 2023 19:59:14 -0400 Subject: [PATCH 093/381] Update CHANGELOG --- CHANGELOG.md | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 051b4b565a1..83f1f035501 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -92,16 +92,16 @@ ``` ### PLUGINS -* Add HCP Ready label to Oracle builder components. - [GH-12217](https://github.com/hashicorp/packer/pull/12217) -* Migrate external Linode plugin to linode/packer-plugin-linode. +* core: Migrate external Linode plugin to linode/packer-plugin-linode. [GH-12329](https://github.com/hashicorp/packer/pull/12329) -* Migrate external UCloud plugin to ucloud/packer-plugin-ucloud. +* core: Migrate external UCloud plugin to ucloud/packer-plugin-ucloud. [GH-12335](https://github.com/hashicorp/packer/pull/12335) -* Remove external plugin for Digital Ocean as a vendored plugin. +* core: Remove external plugin for Digital Ocean as a vendored plugin. [GH-12376](https://github.com/hashicorp/packer/pull/12376) -* Remove external plugins for Profitbricks and 1&1 as vendored plugins. +* core: Remove external plugins for Profitbricks and 1&1 as vendored plugins. [GH-12385](https://github.com/hashicorp/packer/pull/12385) +* docs: Add HCP Ready label to Oracle builder components. + [GH-12217](https://github.com/hashicorp/packer/pull/12217) ### IMPROVEMENTS @@ -114,19 +114,20 @@ [GH-12366](https://github.com/hashicorp/packer/pull/12366) ### BUG FIXES -* Bump github.com/hashicorp/hcp-sdk-go to 0.36.0. +* cmd/hcl2_upgrade: Fix a crash when running the hcl2_upgrade command against a + legacy JSON template containing user variables with an undefined variables + block. [GH-12257](https://github.com/hashicorp/packer/pull/12257) +* core: Bump github.com/hashicorp/hcp-sdk-go to 0.36.0. [GH-12292](https://github.com/hashicorp/packer/pull/12292) -* Bump github.com/hashicorp/packer-plugin-sdk to 0.4.0 to address +* core: Bump github.com/hashicorp/packer-plugin-sdk to 0.4.0 to address CVE-2023-0475, CVE-2022-41723. [GH-12306](https://github.com/hashicorp/packer/pull/12306) -* Bump Go module version to 1.20 +* core: Bump Go module version to 1.20 [GH-12380](https://github.com/hashicorp/packer/pull/12380) -* cmd/hcl2_upgrade: Fix crash when variables block is undefined in legacy JSON - templates. [GH-12257](https://github.com/hashicorp/packer/pull/12257) -* Fix regression introduced in 1.8.6, where configurations with custom builder - names via the name attribute are outputted to STDOUT with uninterpolated - user variables for legacy JSON templates. - [GH-12290](https://github.com/hashicorp/packer/pull/12290) +* core: Fix regression introduced in 1.8.6, where legacy JSON templates with + custom builder names are outputted to STDOUT as uninterpolated user + variables. [GH-12290](https://github.com/hashicorp/packer/pull/12290) + ## 1.8.6 (February 15, 2023) From 53878a806f8ee55445c596d18984377a542cd2af Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 5 May 2023 21:39:55 -0400 Subject: [PATCH 094/381] Update ldflags used to build release binaries Prior to v1.8.6 a change to the release pipeline was introduced to automatically set and bump product version information. In that change the ldflags for striping debug symbols was removed resulting in binaries with full debug symbols. Thus resulting in larger binary deliverables. This change adds the missing ldflags back into the build pipeline. Results for Packer 1.8.5 ``` ~> unzip ~/packer_1.8.5_linux_amd64.zip ~> go tool nm -size packer| c++filt reading packer: no symbol section reading packer: no symbols ``` Results for Packer 1.8.6 ``` ~> unzip ~/packer_1.8.6_linux_amd64.zip ~> go tool nm -size packer| c++filt | tail -n 10 8d97ac0 2816 D vendor/golang.org/x/text/unicode/norm.nfcSparseValues 8df2f60 6144 D vendor/golang.org/x/text/unicode/norm.nfcValues 8f96fc8 8 D vendor/golang.org/x/text/unicode/norm.nfkcData 8d985c0 2816 D vendor/golang.org/x/text/unicode/norm.nfkcIndex 8fa40a0 48 D vendor/golang.org/x/text/unicode/norm.nfkcSparse 8f4a3c0 24 D vendor/golang.org/x/text/unicode/norm.nfkcSparseOffset 8db5c00 3580 D vendor/golang.org/x/text/unicode/norm.nfkcSparseValues 8e48d60 12032 D vendor/golang.org/x/text/unicode/norm.nfkcValues 8f96fd0 8 D vendor/golang.org/x/text/unicode/norm.recompMap 8fe5bd0 12 D vendor/golang.org/x/text/unicode/norm.recompMapOnce ``` Closes #12392 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2eedb08f411..65cdb25089f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -52,7 +52,7 @@ jobs: id: set-ld-flags run: | T="github.com/hashicorp/packer/version" - echo "::set-output name=set-ld-flags::-X ${T}.GitCommit=${GITHUB_SHA::8} -X ${T}.GitDescribe=${{ steps.set-product-version.outputs.product-version }} -X ${T}.Version=${{ steps.set-product-version.outputs.base-product-version }} -X ${T}.VersionPrerelease=${{ steps.set-product-version.outputs.prerelease-product-version }} -X ${T}.VersionMetadata=" + echo "::set-output name=set-ld-flags::-s -w -X ${T}.GitCommit=${GITHUB_SHA::8} -X ${T}.GitDescribe=${{ steps.set-product-version.outputs.product-version }} -X ${T}.Version=${{ steps.set-product-version.outputs.base-product-version }} -X ${T}.VersionPrerelease=${{ steps.set-product-version.outputs.prerelease-product-version }} -X ${T}.VersionMetadata=" - name: validate outputs run: | echo "Product Version: ${{ steps.set-product-version.outputs.product-version }}" From 69c6852d57181f18f4d19b73d5979a7d001c2d43 Mon Sep 17 00:00:00 2001 From: Orien Madgwick <497874+orien@users.noreply.github.com> Date: Sun, 14 May 2023 11:36:24 +1000 Subject: [PATCH 095/381] Align Packer logo color --- website/public/img/logo-hashicorp.svg | 4 ++-- website/public/img/logo-packer-padded.svg | 6 +++--- website/public/img/logo-text.svg | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/website/public/img/logo-hashicorp.svg b/website/public/img/logo-hashicorp.svg index 2e49a3d1545..597cd773d0c 100644 --- a/website/public/img/logo-hashicorp.svg +++ b/website/public/img/logo-hashicorp.svg @@ -1,6 +1,6 @@ - - + + diff --git a/website/public/img/logo-packer-padded.svg b/website/public/img/logo-packer-padded.svg index cbafec1f9c7..4261cc7b26c 100644 --- a/website/public/img/logo-packer-padded.svg +++ b/website/public/img/logo-packer-padded.svg @@ -1,5 +1,5 @@ - diff --git a/website/public/img/logo-text.svg b/website/public/img/logo-text.svg index c1a7cf7e11b..195e3d553fc 100644 --- a/website/public/img/logo-text.svg +++ b/website/public/img/logo-text.svg @@ -1,5 +1,5 @@ - - + + From 6a4c577d6a6e5e6b7636602c2851c767df34bac5 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 25 May 2023 15:45:13 -0400 Subject: [PATCH 096/381] Bump github.com/shirou/gopsutil to v3 (#12437) This change updates gopsutil to the latest available version. Fixes: https://github.com/hashicorp/packer/issues/12430 --- background_check.go | 2 +- go.mod | 13 ++++++++----- go.sum | 34 +++++++++++++++++++++------------- 3 files changed, 30 insertions(+), 19 deletions(-) diff --git a/background_check.go b/background_check.go index c6a723526b0..3eaf7ee2348 100644 --- a/background_check.go +++ b/background_check.go @@ -9,7 +9,7 @@ package main import ( "fmt" - "github.com/shirou/gopsutil/process" + "github.com/shirou/gopsutil/v3/process" ) func checkProcess(currentPID int) (bool, error) { diff --git a/go.mod b/go.mod index 915aadccbb6..6cf64a09f0f 100644 --- a/go.mod +++ b/go.mod @@ -41,8 +41,7 @@ require ( github.com/pierrec/lz4 v2.6.1+incompatible github.com/pkg/sftp v1.13.2 // indirect github.com/posener/complete v1.2.3 - github.com/shirou/gopsutil v3.21.11+incompatible - github.com/stretchr/testify v1.8.1 + github.com/stretchr/testify v1.8.2 github.com/ulikunitz/xz v0.5.10 github.com/zclconf/go-cty v1.10.0 github.com/zclconf/go-cty-yaml v1.0.1 @@ -51,7 +50,7 @@ require ( golang.org/x/net v0.8.0 golang.org/x/oauth2 v0.1.0 golang.org/x/sync v0.1.0 - golang.org/x/sys v0.6.0 // indirect + golang.org/x/sys v0.7.0 // indirect golang.org/x/term v0.6.0 // indirect golang.org/x/text v0.8.0 // indirect golang.org/x/tools v0.6.0 @@ -85,6 +84,7 @@ require ( github.com/hashicorp/packer-plugin-vsphere v1.1.1 github.com/hashicorp/packer-plugin-yandex v1.1.2 github.com/oklog/ulid v1.3.1 + github.com/shirou/gopsutil/v3 v3.23.4 ) require ( @@ -198,6 +198,7 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect github.com/kr/fs v0.1.0 // indirect + github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786 // indirect github.com/matryer/is v1.4.0 // indirect @@ -217,15 +218,17 @@ require ( github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect + github.com/shoenig/go-m1cpu v0.1.5 // indirect github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 // indirect github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.367 // indirect github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.366 // indirect github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.366 // indirect - github.com/tklauser/go-sysconf v0.3.9 // indirect - github.com/tklauser/numcpus v0.4.0 // indirect + github.com/tklauser/go-sysconf v0.3.11 // indirect + github.com/tklauser/numcpus v0.6.0 // indirect github.com/ugorji/go/codec v1.2.6 // indirect github.com/vmware/govmomi v0.29.0 // indirect github.com/xanzy/ssh-agent v0.3.0 // indirect diff --git a/go.sum b/go.sum index 0dde511c132..8a6eeef4ae5 100644 --- a/go.sum +++ b/go.sum @@ -389,6 +389,7 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github/v33 v33.0.1-0.20210113204525-9318e629ec69 h1:zL0/Ug5CMhV0XRb3A6vnK1SQ9kJM3VIyRxPQ5t9w8Bg= @@ -641,6 +642,8 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -772,6 +775,8 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.2.3 h1:NP0eAhjcjImqslEwo/1hq7gpajME0fTLTezBKDqfXqo= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= @@ -815,8 +820,12 @@ github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUt github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= -github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/gopsutil/v3 v3.23.4 h1:hZwmDxZs7Ewt75DV81r4pFMqbq+di2cbt9FsQBqLD2o= +github.com/shirou/gopsutil/v3 v3.23.4/go.mod h1:ZcGxyfzAMRevhUR2+cfhXDH6gQdFYE/t8j1nsU4mPI8= +github.com/shoenig/go-m1cpu v0.1.5 h1:LF57Z/Fpb/WdGLjt2HZilNnmZOxg/q2bSKTQhgbrLrQ= +github.com/shoenig/go-m1cpu v0.1.5/go.mod h1:Wwvst4LR89UxjeFtLRMrpgRiyY4xPsejnVZym39dbAQ= +github.com/shoenig/test v0.6.3 h1:GVXWJFk9PiOjN0KoJ7VrJGH6uLPnqxR7/fe3HUPfE0c= +github.com/shoenig/test v0.6.3/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -855,8 +864,8 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.366/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.367 h1:wZpJtVV05zBriiyAMZtHF7wSgBFUdDiXdnzD/Ecj7Ds= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.367/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= @@ -866,11 +875,10 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.366 h1:7wbTvCC github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.366/go.mod h1:TcIZ64TWquVpU7SmDHScoRUkx4P3Jm/lWq4BYs6IEN8= github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -github.com/tklauser/go-sysconf v0.3.9 h1:JeUVdAOWhhxVcU6Eqr/ATFHgXk/mmiItdKeJPev3vTo= -github.com/tklauser/go-sysconf v0.3.9/go.mod h1:11DU/5sG7UexIrp/O6g35hrWzu0JxlwQ3LSFUzyeuhs= -github.com/tklauser/numcpus v0.3.0/go.mod h1:yFGUr7TUHQRAhyqBcEg0Ge34zDBAsIvJJcyE6boqnA8= -github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq//o= -github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ= +github.com/tklauser/go-sysconf v0.3.11 h1:89WgdJhk5SNwJfu+GKyYveZ4IaJ7xAkecBo+KdJV0CM= +github.com/tklauser/go-sysconf v0.3.11/go.mod h1:GqXfhXY3kiPa0nAXPDIQIWzJbMCB7AmcWpGR8lSZfqI= +github.com/tklauser/numcpus v0.6.0 h1:kebhY2Qt+3U6RNK7UqpYNA+tJ23IBEGKkB7JQBfDYms= +github.com/tklauser/numcpus v0.6.0/go.mod h1:FEZLMke0lhOUG6w2JadTzp0a+Nl8PF/GFkQ5UVIcaL4= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= @@ -1069,6 +1077,7 @@ golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1079,11 +1088,10 @@ golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210816074244-15123e1e1f71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= From 09e96438813caa116e683911eb32793168c24663 Mon Sep 17 00:00:00 2001 From: Samuel Phan Date: Mon, 29 May 2023 18:47:08 +0200 Subject: [PATCH 097/381] docs: add missing end quote --- .../templates/hcl_templates/functions/string/regex_replace.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/templates/hcl_templates/functions/string/regex_replace.mdx b/website/content/docs/templates/hcl_templates/functions/string/regex_replace.mdx index 9e665baa94c..29d10b8e095 100644 --- a/website/content/docs/templates/hcl_templates/functions/string/regex_replace.mdx +++ b/website/content/docs/templates/hcl_templates/functions/string/regex_replace.mdx @@ -34,7 +34,7 @@ hello everybody > regex_replace("hello world", "w.*d", "everybody") hello everybody -> regex_replace("-ab-axxb-", "a(x*)b", "$1W) +> regex_replace("-ab-axxb-", "a(x*)b", "$1W") --- > regex_replace("-ab-axxb-", "a(x*)b", "${1}W") From d67bacc8d392d56bc9109b7a3a790259d71ef132 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 30 May 2023 11:25:28 -0400 Subject: [PATCH 098/381] Remove community plugins from the vendored plugins list (#12436) This step removes community plugins from the Packer binary release. These plugins are being maintained and released independently of Packer and have become out of date. To ensure users are using the latest version of the plugins they are being removed in favor of the external plugin installation processes. --- command/vendored_plugins.go | 39 ------ go.mod | 40 ------ go.sum | 205 ----------------------------- website/data/plugins-manifest.json | 1 + 4 files changed, 1 insertion(+), 284 deletions(-) diff --git a/command/vendored_plugins.go b/command/vendored_plugins.go index e2452913371..79a8af171c6 100644 --- a/command/vendored_plugins.go +++ b/command/vendored_plugins.go @@ -10,8 +10,6 @@ import ( // still vendored with Packer for now. Importing as library instead of // forcing use of packer init. - alicloudecsbuilder "github.com/hashicorp/packer-plugin-alicloud/builder/ecs" - alicloudimportpostprocessor "github.com/hashicorp/packer-plugin-alicloud/post-processor/alicloud-import" amazonchrootbuilder "github.com/hashicorp/packer-plugin-amazon/builder/chroot" amazonebsbuilder "github.com/hashicorp/packer-plugin-amazon/builder/ebs" amazonebssurrogatebuilder "github.com/hashicorp/packer-plugin-amazon/builder/ebssurrogate" @@ -26,7 +24,6 @@ import ( azurechrootbuilder "github.com/hashicorp/packer-plugin-azure/builder/azure/chroot" azuredtlbuilder "github.com/hashicorp/packer-plugin-azure/builder/azure/dtl" azuredtlartifactprovisioner "github.com/hashicorp/packer-plugin-azure/provisioner/azure-dtlartifact" - cloudstackbuilder "github.com/hashicorp/packer-plugin-cloudstack/builder/cloudstack" dockerbuilder "github.com/hashicorp/packer-plugin-docker/builder/docker" dockerimportpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-import" dockerpushpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-push" @@ -35,22 +32,9 @@ import ( googlecomputebuilder "github.com/hashicorp/packer-plugin-googlecompute/builder/googlecompute" googlecomputeexportpostprocessor "github.com/hashicorp/packer-plugin-googlecompute/post-processor/googlecompute-export" googlecomputeimportpostprocessor "github.com/hashicorp/packer-plugin-googlecompute/post-processor/googlecompute-import" - hcloudbuilder "github.com/hashicorp/packer-plugin-hcloud/builder/hcloud" - hyperonebuilder "github.com/hashicorp/packer-plugin-hyperone/builder/hyperone" - hypervisobuilder "github.com/hashicorp/packer-plugin-hyperv/builder/hyperv/iso" - hypervvmcxbuilder "github.com/hashicorp/packer-plugin-hyperv/builder/hyperv/vmcx" - jdcloudbuilder "github.com/hashicorp/packer-plugin-jdcloud/builder/jdcloud" - lxcbuilder "github.com/hashicorp/packer-plugin-lxc/builder/lxc" - lxdbuilder "github.com/hashicorp/packer-plugin-lxd/builder/lxd" - ncloudbuilder "github.com/hashicorp/packer-plugin-ncloud/builder/ncloud" - openstackbuilder "github.com/hashicorp/packer-plugin-openstack/builder/openstack" parallelsisobuilder "github.com/hashicorp/packer-plugin-parallels/builder/parallels/iso" parallelspvmbuilder "github.com/hashicorp/packer-plugin-parallels/builder/parallels/pvm" - proxmoxclone "github.com/hashicorp/packer-plugin-proxmox/builder/proxmox/clone" - proxmoxiso "github.com/hashicorp/packer-plugin-proxmox/builder/proxmox/iso" qemubuilder "github.com/hashicorp/packer-plugin-qemu/builder/qemu" - tencentcloudcvmbuilder "github.com/hashicorp/packer-plugin-tencentcloud/builder/tencentcloud/cvm" - tritonbuilder "github.com/hashicorp/packer-plugin-triton/builder/triton" vagrantbuilder "github.com/hashicorp/packer-plugin-vagrant/builder/vagrant" vagrantpostprocessor "github.com/hashicorp/packer-plugin-vagrant/post-processor/vagrant" vagrantcloudpostprocessor "github.com/hashicorp/packer-plugin-vagrant/post-processor/vagrant-cloud" @@ -63,9 +47,6 @@ import ( vsphereisobuilder "github.com/hashicorp/packer-plugin-vsphere/builder/vsphere/iso" vspherepostprocessor "github.com/hashicorp/packer-plugin-vsphere/post-processor/vsphere" vspheretemplatepostprocessor "github.com/hashicorp/packer-plugin-vsphere/post-processor/vsphere-template" - yandexbuilder "github.com/hashicorp/packer-plugin-yandex/builder/yandex" - yandexexportpostprocessor "github.com/hashicorp/packer-plugin-yandex/post-processor/yandex-export" - yandeximportpostprocessor "github.com/hashicorp/packer-plugin-yandex/post-processor/yandex-import" ) // VendoredDatasources are datasource components that were once bundled with the @@ -78,7 +59,6 @@ var VendoredDatasources = map[string]packersdk.Datasource{ // VendoredBuilders are builder components that were once bundled with the // Packer core, but are now being imported from their counterpart plugin repos var VendoredBuilders = map[string]packersdk.Builder{ - "alicloud-ecs": new(alicloudecsbuilder.Builder), "amazon-ebs": new(amazonebsbuilder.Builder), "amazon-chroot": new(amazonchrootbuilder.Builder), "amazon-ebssurrogate": new(amazonebssurrogatebuilder.Builder), @@ -87,26 +67,11 @@ var VendoredBuilders = map[string]packersdk.Builder{ "azure-arm": new(azurearmbuilder.Builder), "azure-chroot": new(azurechrootbuilder.Builder), "azure-dtl": new(azuredtlbuilder.Builder), - "cloudstack": new(cloudstackbuilder.Builder), "docker": new(dockerbuilder.Builder), "googlecompute": new(googlecomputebuilder.Builder), - "hcloud": new(hcloudbuilder.Builder), - "hyperv-iso": new(hypervisobuilder.Builder), - "hyperv-vmcx": new(hypervvmcxbuilder.Builder), - "hyperone": new(hyperonebuilder.Builder), - "jdcloud": new(jdcloudbuilder.Builder), - "lxc": new(lxcbuilder.Builder), - "lxd": new(lxdbuilder.Builder), - "ncloud": new(ncloudbuilder.Builder), - "openstack": new(openstackbuilder.Builder), - "proxmox": new(proxmoxiso.Builder), - "proxmox-iso": new(proxmoxiso.Builder), - "proxmox-clone": new(proxmoxclone.Builder), "parallels-iso": new(parallelsisobuilder.Builder), "parallels-pvm": new(parallelspvmbuilder.Builder), "qemu": new(qemubuilder.Builder), - "tencentcloud-cvm": new(tencentcloudcvmbuilder.Builder), - "triton": new(tritonbuilder.Builder), "vagrant": new(vagrantbuilder.Builder), "vsphere-clone": new(vsphereclonebuilder.Builder), "vsphere-iso": new(vsphereisobuilder.Builder), @@ -115,7 +80,6 @@ var VendoredBuilders = map[string]packersdk.Builder{ "virtualbox-vm": new(virtualboxvmbuilder.Builder), "vmware-iso": new(vmwareisobuilder.Builder), "vmware-vmx": new(vmwarevmxbuilder.Builder), - "yandex": new(yandexbuilder.Builder), } // VendoredProvisioners are provisioner components that were once bundled with the @@ -129,7 +93,6 @@ var VendoredProvisioners = map[string]packersdk.Provisioner{ // VendoredPostProcessors are post-processor components that were once bundled with the // Packer core, but are now being imported from their counterpart plugin repos var VendoredPostProcessors = map[string]packersdk.PostProcessor{ - "alicloud-import": new(alicloudimportpostprocessor.PostProcessor), "amazon-import": new(anazibimportpostprocessor.PostProcessor), "docker-import": new(dockerimportpostprocessor.PostProcessor), "docker-push": new(dockerpushpostprocessor.PostProcessor), @@ -141,8 +104,6 @@ var VendoredPostProcessors = map[string]packersdk.PostProcessor{ "vagrant-cloud": new(vagrantcloudpostprocessor.PostProcessor), "vsphere-template": new(vspheretemplatepostprocessor.PostProcessor), "vsphere": new(vspherepostprocessor.PostProcessor), - "yandex-export": new(yandexexportpostprocessor.PostProcessor), - "yandex-import": new(yandeximportpostprocessor.PostProcessor), } // Upon init lets load up any plugins that were vendored manually into the default diff --git a/go.mod b/go.mod index 6cf64a09f0f..bc42114765a 100644 --- a/go.mod +++ b/go.mod @@ -59,30 +59,16 @@ require ( ) require ( - github.com/hashicorp/packer-plugin-alicloud v1.0.7 github.com/hashicorp/packer-plugin-ansible v1.0.3 github.com/hashicorp/packer-plugin-azure v1.4.0 - github.com/hashicorp/packer-plugin-cloudstack v1.0.2 github.com/hashicorp/packer-plugin-docker v1.0.8 github.com/hashicorp/packer-plugin-googlecompute v1.1.0 - github.com/hashicorp/packer-plugin-hcloud v1.0.5 - github.com/hashicorp/packer-plugin-hyperone v1.0.1 - github.com/hashicorp/packer-plugin-hyperv v1.0.4 - github.com/hashicorp/packer-plugin-jdcloud v1.0.1 - github.com/hashicorp/packer-plugin-lxc v1.0.2 - github.com/hashicorp/packer-plugin-lxd v1.0.1 - github.com/hashicorp/packer-plugin-ncloud v1.0.3 - github.com/hashicorp/packer-plugin-openstack v1.0.1 github.com/hashicorp/packer-plugin-parallels v1.0.3 - github.com/hashicorp/packer-plugin-proxmox v1.1.1 github.com/hashicorp/packer-plugin-qemu v1.0.9 - github.com/hashicorp/packer-plugin-tencentcloud v1.0.6 - github.com/hashicorp/packer-plugin-triton v1.0.2 github.com/hashicorp/packer-plugin-vagrant v1.0.3 github.com/hashicorp/packer-plugin-virtualbox v1.0.4 github.com/hashicorp/packer-plugin-vmware v1.0.7 github.com/hashicorp/packer-plugin-vsphere v1.1.1 - github.com/hashicorp/packer-plugin-yandex v1.1.2 github.com/oklog/ulid v1.3.1 github.com/shirou/gopsutil/v3 v3.23.4 ) @@ -109,15 +95,9 @@ require ( github.com/Masterminds/semver v1.5.0 // indirect github.com/Masterminds/sprig v2.22.0+incompatible // indirect github.com/Microsoft/go-winio v0.4.16 // indirect - github.com/NaverCloudPlatform/ncloud-sdk-go-v2 v1.1.7 // indirect github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect - github.com/Telmate/proxmox-api-go v0.0.0-20221209160129-bb95d9a81e7a // indirect github.com/acomagu/bufpipe v1.0.3 // indirect github.com/agext/levenshtein v1.2.3 // indirect - github.com/aliyun/alibaba-cloud-sdk-go v1.61.1028 // indirect - github.com/aliyun/aliyun-oss-go-sdk v2.1.8+incompatible // indirect - github.com/antihax/optional v1.0.0 // indirect - github.com/apache/cloudstack-go/v2 v2.12.0 // indirect github.com/apparentlymart/go-cidr v1.0.1 // indirect github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect github.com/armon/go-metrics v0.3.9 // indirect @@ -127,7 +107,6 @@ require ( github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.1.0 // indirect github.com/bmatcuk/doublestar v1.1.5 // indirect - github.com/c2h5oh/datasize v0.0.0-20200825124411-48ed595a09d2 // indirect github.com/cenkalti/backoff/v3 v3.2.2 // indirect github.com/chzyer/test v1.0.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -137,7 +116,6 @@ require ( github.com/dylanmei/iso8601 v0.1.0 // indirect github.com/emirpasic/gods v1.12.0 // indirect github.com/fatih/color v1.12.0 // indirect - github.com/ghodss/yaml v1.0.0 // indirect github.com/go-git/gcfg v1.5.0 // indirect github.com/go-git/go-billy/v5 v5.3.1 // indirect github.com/go-logr/logr v1.2.3 // indirect @@ -156,7 +134,6 @@ require ( github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3 // indirect github.com/golang-jwt/jwt v3.2.2+incompatible // indirect github.com/golang-jwt/jwt/v4 v4.2.0 // indirect - github.com/golang/mock v1.6.0 // indirect github.com/golang/protobuf v1.5.2 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/btree v1.0.1 // indirect @@ -164,9 +141,6 @@ require ( github.com/google/uuid v1.3.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.0 // indirect github.com/googleapis/gax-go/v2 v2.6.0 // indirect - github.com/gophercloud/gophercloud v0.12.0 // indirect - github.com/gophercloud/utils v0.0.0-20200508015959-b0167b94122c // indirect - github.com/grpc-ecosystem/go-grpc-middleware v1.2.2 // indirect github.com/hashicorp/aws-sdk-go-base v0.7.1 // indirect github.com/hashicorp/consul/api v1.10.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect @@ -186,16 +160,11 @@ require ( github.com/hashicorp/vault/api v1.1.1 // indirect github.com/hashicorp/vault/sdk v0.2.1 // indirect github.com/hashicorp/yamux v0.0.0-20210826001029-26ff87cf9493 // indirect - github.com/hetznercloud/hcloud-go v1.25.0 // indirect github.com/huandu/xstrings v1.3.2 // indirect - github.com/hyperonecom/h1-client-go v0.0.0-20191203060043-b46280e4c4a4 // indirect github.com/imdario/mergo v0.3.12 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect - github.com/jdcloud-api/jdcloud-sdk-go v1.9.1-0.20190605102154-3d81a50ca961 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect - github.com/joyent/triton-go v1.8.5 // indirect - github.com/json-iterator/go v1.1.12 // indirect github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect github.com/kr/fs v0.1.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect @@ -211,10 +180,7 @@ require ( github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/mitchellh/iochan v1.0.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d // indirect - github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect @@ -224,16 +190,11 @@ require ( github.com/sergi/go-diff v1.1.0 // indirect github.com/shoenig/go-m1cpu v0.1.5 // indirect github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 // indirect - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.367 // indirect - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.366 // indirect - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.366 // indirect github.com/tklauser/go-sysconf v0.3.11 // indirect github.com/tklauser/numcpus v0.6.0 // indirect github.com/ugorji/go/codec v1.2.6 // indirect github.com/vmware/govmomi v0.29.0 // indirect github.com/xanzy/ssh-agent v0.3.0 // indirect - github.com/yandex-cloud/go-genproto v0.0.0-20211202135052-789603780fb2 // indirect - github.com/yandex-cloud/go-sdk v0.0.0-20211206101223-7c4e7926bf53 // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect go.mongodb.org/mongo-driver v1.11.0 // indirect go.opencensus.io v0.23.0 // indirect @@ -246,7 +207,6 @@ require ( google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c // indirect google.golang.org/protobuf v1.28.1 // indirect gopkg.in/cheggaaa/pb.v1 v1.0.28 // indirect - gopkg.in/ini.v1 v1.62.0 // indirect gopkg.in/square/go-jose.v2 v2.6.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/go.sum b/go.sum index 8a6eeef4ae5..bd6a68ceadb 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,5 @@ bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.105.0 h1:DNtEKRBAAzeS4KyIory52wWHuClNaXJ5x1F7xa4q+5Y= cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= cloud.google.com/go/compute v1.12.1 h1:gKVJMEyqV5c/UnpzjjQbo3Rjvvqpr9B1DFSbJC4OXr0= @@ -76,17 +75,10 @@ github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tT github.com/Microsoft/go-winio v0.4.16 h1:FtSW/jqD+l4ba5iPBj9CODVtgfYAD8w2wS923g/cFDk= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= -github.com/NaverCloudPlatform/ncloud-sdk-go-v2 v1.1.7 h1:Kpnbe19WkzVPpLLdAus4LkpNJ+pzLpfAViOUuvPcCqA= -github.com/NaverCloudPlatform/ncloud-sdk-go-v2 v1.1.7/go.mod h1:P+3VS0ETiQPyWOx3vB/oeC8J3qd7jnVZLYAFwWgGRt8= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C67SkzkDfmQuVln04ygHj3vjZfd9FL+GmQQ= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/Telmate/proxmox-api-go v0.0.0-20221209160129-bb95d9a81e7a h1:b7kX0Wh4fiXS78ThBxs2KYwrD6mPQeCJVHAVhxEz+AM= -github.com/Telmate/proxmox-api-go v0.0.0-20221209160129-bb95d9a81e7a/go.mod h1:zQ/B1nkMv6ueUlAEr0D/x5eaFe3rHSScuTc08dcvvPI= -github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af h1:DBNMBMuMiWYu0b+8KMJuWmfCkcxl09JwdlqwDZZ6U14= -github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw= github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk= github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= @@ -95,18 +87,10 @@ github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuy github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/aliyun/alibaba-cloud-sdk-go v1.61.1028 h1:lBif3zUMR6sjgfONVqfnjjjdXIK09S4Lvkze20ApE8w= -github.com/aliyun/alibaba-cloud-sdk-go v1.61.1028/go.mod h1:pUKYbK5JQ+1Dfxk80P0qxGqe5dkxDoabbZS7zOcouyA= -github.com/aliyun/aliyun-oss-go-sdk v2.1.8+incompatible h1:hLUNPbx10wawWW7DeNExvTrlb90db3UnnNTFKHZEFhE= -github.com/aliyun/aliyun-oss-go-sdk v2.1.8+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/antchfx/xpath v1.1.11 h1:WOFtK8TVAjLm3lbgqeP0arlHpvCEeTANeWZ/csPpJkQ= github.com/antchfx/xquery v0.0.0-20180515051857-ad5b8c7a47b0 h1:JaCC8jz0zdMLk2m+qCCVLLLM/PL93p84w4pK3aJWj60= -github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/apache/cloudstack-go/v2 v2.12.0 h1:IqJjFt1/bc29+8OZtzMijZGgHfUUNZ8R4Zjx091iFnU= -github.com/apache/cloudstack-go/v2 v2.12.0/go.mod h1:2mPSVR6kkM3u1i9L3mmR+Du1f+QBwFKYOSI2XQEyhj4= github.com/apparentlymart/go-cidr v1.0.1 h1:NmIwLZ/KdsjIUlhf+/Np40atNXm/+lZ5txfTJ/SpF+U= github.com/apparentlymart/go-cidr v1.0.1/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3 h1:ZSTrOEhiM5J5RFxEaFvMZVEAM1KvT1YzbEOwB2EAGjA= @@ -116,7 +100,6 @@ github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6 github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/approvals/go-approval-tests v0.0.0-20210131072903-38d0b0ec12b1 h1:uroQ0JaeVom9Ffv9xFtc7DcqrpGmyQeZCRzHD9FqPBg= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-metrics v0.3.0/go.mod h1:zXjbSimjXTd7vOpY8B0/2LpvNvDoXBuplAD+gJD3GYs= github.com/armon/go-metrics v0.3.3/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= @@ -135,7 +118,6 @@ github.com/aws/aws-sdk-go v1.30.27/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZve github.com/aws/aws-sdk-go v1.31.9/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.44.114 h1:plIkWc/RsHr3DXBj4MEw9sEW4CcL/e2ryokc+CKyq1I= github.com/aws/aws-sdk-go v1.44.114/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f h1:ZNv7On9kyUzm7fvRZumSyy/IUiSC7AzL0I1jKKtwooA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= @@ -148,14 +130,10 @@ github.com/biogo/hts v1.4.3 h1:vir2yUTiRkPvtp6ZTpzh9lWTKQJZXJKZ563rpAQAsRM= github.com/biogo/hts v1.4.3/go.mod h1:eW40HJ1l2ExK9C+yvvoRSftInqWsf3ue+zAEjzCGWjA= github.com/bmatcuk/doublestar v1.1.5 h1:2bNwBOmhyFEFcoB3tGvTD5xanq+4kyOZlB8wFYbMjkk= github.com/bmatcuk/doublestar v1.1.5/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE= -github.com/c2h5oh/datasize v0.0.0-20200112174442-28bbd4740fee/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= -github.com/c2h5oh/datasize v0.0.0-20200825124411-48ed595a09d2 h1:t8KYCwSKsOEZBFELI4Pn/phbp38iJ1RRAkDFNin1aak= -github.com/c2h5oh/datasize v0.0.0-20200825124411-48ed595a09d2/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/cenkalti/backoff/v3 v3.2.2 h1:cfUAAO3yvKMYKPrvhDuHSwQnhZNk/RMHKdZqKTxfm6M= github.com/cenkalti/backoff/v3 v3.2.2/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cheggaaa/pb v1.0.27 h1:wIkZHkNfC7R6GI5w7l/PdAdzXzlrbcI3p8OAlnkTsnc= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= @@ -169,10 +147,6 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= @@ -183,19 +157,12 @@ github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/digitalocean/go-libvirt v0.0.0-20201209184759-e2a69bcd5bd1 h1:j6vGflaQ2T7yOWqVgPdiRF73j/U2Zmpbbzab8nyDCRQ= github.com/digitalocean/go-libvirt v0.0.0-20201209184759-e2a69bcd5bd1/go.mod h1:QS1XzqZLcDniNYrN7EZefq3wIyb/M2WmJbql4ZKoc1Q= github.com/digitalocean/go-qemu v0.0.0-20210326154740-ac9e0b687001 h1:WAg57gnaAWWjMAELcwHjc2xy0PoXQ5G+vn3+XS6s1jI= @@ -212,7 +179,6 @@ github.com/dsnet/compress v0.0.1 h1:PlZu0n3Tuv04TzpfPbrnI0HW/YwodEXDS+oPKahKF0Q= github.com/dsnet/compress v0.0.1/go.mod h1:Aw8dCMJ7RioblQeTqt88akK31OvO8Dhf5JflhBbQEHo= github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dylanmei/iso8601 v0.1.0 h1:812NGQDBcqquTfH5Yeo7lwR0nzx/cKdsmf3qMjPURUI= github.com/dylanmei/iso8601 v0.1.0/go.mod h1:w9KhXSgIyROl1DefbMYIE7UVSIvELTbMrCfx+QkYnoQ= github.com/dylanmei/winrmtest v0.0.0-20170819153634-c2fbb09e6c08 h1:0bp6/GrNOrTDtSXe9YYGCwf8jp5Fb/b+4a6MTRm4qzY= @@ -221,9 +187,6 @@ github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3 github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= -github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -236,8 +199,6 @@ github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoD github.com/frankban/quicktest v1.10.0 h1:Gfh+GAJZOAoKZsIZeZbdn2JF10kN1XHNvjsvQK8gVkE= github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= @@ -251,7 +212,6 @@ github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6 github.com/go-git/go-git/v5 v5.4.2 h1:BXyZu9t0VkbiHtqrsvdq39UDhGJTl1h55VW6CSC4aY4= github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-ldap/ldap/v3 v3.1.3/go.mod h1:3rbOH3jRS2u6jg2rJnKAMLE/xQyCKIveG2Sa/Cohzb8= @@ -299,7 +259,6 @@ github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/ github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-openapi/validate v0.22.1 h1:G+c2ub6q47kfX1sOBLwIQwzBVt8qmOAARyo/9Fqs9NU= github.com/go-openapi/validate v0.22.1/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= -github.com/go-resty/resty/v2 v2.6.0 h1:joIR5PNLM2EFqqESUjCMGXrWmXNHEU9CEiK813oKYS4= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= @@ -340,23 +299,18 @@ github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRx github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3 h1:zN2lZNZRflqFyxVaTIU61KNKQ9C0055u9CAfpmqUvo4= github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3/go.mod h1:nPpo7qLxd6XL3hWJG/O60sR8ZKfMCiIoNap5GvD12KU= github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-jwt/jwt/v4 v4.1.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.2.0 h1:besgBTC8w8HjP6NzQdxwKH9Z5oQMZ24ThTrHp3cZ8eU= github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= -github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -378,7 +332,6 @@ github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -409,21 +362,7 @@ github.com/googleapis/enterprise-certificate-proxy v0.2.0 h1:y8Yozv7SZtlU//QXbez github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= github.com/googleapis/gax-go/v2 v2.6.0 h1:SXk3ABtQYDT/OH8jAyvEOQ58mgawq5C4o/4/89qN2ZU= github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/gophercloud/gophercloud v0.6.1-0.20191122030953-d8ac278c1c9d/go.mod h1:ozGNgr9KYOVATV5jsgHl/ceCDXGuguqOZAzoQ/2vcNM= -github.com/gophercloud/gophercloud v0.12.0 h1:mZrie07npp6ODiwHZolTicr5jV8Ogn43AvAsSMm6Ork= -github.com/gophercloud/gophercloud v0.12.0/go.mod h1:gmC5oQqMDOMO1t1gq5DquX/yAU808e/4mzjjDA76+Ss= -github.com/gophercloud/utils v0.0.0-20200508015959-b0167b94122c h1:iawx2ojEQA7c+GmkaVO5sN+k8YONibXyDO8RlsC+1bs= -github.com/gophercloud/utils v0.0.0-20200508015959-b0167b94122c/go.mod h1:ehWUbLQJPqS0Ep+CxeD559hsm9pthPXadJNKwZkp43w= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e h1:JKmoR8x90Iww1ks85zJ1lfDGgIiMDuIptTOhJq+zKyg= github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.2.2 h1:FlFbCRLd5Jr4iYXZufAvgWN6Ao0JrI5chLINnUXDDr0= -github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hako/durafmt v0.0.0-20200710122514-c0fb7b4da026 h1:BpJ2o0OR5FV7vrkDYfXYVJQeMNWa8RhklZOpW2ITAIQ= github.com/hako/durafmt v0.0.0-20200710122514-c0fb7b4da026/go.mod h1:5Scbynm8dF1XAPwIwkGPqzkM/shndPm79Jd1003hTjE= github.com/hashicorp/aws-sdk-go-base v0.7.1 h1:7s/aR3hFn74tYPVihzDyZe7y/+BorN70rr9ZvpV3j3o= @@ -508,48 +447,22 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= github.com/hashicorp/memberlist v0.2.2 h1:5+RffWKwqJ71YPu9mWsF7ZOscZmwfasdA8kbdC7AO2g= github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/packer-plugin-alicloud v1.0.7 h1:Vp86AE/lx9CMQrEzIGvLOUxsbpxTINevF5oaUOJ/HNw= -github.com/hashicorp/packer-plugin-alicloud v1.0.7/go.mod h1:Qz25m4o6IsRPtImccNoFon+gfQFi5aifpPtTwJyYNp8= github.com/hashicorp/packer-plugin-amazon v1.2.1 h1:0Xqr8KsTJJhIo0vvjqPYrVMgyVxNRuYH4DeB5m/WAtw= github.com/hashicorp/packer-plugin-amazon v1.2.1/go.mod h1:qlp0h5TWVGgcPzN9mSxPiEAwOUOW3XU/zep0pGd0ZsM= github.com/hashicorp/packer-plugin-ansible v1.0.3 h1:XjltQVPYnnZdNyBjwHr1QthR413SjZxTtRrmM0sM3VI= github.com/hashicorp/packer-plugin-ansible v1.0.3/go.mod h1:N4OZtNDq2FSRBknuNU/GSoKtllfxQnHCYYaJUD1p1MA= github.com/hashicorp/packer-plugin-azure v1.4.0 h1:rxkcGe5pjjnzddfR5/sBJmg8kb+ko+r2M+Ce7OC8sQ4= github.com/hashicorp/packer-plugin-azure v1.4.0/go.mod h1:7j1q0SNPeZr7xRID0c/Hu9QojE41pSlSJwsNB9/rOTI= -github.com/hashicorp/packer-plugin-cloudstack v1.0.2 h1:JsT2AuCcZGajbFL0w/sQ5yzoWLwOPyETboDR+Ws0xbo= -github.com/hashicorp/packer-plugin-cloudstack v1.0.2/go.mod h1:WCX3zX0P6ubg3QoErIFu/b7UwzxVli2WVa82wfbPqa0= github.com/hashicorp/packer-plugin-docker v1.0.8 h1:UWPG/pl+1RFsaNQVhEuowCeOZuES6/mqy5R6FTyMeQo= github.com/hashicorp/packer-plugin-docker v1.0.8/go.mod h1:4U3gHULbUw3okSqqZgQZD5ptyJKs0S7LfOOt2U3V4Jk= github.com/hashicorp/packer-plugin-googlecompute v1.1.0 h1:/cSZCJuRV6osaSa1uOy8cpN+c/uiCbrSsZ8vyNC0slk= github.com/hashicorp/packer-plugin-googlecompute v1.1.0/go.mod h1:k7MhKwEDw9ASP3a1y1syKJFZiZ8pO4oH40HvVgGHzUE= -github.com/hashicorp/packer-plugin-hcloud v1.0.5 h1:GNYz2jZzjqRDP38YEVyEEgk3SzvjKXDxOV1L9H9xj/I= -github.com/hashicorp/packer-plugin-hcloud v1.0.5/go.mod h1:FiFFtzIjF30UMdrYG9hJ6MyJNdNROeytfqvUV5YLiqw= -github.com/hashicorp/packer-plugin-hyperone v1.0.1 h1:rTxnbFE8UDnzWG3prHQZpWmCpFHMd1GmE7M8jW8Fuq4= -github.com/hashicorp/packer-plugin-hyperone v1.0.1/go.mod h1:tT5g5xjFRuFX28w0NhpiwMum/JQDjboJwfa3Zt3ND+Q= -github.com/hashicorp/packer-plugin-hyperv v1.0.4 h1:SHdo60jfrmeSz+T25Aa2BuSWBioFOWe4hKmp7W6lIUs= -github.com/hashicorp/packer-plugin-hyperv v1.0.4/go.mod h1:8kHew9yWRaKYojmOMj1FYVlhOrdtiIZX2Z8RM+sHxJE= -github.com/hashicorp/packer-plugin-jdcloud v1.0.1 h1:qgecywtT8EqGiHdvopC36eBz1lSZs336w7X2q+y+UY0= -github.com/hashicorp/packer-plugin-jdcloud v1.0.1/go.mod h1:1i/cCievlQE+grHJWUxhwi5nzwSXt9n0WmcHpFVMt5I= -github.com/hashicorp/packer-plugin-lxc v1.0.2 h1:JvIkbSynft+9JAi1uPEVHesIe02OX2yL9rPj1Ud0kM8= -github.com/hashicorp/packer-plugin-lxc v1.0.2/go.mod h1:kirXCLekY6h0YPbWaue2YRqKqiumyDnbwwww/TGjGjE= -github.com/hashicorp/packer-plugin-lxd v1.0.1 h1:sqdaEdip0y/wC7x99CQHIbakJSmZY2kI3LfFT0FvYVo= -github.com/hashicorp/packer-plugin-lxd v1.0.1/go.mod h1:IZJTYWyGxlNZm0GKUgVejCPrXAU/cTlIpRiFgeQCCn4= -github.com/hashicorp/packer-plugin-ncloud v1.0.3 h1:+LCQ404nhWM871dy8oLuspFgTAt6qpx1fXZj9e4GcZY= -github.com/hashicorp/packer-plugin-ncloud v1.0.3/go.mod h1:5KQwE5s6GG8rAjwmzmWbjwQH7/nrn/hmJ/aZJIn4i+Q= -github.com/hashicorp/packer-plugin-openstack v1.0.1 h1:R4Iw0Vx/o14e2GRbKypwsR1B21z6CkaISX+KqwtLuTo= -github.com/hashicorp/packer-plugin-openstack v1.0.1/go.mod h1:i5qn9aUabJM9mjhpXS81hFSuDjJYA2kOi0vLlo3VGsE= github.com/hashicorp/packer-plugin-parallels v1.0.3 h1:smypphUCEj3arCdlvbNtZvGC1ujsUSRtN1MBvZHt/w8= github.com/hashicorp/packer-plugin-parallels v1.0.3/go.mod h1:Q842nvosVmP5FnYozk8ZZj93HGIan19jHTxGeteBCb0= -github.com/hashicorp/packer-plugin-proxmox v1.1.1 h1:uBwW7MQN1p3vUha1BVIG3wqWrxa349qWekYyScSvDls= -github.com/hashicorp/packer-plugin-proxmox v1.1.1/go.mod h1:S83+dabgqpNuKvm7sdNh2ivqx5rpgO6mbJn/iVrrXjk= github.com/hashicorp/packer-plugin-qemu v1.0.9 h1:1YKBBzBULYUBWtpAZJTbaLjjZPAdQ63okkpTqMBTnzM= github.com/hashicorp/packer-plugin-qemu v1.0.9/go.mod h1:BpWIpVpOoPFV9Ppmzq4DP/S0QNoh1R+7DUCqxHdXc+Y= github.com/hashicorp/packer-plugin-sdk v0.4.0 h1:UyLYe0y02D9wkOQ3FeeZWyFg2+mx2vLuWRGUL5xt50I= github.com/hashicorp/packer-plugin-sdk v0.4.0/go.mod h1:uNhU3pmjM2ejgHYce/g4J+sa5rh81iYQztpGvGa5FOs= -github.com/hashicorp/packer-plugin-tencentcloud v1.0.6 h1:h7thXtVaXZhrF5L+bMcdMktrcV4RufQvJI41y10dHtE= -github.com/hashicorp/packer-plugin-tencentcloud v1.0.6/go.mod h1:J7RslhmI+X7EdAVOtEp59X7L3L5VGyZNwiXxDyIpYpI= -github.com/hashicorp/packer-plugin-triton v1.0.2 h1:Yla93I7Jl/WXCuCRWYYR0J8/57X4puGLZ07wBn+QS9w= -github.com/hashicorp/packer-plugin-triton v1.0.2/go.mod h1:4eeTOUPYYD1B9iNF0FMqfVczqhTRuL9bXn3AqJa2N9Y= github.com/hashicorp/packer-plugin-vagrant v1.0.3 h1:IUfEdYuAjSjGsgJI2rnZ1qEo5rI0UWoueJ+yq9ysx4M= github.com/hashicorp/packer-plugin-vagrant v1.0.3/go.mod h1:Ymg8LJrT8N2Dclu91G3ZhXpE67jL7hfbtyDVKeNsKTc= github.com/hashicorp/packer-plugin-virtualbox v1.0.4 h1:mceFO34yhBU4BUMmCcQAB6KQ98GPjBIXTG3eS22RmZM= @@ -558,8 +471,6 @@ github.com/hashicorp/packer-plugin-vmware v1.0.7 h1:cnc6XRNAkE+P5EoiI4VLXmIUeb2V github.com/hashicorp/packer-plugin-vmware v1.0.7/go.mod h1:AGeNk9f/qKUP8yGoiofMqvBw8TJLtdhsZgvqannZQS4= github.com/hashicorp/packer-plugin-vsphere v1.1.1 h1:X4PtYV7TGPqoudjfvHpI2qRl9pAGf1SfkiJ7sMCKAEU= github.com/hashicorp/packer-plugin-vsphere v1.1.1/go.mod h1:kLbvU4EwRISjhvY3c5pVisCKE0Usn+pOMRkIPnwcPfU= -github.com/hashicorp/packer-plugin-yandex v1.1.2 h1:fFkFgpFb0C+vsinAi7qvhGNcPsFgfURkYAN4nYQwYmM= -github.com/hashicorp/packer-plugin-yandex v1.1.2/go.mod h1:h762Fyh6efQ02jr5kmbeS8OTPlbwqoUpqWuCQKec6m0= github.com/hashicorp/serf v0.9.5 h1:EBWvyu9tcRszt3Bxp3KNssBMP1KuHWyO51lz9+786iM= github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= github.com/hashicorp/vault/api v1.0.5-0.20200519221902-385fac77e20f/go.mod h1:euTFbi2YJgwcju3imEt919lhJKF68nN1cQPq3aA+kBE= @@ -571,24 +482,15 @@ github.com/hashicorp/vault/sdk v0.2.1/go.mod h1:WfUiO1vYzfBkz1TmoE4ZGU7HD0T0Cl/r github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20210826001029-26ff87cf9493 h1:brI5vBRUlAlM34VFmnLPwjnCL/FxAJp9XvOdX6Zt+XE= github.com/hashicorp/yamux v0.0.0-20210826001029-26ff87cf9493/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= -github.com/hetznercloud/hcloud-go v1.25.0 h1:QAaFKtGKWRxjwjKJWBGMxGYUxVEQmIkb35j/WXrsazY= -github.com/hetznercloud/hcloud-go v1.25.0/go.mod h1:2C5uMtBiMoFr3m7lBFPf7wXTdh33CevmZpQIIDPGYJI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw= github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= -github.com/hyperonecom/h1-client-go v0.0.0-20191203060043-b46280e4c4a4 h1:mSmyzhwBeQt2TlHbsXYLona9pwjWAvYGwQJ2Cq/k3VE= -github.com/hyperonecom/h1-client-go v0.0.0-20191203060043-b46280e4c4a4/go.mod h1:yNUVHSleURKSaYUKq4Wx0i/vjCen2aq7CvPyHd/Vj2Q= -github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ= -github.com/jackc/pgx v3.3.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= -github.com/jdcloud-api/jdcloud-sdk-go v1.9.1-0.20190605102154-3d81a50ca961 h1:a2/K4HRhg31A5vafiz5yYiGMjaCxwRpyjJStfVquKds= -github.com/jdcloud-api/jdcloud-sdk-go v1.9.1-0.20190605102154-3d81a50ca961/go.mod h1:UrKjuULIWLjHFlG6aSPunArE5QX57LftMmStAZJBEX8= github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 h1:IPJ3dvxmJ4uczJe5YQdrYB16oTJlGSC/OyZDqUk9xX4= github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869/go.mod h1:cJ6Cj7dQo+O6GJNiMx+Pa94qKj+TG8ONdKHgMNIyyag= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= @@ -599,18 +501,10 @@ github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHW github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= -github.com/joyent/triton-go v1.8.5 h1:AXc1BJP3YGAvQXIdhdJt/PiARN5arHNXWK6Q6FeBing= -github.com/joyent/triton-go v1.8.5/go.mod h1:meGUPVGmmm+vhjIsOzfmJtuKpapVfWXJhUSLsr7Sv40= -github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= @@ -641,10 +535,8 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= -github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= @@ -672,8 +564,6 @@ github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOA github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.13 h1:qdl+GuBjcsKKDco5BsxPJlId98mSWNKqYA+Co0SC1yA= github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-tty v0.0.0-20191112051231-74040eebce08 h1:8YAWbq7rJqfbc6IaAvA2eCQuOQvf6Bs4vHKcOyWw//E= @@ -721,12 +611,9 @@ github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= -github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -736,9 +623,6 @@ github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/olekukonko/tablewriter v0.0.0-20180130162743-b8a9be070da4/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= -github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= @@ -749,7 +633,6 @@ github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zM github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/packer-community/winrmcp v0.0.0-20180921211025-c76d91c1e7db h1:9uViuKtx1jrlXLBW/pMnhOfzn3iSEdLase/But/IZRU= @@ -757,7 +640,6 @@ github.com/packer-community/winrmcp v0.0.0-20180921211025-c76d91c1e7db/go.mod h1 github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4 v2.5.2+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= @@ -779,43 +661,31 @@ github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= -github.com/rs/zerolog v1.4.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/sean-/conswriter v0.0.0-20180208195008-f5ae3917a627/go.mod h1:7zjs06qF79/FKAJpBvFx3P8Ww4UTIMAe+lpNXDHziac= -github.com/sean-/pager v0.0.0-20180208200047-666be9bf53b5/go.mod h1:BeybITEsBEg6qbIiqJ6/Bqeq25bCLbL7YFmpaFfJDuM= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= @@ -826,7 +696,6 @@ github.com/shoenig/go-m1cpu v0.1.5 h1:LF57Z/Fpb/WdGLjt2HZilNnmZOxg/q2bSKTQhgbrLr github.com/shoenig/go-m1cpu v0.1.5/go.mod h1:Wwvst4LR89UxjeFtLRMrpgRiyY4xPsejnVZym39dbAQ= github.com/shoenig/test v0.6.3 h1:GVXWJFk9PiOjN0KoJ7VrJGH6uLPnqxR7/fe3HUPfE0c= github.com/shoenig/test v0.6.3/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= -github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -834,23 +703,10 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 h1:JIAuq3EEf9cgbU6AtGPK4CTG3Zf6CKMNqf0MHTggAUA= github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.2.1/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -866,24 +722,14 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.366/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.367 h1:wZpJtVV05zBriiyAMZtHF7wSgBFUdDiXdnzD/Ecj7Ds= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.367/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.366 h1:NJm4RjeL2btX3alWLQvyzObmlDtGC0pCFCoeqWw2Veg= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.366/go.mod h1:x9QV7qu6FpnSdVyGQoirhjKsPd1dEpWnr9RL75DpgJ4= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.366 h1:7wbTvCCJ41Hx9KWO9pcmvOFWFS1A9iPs0jtQJLwe++U= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc v1.0.366/go.mod h1:TcIZ64TWquVpU7SmDHScoRUkx4P3Jm/lWq4BYs6IEN8= github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tklauser/go-sysconf v0.3.11 h1:89WgdJhk5SNwJfu+GKyYveZ4IaJ7xAkecBo+KdJV0CM= github.com/tklauser/go-sysconf v0.3.11/go.mod h1:GqXfhXY3kiPa0nAXPDIQIWzJbMCB7AmcWpGR8lSZfqI= github.com/tklauser/numcpus v0.6.0 h1:kebhY2Qt+3U6RNK7UqpYNA+tJ23IBEGKkB7JQBfDYms= github.com/tklauser/numcpus v0.6.0/go.mod h1:FEZLMke0lhOUG6w2JadTzp0a+Nl8PF/GFkQ5UVIcaL4= -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= github.com/ugorji/go v1.2.6/go.mod h1:anCg0y61KIhDlPZmnH+so+RQbysYVyDko0IMgJv0Nn0= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.2.6 h1:7kbGefxLoDBuYXOms4yD7223OpNMMPNPZxXk5TvFcyQ= github.com/ugorji/go/codec v1.2.6/go.mod h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxWFFpvxTw= github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= @@ -902,12 +748,6 @@ github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+ github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yandex-cloud/go-genproto v0.0.0-20211202135052-789603780fb2 h1:NOMh7Oy10aaqHWDajqN1whPrFD2RViJOqsWeAOtW7fQ= -github.com/yandex-cloud/go-genproto v0.0.0-20211202135052-789603780fb2/go.mod h1:HEUYX/p8966tMUHHT+TsS0hF/Ca/NYwqprC5WXSDMfE= -github.com/yandex-cloud/go-sdk v0.0.0-20211206101223-7c4e7926bf53 h1:SOTpRQ+mqmu3IbemdahJSev3Srp7CYNUzjDbFlBPeHU= -github.com/yandex-cloud/go-sdk v0.0.0-20211206101223-7c4e7926bf53/go.mod h1:fjnP1VWobOVjfhIfeOZvq+zxhdTbqsddVXUm4psPkRU= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= @@ -919,7 +759,6 @@ github.com/zclconf/go-cty v1.10.0 h1:mp9ZXQeIcN8kAwuqorjH+Q+njbJKjLrvB2yIh4q7U+0 github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= github.com/zclconf/go-cty-yaml v1.0.1 h1:up11wlgAaDvlAGENcFDnZgkn0qUJurso7k6EpURKNF8= github.com/zclconf/go-cty-yaml v1.0.1/go.mod h1:IP3Ylp0wQpYm50IHK8OZWKMu6sPJIUgKa8XhiVHura0= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8= @@ -933,25 +772,18 @@ go.opentelemetry.io/otel v1.11.1/go.mod h1:1nNhXBbWSD0nsL38H6btgnFN2k4i0sNLHNNMZ go.opentelemetry.io/otel/sdk v1.11.1 h1:F7KmQgoHljhUuJyA+9BiU+EkJfyX5nVVF4wyzWZpKxs= go.opentelemetry.io/otel/trace v1.11.1 h1:ofxdnzsNrGBYXbP7t7zpUK281+go5rF7dvdIZXF8gdQ= go.opentelemetry.io/otel/trace v1.11.1/go.mod h1:f/Q9G7vzk5u91PhbmKbg1Qn0rzH1LJ4vbPHFGkTPtOk= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190222235706-ffb98f73852f/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190418165655-df01cb2cc480/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200422194213-44a606286825/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -969,7 +801,6 @@ golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -981,8 +812,6 @@ golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCc golang.org/x/mobile v0.0.0-20210901025245-1fde1d6c3ca1 h1:t3ZHqovedSY8DEAUmZA99fPJhUhOb176PLACYA1sJ8Y= golang.org/x/mobile v0.0.0-20210901025245-1fde1d6c3ca1/go.mod h1:jFTmtFYCV0MFtXBU+J5V/+5AUeVS0ON/0WkE/KSrl6E= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= @@ -994,26 +823,20 @@ golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= @@ -1024,8 +847,6 @@ golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.1.0 h1:isLCZuhj4v+tYv7eskaN4v/TM+A1begWWgyVJDdl1+Y= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1044,9 +865,7 @@ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1062,18 +881,14 @@ golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1116,7 +931,6 @@ golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -1127,10 +941,7 @@ golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191203134012-c197fd4bf371/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200711155855-7342f9734a7d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= @@ -1151,27 +962,19 @@ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoA google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20211021150943-2b146023228c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c h1:QgY/XxIAIeccR+Ca/rDdKubLIU9rcJ3xfy1DC/Wd2Oo= google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= google.golang.org/grpc v1.50.1 h1:DS/BukOZWp8s6p4Dt/tOaJaTQyPyOoCcrjroHuCeLzY= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -1185,7 +988,6 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= @@ -1201,10 +1003,6 @@ gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qS gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= -gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU= -gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI= @@ -1212,13 +1010,10 @@ gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76 gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= diff --git a/website/data/plugins-manifest.json b/website/data/plugins-manifest.json index 906ad1023e6..ee9c1f5daf5 100644 --- a/website/data/plugins-manifest.json +++ b/website/data/plugins-manifest.json @@ -336,6 +336,7 @@ "title": "VirtualBox", "path": "virtualbox", "repo": "hashicorp/packer-plugin-virtualbox", + "pluginTier": "official", "version": "latest" }, { From 78aca131dbd3be4f678d2ecc9ee2ac939beadc58 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 26 May 2023 15:33:21 -0400 Subject: [PATCH 099/381] jira GHA: Address set-output deprecation warnings Closes #12426 --- .github/workflows/jira.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/jira.yml b/.github/workflows/jira.yml index 688eada877a..e0e82a97f01 100644 --- a/.github/workflows/jira.yml +++ b/.github/workflows/jira.yml @@ -35,21 +35,21 @@ jobs: run: | # Questions are not tracked in JIRA at this time. if [[ "${{ contains(github.event.issue.labels.*.name, 'question') }}" == "true" ]]; then - echo "::set-output name=type::Invalid" + echo "type=Invalid" >> $GITHUB_OUTPUT else # Properly labeled GH issues are assigned the standard "GH Issue" type upon creation. - echo "::set-output name=type::GH Issue" + echo "type=GH Issue" >> $GITHUB_OUTPUT fi - name: Set labels id: set-ticket-labels run: | if [[ "${{ contains(github.event.issue.labels.*.name, 'bug') }}" == "true" ]]; then - echo "::set-output name=labels::[\"bug\"]" + echo "labels=[\"bug\"]" >> $GITHUB_OUTPUT elif [[ "${{ contains(github.event.issue.labels.*.name, 'enhancement') }}" == "true" ]]; then - echo "::set-output name=labels::[\"enhancement\"]" + echo "labels=[\"enhancement\"]" >> $GITHUB_OUTPUT else - echo "::set-output name=labels::[]" + echo "labels=[]" >> $GITHUB_OUTPUT fi - name: Validate ticket From c78de1e64a8e84040859c9791218731e6a64e328 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 26 May 2023 15:35:11 -0400 Subject: [PATCH 100/381] acceptance-test GHA: Address set-output deprecation warnings --- .github/workflows/acceptance-test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/acceptance-test.yml b/.github/workflows/acceptance-test.yml index 11b4f08b851..98d012cb8d4 100644 --- a/.github/workflows/acceptance-test.yml +++ b/.github/workflows/acceptance-test.yml @@ -26,7 +26,7 @@ jobs: # version, because "goenv" can react to it automatically. run: | echo "Building with Go $(cat .go-version)" - echo "::set-output name=go-version::$(cat .go-version)" + echo "go-version=$(cat .go-version)" >> $GITHUB_OUTPUT acceptance-test: runs-on: ubuntu-latest name: Acceptance Test From f7c0507c1afc522f4abec9e64e3d189ccbb6b8f4 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 26 May 2023 15:41:18 -0400 Subject: [PATCH 101/381] auto-close-stale-issues: Bump action/stale to latest available release --- .github/workflows/auto-close-stale-issues.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto-close-stale-issues.yml b/.github/workflows/auto-close-stale-issues.yml index aa6b2e10861..40b04dec196 100644 --- a/.github/workflows/auto-close-stale-issues.yml +++ b/.github/workflows/auto-close-stale-issues.yml @@ -14,7 +14,7 @@ jobs: pull-requests: write # for actions/stale to close stale PRs runs-on: ubuntu-latest steps: - - uses: actions/stale@v5.2.0 # TSCCR: no entry for repository "actions/stale" + - uses: actions/stale@a20b814fb01b71def3bd6f56e7494d667ddf28da # v8.0.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} days-before-issue-stale: 23 From 32c0deeff05ec980fe0c2f17e93e1c8bba8ae95c Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 26 May 2023 15:47:39 -0400 Subject: [PATCH 102/381] build GHA: Address set-output deprecation warnings --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 65cdb25089f..d5840a56b52 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -33,7 +33,7 @@ jobs: # version, because "goenv" can react to it automatically. run: | echo "Building with Go $(cat .go-version)" - echo "::set-output name=go-version::$(cat .go-version)" + echo "go-version=$(cat .go-version)" >> $GITHUB_OUTPUT set-product-version: runs-on: ubuntu-latest @@ -52,7 +52,7 @@ jobs: id: set-ld-flags run: | T="github.com/hashicorp/packer/version" - echo "::set-output name=set-ld-flags::-s -w -X ${T}.GitCommit=${GITHUB_SHA::8} -X ${T}.GitDescribe=${{ steps.set-product-version.outputs.product-version }} -X ${T}.Version=${{ steps.set-product-version.outputs.base-product-version }} -X ${T}.VersionPrerelease=${{ steps.set-product-version.outputs.prerelease-product-version }} -X ${T}.VersionMetadata=" + echo "set-ld-flags='-s -w -X ${T}.GitCommit=${GITHUB_SHA::8} -X ${T}.GitDescribe=${{ steps.set-product-version.outputs.product-version }} -X ${T}.Version=${{ steps.set-product-version.outputs.base-product-version }} -X ${T}.VersionPrerelease=${{ steps.set-product-version.outputs.prerelease-product-version }} -X ${T}.VersionMetadata='" >> $GITHUB_OUTPUT - name: validate outputs run: | echo "Product Version: ${{ steps.set-product-version.outputs.product-version }}" From 6db700f4cf875c3ef6a78e3b6c95faef69a16779 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 30 May 2023 12:26:11 -0400 Subject: [PATCH 103/381] Remove invalid quote from ldflags --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d5840a56b52..657b9c39ebc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -52,7 +52,7 @@ jobs: id: set-ld-flags run: | T="github.com/hashicorp/packer/version" - echo "set-ld-flags='-s -w -X ${T}.GitCommit=${GITHUB_SHA::8} -X ${T}.GitDescribe=${{ steps.set-product-version.outputs.product-version }} -X ${T}.Version=${{ steps.set-product-version.outputs.base-product-version }} -X ${T}.VersionPrerelease=${{ steps.set-product-version.outputs.prerelease-product-version }} -X ${T}.VersionMetadata='" >> $GITHUB_OUTPUT + echo "set-ld-flags=-s -w -X ${T}.GitCommit=${GITHUB_SHA::8} -X ${T}.GitDescribe=${{ steps.set-product-version.outputs.product-version }} -X ${T}.Version=${{ steps.set-product-version.outputs.base-product-version }} -X ${T}.VersionPrerelease=${{ steps.set-product-version.outputs.prerelease-product-version }} -X ${T}.VersionMetadata=" >> $GITHUB_OUTPUT - name: validate outputs run: | echo "Product Version: ${{ steps.set-product-version.outputs.product-version }}" From ace37e067d1f4678f15f143ff18fd6fab5416cda Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 30 May 2023 13:43:10 -0400 Subject: [PATCH 104/381] Update issues-opened.yml Remove action to add issue to project. Board has been deprecated. --- .github/workflows/issues-opened.yml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/.github/workflows/issues-opened.yml b/.github/workflows/issues-opened.yml index 2866dc87f47..57a8cd0cb65 100644 --- a/.github/workflows/issues-opened.yml +++ b/.github/workflows/issues-opened.yml @@ -19,16 +19,6 @@ jobs: repo-token: "${{ secrets.GITHUB_TOKEN }}" configuration-path: .github/labeler-issue-triage.yml enable-versioned-regex: 0 - add-to-project: - name: Add issue to request queue - runs-on: ubuntu-latest - steps: - - uses: actions/add-to-project@main # TSCCR: no entry for repository "actions/add-to-project" - with: - project-url: https://github.com/orgs/hashicorp/projects/105 - github-token: ${{ secrets.PACKER_PROJ_BOARD_TOKEN }} - labeled: bug, enhancement - label-operator: OR label-question: name: Redirect to discuss permissions: From 35c579a9f689e00134e305f61d2d23e6069b3625 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 30 May 2023 14:15:24 -0400 Subject: [PATCH 105/381] CHANGELOG: update for 1.9.0 release --- CHANGELOG.md | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 83f1f035501..4c56a2d840e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ -## 1.9.0 (Unreleased) +## 1.9.0 (May 31, 2023) ### NOTES: + * **Breaking Change**: Iteration fingerprints used to be computed from the Git SHA of the repository where the template is located when running packer build. This changes with this release, and now fingerprints are automatically generated @@ -12,13 +13,40 @@ these builds will work exactly as they did before. [GH-12172](https://github.com/hashicorp/packer/pull/12172) +* **Breaking Change**: Community-maintained plugins bundled with the Packer binary have been removed. + These external plugin components are released independently of Packer core and can be installed + directly by the user. Users relying on the external plugin components listed below should refer + to the `packer plugins` sub-command and, if using HCL2, a `required_plugins` block to define a + list of plugins for building a template. + ### PLUGINS + * Remove provisioner plugins for Chef, Converge, Puppet, Salt, and Inspec as vendored plugins. These plugins have been previously archived and not updated in release since being archived. These plugins can be installed using `packer init` or with the Packer plugins sub-command `packer plugins install github.com/hashicorp/chef`. [GH-12374](https://github.com/hashicorp/packer/pull/12374) +* The following community plugins won't be bundled with Packer anymore: + + * [Alicloud](https://github.com/hashicorp/packer-plugin-alicloud) + * [CloudStack](https://github.com/hashicorp/packer-plugin-cloudstack) + * [HCloud](https://github.com/hashicorp/packer-plugin-hcloud) + * [HyperOne](https://github.com/hashicorp/packer-plugin-hyperone) + * [Hyper-V](https://github.com/hashicorp/packer-plugin-hyperv) + * [JDCloud](https://github.com/hashicorp/packer-plugin-jdcloud) + * [LXC](https://github.com/hashicorp/packer-plugin-lxc) + * [LXD](https://github.com/hashicorp/packer-plugin-lxd) + * [NCloud](https://github.com/hashicorp/packer-plugin-ncloud) + * [OpenStack](https://github.com/hashicorp/packer-plugin-openstack) + * [Proxmox](https://github.com/hashicorp/packer-plugin-proxmox) + * [TencentCloud](https://github.com/hashicorp/packer-plugin-tencentcloud) + * [Triton](https://github.com/hashicorp/packer-plugin-triton) + * [Yandex](https://github.com/hashicorp/packer-plugin-yandex) + +Users relying on these external plugin components should refer to the `packer plugins` sub-command and, +if using HCL2, a `required_plugins` block to define a list of plugins to use for building a template. + ### IMPROVEMENTS: * core/hcp: Now, fingerprints used by HCP Packer are randomly generated ULIDs @@ -26,6 +54,14 @@ already specified in the environment. [GH-12172](https://github.com/hashicorp/packer/pull/12172) +### BUG FIXES: + +* Fix LDFLAGS for release pipelines: Between Packer 1.8.5 and Packer 1.8.7, changes + to the LDFLAGS in use for building the binaries for Packer had mistakenly + removed some compilation flags, leading to the final binaries not being stripped. + This change raised the size of the built binaries by as much as 45%. + In this release, we fixed the LDFLAGS during compilation, yielding leaner binaries. + ## 1.8.7 (May 4, 2023) ### NOTES: From f730bd640fe650327168e4e5d3574e0d4e57bde8 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 31 May 2023 11:45:50 -0400 Subject: [PATCH 106/381] changelog: update for release 1.9.0 --- CHANGELOG.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c56a2d840e..b03563e5c40 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,6 +44,8 @@ * [Triton](https://github.com/hashicorp/packer-plugin-triton) * [Yandex](https://github.com/hashicorp/packer-plugin-yandex) + [GH-12436](https://github.com/hashicorp/packer/pull/12436) + Users relying on these external plugin components should refer to the `packer plugins` sub-command and, if using HCL2, a `required_plugins` block to define a list of plugins to use for building a template. @@ -51,7 +53,7 @@ if using HCL2, a `required_plugins` block to define a list of plugins to use for * core/hcp: Now, fingerprints used by HCP Packer are randomly generated ULIDs instead of a Git SHA, and a new one is always generated, unless one is - already specified in the environment. + specified in the environment. [GH-12172](https://github.com/hashicorp/packer/pull/12172) ### BUG FIXES: @@ -62,6 +64,9 @@ if using HCL2, a `required_plugins` block to define a list of plugins to use for This change raised the size of the built binaries by as much as 45%. In this release, we fixed the LDFLAGS during compilation, yielding leaner binaries. +* Bumped gopsutil to v3. This fixes a macOS intermittent crash reported by the community + [GH-12430](https://github.com/hashicorp/packer/issues/12430) + ## 1.8.7 (May 4, 2023) ### NOTES: From ac29a1366b16096abd738baf26937f5cd489ce46 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 31 May 2023 11:50:56 -0400 Subject: [PATCH 107/381] version: prepare for 1.10.0 releases --- version/VERSION | 2 +- version/version.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/version/VERSION b/version/VERSION index f8e233b2733..81c871de46b 100644 --- a/version/VERSION +++ b/version/VERSION @@ -1 +1 @@ -1.9.0 +1.10.0 diff --git a/version/version.go b/version/version.go index e389cebd2e7..c474c80d650 100644 --- a/version/version.go +++ b/version/version.go @@ -22,7 +22,7 @@ var ( // A pre-release marker for the version can also be specified (e.g -dev). If this is omitted // The main version number that is being run at the moment. - Version = "1.9.0" + Version = "1.10.0" // A pre-release marker for the version. If this is "" (empty string) // then it means that it is a final release. Otherwise, this is a pre-release From 3f4e49e8477f14668046bf2c95db8b7051fcd2f3 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 31 May 2023 16:50:03 -0400 Subject: [PATCH 108/381] CHANGELOG: add advisory on multiproject support On HCP, multiproject support was GA'd recently, but Packer does not support the feature yet. To avoid clients being surprised if they encounter an error with this feature enabled, we add an advisory related to this feature not being supported for now, but planned for later. --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b03563e5c40..80cfffdc52c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -67,6 +67,15 @@ if using HCL2, a `required_plugins` block to define a list of plugins to use for * Bumped gopsutil to v3. This fixes a macOS intermittent crash reported by the community [GH-12430](https://github.com/hashicorp/packer/issues/12430) +### HCP Packer -- Multi project support advisory + +If using HCP Packer to store metadata on your builds, please be aware that Packer +does not support this feature yet, and as such, having multiple projects in your +organization will make it impossible to use HCP Packer in this release. + +We are actively working on supporting this feature, which will be available in a +subsequent release. + ## 1.8.7 (May 4, 2023) ### NOTES: From 925cb5e5411d670af9f9e729b8a61daeb4f8b62d Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Thu, 1 Jun 2023 11:55:05 -0400 Subject: [PATCH 109/381] hcp: support HCP_PROJECT_ID environment variable With HCP supporting multi-projects now, Packer needs to take it into account when picking a project from an organisation. This commit adds two cases: 1. multiple projects are defined, none is supplied through HCP_PROJECT_ID: in this case we will default to the oldest project defined for the organisation. 2. we supply HCP_PROJECT_ID: in this case, we pick the project with the corresponding ID, and use it for publishing metadata. --- internal/hcp/api/client.go | 55 +++++++++- internal/hcp/api/client_test.go | 163 +++++++++++++++++++++++++++++ internal/hcp/env/env.go | 4 + internal/hcp/env/variables.go | 1 + website/content/docs/hcp/index.mdx | 2 + 5 files changed, 222 insertions(+), 3 deletions(-) create mode 100644 internal/hcp/api/client_test.go diff --git a/internal/hcp/api/client.go b/internal/hcp/api/client.go index a379af61b6f..21a07156cc2 100644 --- a/internal/hcp/api/client.go +++ b/internal/hcp/api/client.go @@ -6,10 +6,14 @@ package api import ( "fmt" + "log" + "os" + "time" packerSvc "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/client/packer_service" organizationSvc "github.com/hashicorp/hcp-sdk-go/clients/cloud-resource-manager/preview/2019-12-10/client/organization_service" projectSvc "github.com/hashicorp/hcp-sdk-go/clients/cloud-resource-manager/preview/2019-12-10/client/project_service" + "github.com/hashicorp/hcp-sdk-go/clients/cloud-resource-manager/preview/2019-12-10/models" rmmodels "github.com/hashicorp/hcp-sdk-go/clients/cloud-resource-manager/preview/2019-12-10/models" "github.com/hashicorp/hcp-sdk-go/httpclient" "github.com/hashicorp/packer/internal/hcp/env" @@ -97,9 +101,54 @@ func (c *Client) loadProjectID() error { if err != nil { return fmt.Errorf("unable to fetch project id: %v", err) } - if len(listProjResp.Payload.Projects) > 1 { - return fmt.Errorf("this version of Packer does not support multiple projects") + + if env.HasProjectID() { + proj, err := findProjectByID(os.Getenv(env.HCPProjectID), listProjResp.Payload.Projects) + if err != nil { + return err + } + + c.ProjectID = proj.ID + } else { + if len(listProjResp.Payload.Projects) > 1 { + log.Printf("[WARNING] Multiple HCP projects found, will pick the oldest one by default\n" + + "To specify which project to use, set the HCP_PROJECT_ID environment variable to the one you want to use.") + } + + proj, err := findOldestProject(listProjResp.Payload.Projects) + if err != nil { + return err + } + + c.ProjectID = proj.ID } - c.ProjectID = listProjResp.Payload.Projects[0].ID + return nil } + +func findOldestProject(projs []*models.HashicorpCloudResourcemanagerProject) (*models.HashicorpCloudResourcemanagerProject, error) { + if len(projs) == 0 { + return nil, fmt.Errorf("no project found") + } + + proj := projs[0] + for i := 1; i < len(projs); i++ { + nxtProj := projs[i] + + if time.Time(nxtProj.CreatedAt).Before(time.Time(proj.CreatedAt)) { + proj = nxtProj + } + } + + return proj, nil +} + +func findProjectByID(projID string, projs []*models.HashicorpCloudResourcemanagerProject) (*models.HashicorpCloudResourcemanagerProject, error) { + for _, proj := range projs { + if proj.ID == projID { + return proj, nil + } + } + + return nil, fmt.Errorf("No project %q found", projID) +} diff --git a/internal/hcp/api/client_test.go b/internal/hcp/api/client_test.go new file mode 100644 index 00000000000..47ff2b5fd98 --- /dev/null +++ b/internal/hcp/api/client_test.go @@ -0,0 +1,163 @@ +package api + +import ( + "testing" + "time" + + "github.com/go-openapi/strfmt" + "github.com/hashicorp/hcp-sdk-go/clients/cloud-resource-manager/preview/2019-12-10/models" +) + +func TestFindProjectID(t *testing.T) { + testcases := []struct { + Name string + ProjectID string + ProjectList []*models.HashicorpCloudResourcemanagerProject + ExpectProjectID string + ExpectErr bool + }{ + { + "Only one project, project exists, success", + "test-project-exists", + []*models.HashicorpCloudResourcemanagerProject{ + { + ID: "test-project-exists", + }, + }, + "test-project-exists", + false, + }, + { + "Multiple projects, project exists, success", + "test-project-exists", + []*models.HashicorpCloudResourcemanagerProject{ + { + ID: "other-project-exists", + }, + { + ID: "test-project-exists", + }, + }, + "test-project-exists", + false, + }, + { + "One project, no id match, fail", + "test-project-exists", + []*models.HashicorpCloudResourcemanagerProject{ + { + ID: "other-project-exists", + }, + }, + "", + true, + }, + { + "Multiple projects, no id match, fail", + "test-project-exists", + []*models.HashicorpCloudResourcemanagerProject{ + { + ID: "other-project-exists", + }, + { + ID: "yet-another-project-exists", + }, + }, + "", + true, + }, + { + "No projects, no id match, fail", + "test-project-exists", + []*models.HashicorpCloudResourcemanagerProject{}, + "", + true, + }, + } + + for _, tt := range testcases { + t.Run(tt.Name, func(t *testing.T) { + proj, err := findProjectByID(tt.ProjectID, tt.ProjectList) + if (err != nil) != tt.ExpectErr { + t.Errorf("test findProjectByID, expected %t, got %t", + tt.ExpectErr, + err != nil) + } + + if proj != nil && proj.ID != tt.ExpectProjectID { + t.Errorf("expected to select project %q, got %q", tt.ExpectProjectID, proj.ID) + } + }) + } +} + +func TestFindOldestProject(t *testing.T) { + testcases := []struct { + Name string + ProjectList []*models.HashicorpCloudResourcemanagerProject + ExpectProjectID string + ExpectErr bool + }{ + { + "Only one project, project exists, success", + []*models.HashicorpCloudResourcemanagerProject{ + { + ID: "test-project-exists", + }, + }, + "test-project-exists", + false, + }, + { + "Multiple projects, pick the oldest", + []*models.HashicorpCloudResourcemanagerProject{ + { + ID: "test-project-exists", + CreatedAt: strfmt.DateTime(time.Date(2023, 1, 1, 1, 0, 0, 0, time.UTC)), + }, + { + ID: "test-oldest-project", + CreatedAt: strfmt.DateTime(time.Date(2022, 1, 1, 1, 0, 0, 0, time.UTC)), + }, + }, + "test-oldest-project", + false, + }, + { + "Multiple projects, different order, pick the oldest", + []*models.HashicorpCloudResourcemanagerProject{ + { + ID: "test-oldest-project", + CreatedAt: strfmt.DateTime(time.Date(2022, 1, 1, 1, 0, 0, 0, time.UTC)), + }, + { + ID: "test-project-exists", + CreatedAt: strfmt.DateTime(time.Date(2023, 1, 1, 1, 0, 0, 0, time.UTC)), + }, + }, + "test-oldest-project", + false, + }, + { + "No projects, should error", + []*models.HashicorpCloudResourcemanagerProject{}, + "", + true, + }, + } + + for _, tt := range testcases { + t.Run(tt.Name, func(t *testing.T) { + proj, err := findOldestProject(tt.ProjectList) + if (err != nil) != tt.ExpectErr { + t.Errorf("test findProjectByID, expected %t, got %t", + tt.ExpectErr, + err != nil) + } + + if proj != nil && proj.ID != tt.ExpectProjectID { + t.Errorf("expected to select project %q, got %q", tt.ExpectProjectID, proj.ID) + } + }) + } +} diff --git a/internal/hcp/env/env.go b/internal/hcp/env/env.go index c07d9cac478..0cf459015e8 100644 --- a/internal/hcp/env/env.go +++ b/internal/hcp/env/env.go @@ -9,6 +9,10 @@ import ( "strings" ) +func HasProjectID() bool { + return hasEnvVar(HCPProjectID) +} + func HasClientID() bool { return hasEnvVar(HCPClientID) } diff --git a/internal/hcp/env/variables.go b/internal/hcp/env/variables.go index 0fc654494b6..71258c13be3 100644 --- a/internal/hcp/env/variables.go +++ b/internal/hcp/env/variables.go @@ -6,6 +6,7 @@ package env const ( HCPClientID = "HCP_CLIENT_ID" HCPClientSecret = "HCP_CLIENT_SECRET" + HCPProjectID = "HCP_PROJECT_ID" HCPPackerRegistry = "HCP_PACKER_REGISTRY" HCPPackerBucket = "HCP_PACKER_BUCKET_NAME" HCPPackerBuildFingerprint = "HCP_PACKER_BUILD_FINGERPRINT" diff --git a/website/content/docs/hcp/index.mdx b/website/content/docs/hcp/index.mdx index de58397e8bf..35f7c2fd425 100644 --- a/website/content/docs/hcp/index.mdx +++ b/website/content/docs/hcp/index.mdx @@ -4,6 +4,8 @@ description: | page_title: HCP Packer --- +-> **Note:** On May 16th 2023, HCP introduced multi-project support to the platform. In order to use multiple projects in your organization, you will need to update Packer to version 1.9.1 or above. Starting with 1.9.1, you may specify a project ID to push builds to with the `HCP_PROJECT_ID` environment variable. If no project ID is specified, Packer will pick the project with the oldest creation date. Older versions of Packer are incompatible with multi-project support on HCP, and builds will fail for HCP organizations with multiple projects on versions before 1.9.1. + # HCP Packer The HCP Packer registry bridges the gap between image factories and image deployments, allowing development and security teams to work together to create, manage, and consume images in a centralized way. From 571adf9f1bd1bf251c9f0e704104734ffa6df04c Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Thu, 1 Jun 2023 14:48:07 -0400 Subject: [PATCH 110/381] CHANGELOG: add changelog for v1.9.1 --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 80cfffdc52c..ab8a2b2abef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +## 1.9.0 (June 1, 2023) + +### BUG FIXES: + +* On May 16th 2023, HCP introduced multi-project support to the platform. + In order to use multiple projects in your organization, you will need to update Packer + to version 1.9.1 or above. Starting with 1.9.1, you may specify a project ID to push + builds to with the `HCP_PROJECT_ID` environment variable. If no project ID is specified, + Packer will pick the project with the oldest creation date. Older versions of Packer are + incompatible with multi-project support on HCP, and builds will fail for HCP + organizations with multiple projects on versions before 1.9.1. + [GH-12453](https://github.com/hashicorp/packer/pull/12453) + ## 1.9.0 (May 31, 2023) ### NOTES: From 2d5d78a306a2ddbc78d27b525a38f33aa632b33c Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Thu, 1 Jun 2023 15:36:20 -0400 Subject: [PATCH 111/381] CHANGELOG: fix latest release version --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab8a2b2abef..6107fd2ca1c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## 1.9.0 (June 1, 2023) +## 1.9.1 (June 1, 2023) ### BUG FIXES: From 5f038ce8ace0d7c06958cd00644532637bb1b316 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Thu, 1 Jun 2023 16:53:37 -0400 Subject: [PATCH 112/381] CHANGELOG: prepare for upcoming v1.9.2 --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6107fd2ca1c..d04040aa1a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +## 1.9.2 (Upcoming) + ## 1.9.1 (June 1, 2023) ### BUG FIXES: From d563a3c6234eef7edca4a28a9fe55458bd7834f6 Mon Sep 17 00:00:00 2001 From: "hashicorp-copywrite[bot]" <110428419+hashicorp-copywrite[bot]@users.noreply.github.com> Date: Mon, 5 Jun 2023 16:05:31 +0000 Subject: [PATCH 113/381] [COMPLIANCE] Add Copyright and License Headers --- internal/hcp/api/client_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/hcp/api/client_test.go b/internal/hcp/api/client_test.go index 47ff2b5fd98..b1cdbff61c2 100644 --- a/internal/hcp/api/client_test.go +++ b/internal/hcp/api/client_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package api import ( From aeffaa790fc054833532d17514dd251403a98f77 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet <105649352+lbajolet-hashicorp@users.noreply.github.com> Date: Thu, 15 Jun 2023 15:09:00 -0400 Subject: [PATCH 114/381] docs: add a paragraph on fingerprint generation (#12464) * docs: add a paragraph on fingerprint generation Since version 1.9.0+ changed the way Packer generates fingerprints for HCP Packer, we add a small paragraph to explain how it used to be generated before, and how it changed in this version. * Apply suggestions from code review --------- Co-authored-by: Wilken Rivera --- website/content/docs/hcp/index.mdx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/website/content/docs/hcp/index.mdx b/website/content/docs/hcp/index.mdx index 35f7c2fd425..b7af158ee26 100644 --- a/website/content/docs/hcp/index.mdx +++ b/website/content/docs/hcp/index.mdx @@ -47,6 +47,9 @@ Refer to [`hcp_packer_registry`](/packer/docs/templates/hcl_templates/blocks/bui Packer uses a unique fingerprint for tracking the completion of builds associated to an iteration. By default a fingerprint is automatically generated by Packer during each invocation of `packer build`, unless a fingerprint is manually provided via the `HCP_PACKER_BUILD_FINGERPRINT` environment variable. +In versions before 1.9.0, this fingerprint was computed from the Git SHA of the current HEAD in which your template is stored. If you were running builds using a non Git managed template, you had to set the `HCP_PACKER_BUILD_FINGERPRINT` environment variable prior to invoking `packer build`. +Starting with Packer 1.9.0, fingerprint generation does not rely on Git at all, and instead Packer now generates a Unique Lexicographically sortable Identifier (ULID) as the fingerprint for every `packer build` invocation. + #### Fingerprints and Incomplete Iterations When you build a template with Packer, there's always a chance that it does not succeed because of a network issue, a provisioning failure, or some upstream error. When that happens, Packer will output the generated fingerprint associated with the incomplete iteration so that you can resume building that iteration using the `HCP_PACKER_BUILD_FINGERPRINT` environment variable; an iteration can be resumed until it is marked as complete. This environment variable is necessary for resuming an incomplete iteration, otherwise Packer will create a new iteration for the build. From ffa1e54af5e63c9de550948a43a2d951ad5d324b Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 16 Jun 2023 15:46:53 -0400 Subject: [PATCH 115/381] Delete check-legacy-links-format.yml (#12471) Remove the check-legacy-links-format.yml workflow. These checks are now included as part of our content conformance checks that run on PRs with documentation content changes. --- .github/workflows/check-legacy-links-format.yml | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 .github/workflows/check-legacy-links-format.yml diff --git a/.github/workflows/check-legacy-links-format.yml b/.github/workflows/check-legacy-links-format.yml deleted file mode 100644 index 08c128a9f49..00000000000 --- a/.github/workflows/check-legacy-links-format.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: Legacy Link Format Checker - -on: - push: - paths: - - "website/content/**/*.mdx" - - "website/data/*-nav-data.json" - -jobs: - check-links: - uses: hashicorp/dev-portal/.github/workflows/docs-content-check-legacy-links-format.yml@475289345d312552b745224b46895f51cc5fc490 - with: - repo-owner: "hashicorp" - repo-name: "packer" - commit-sha: ${{ github.sha }} - mdx-directory: "website/content" - nav-data-directory: "website/data" From f1c1e496857867075469b2abb7f728484208ecb0 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 11 May 2023 16:48:30 -0400 Subject: [PATCH 116/381] Fix executable directory path --- packer/plugin_folders.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packer/plugin_folders.go b/packer/plugin_folders.go index 07e74d19121..99ff3b13a40 100644 --- a/packer/plugin_folders.go +++ b/packer/plugin_folders.go @@ -19,7 +19,7 @@ func PluginFolders(dirs ...string) []string { if path, err := os.Executable(); err != nil { log.Printf("[ERR] Error finding executable: %v", err) } else { - res = append(res, path) + res = append(res, filepath.Dir(path)) } res = append(res, dirs...) From f7a0df4bd189b556bf5321178c17ef47e42471a1 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 11 May 2023 16:50:28 -0400 Subject: [PATCH 117/381] Reduce the number of nest plugin scans Packer will try to discover installed plugins in all of the directories defined by packer.KnowPluginFolders. In a previous release logic was added to scan nested directories in order to load plugins installed by `packer plugins install`. This change resulted in a nested directory scan for each folder within the KnownPluginFolders slice. This change reduces the nested directory scan to only the directories where plugins would have been installed using `packer plugins install` --- packer/plugin.go | 224 +++++++++++++++++++++------------ packer/plugin_discover_test.go | 1 + 2 files changed, 147 insertions(+), 78 deletions(-) diff --git a/packer/plugin.go b/packer/plugin.go index 1b64482a89b..4bd5765f159 100644 --- a/packer/plugin.go +++ b/packer/plugin.go @@ -6,6 +6,7 @@ package packer import ( "crypto/sha256" "encoding/json" + "errors" "fmt" "log" "os" @@ -16,7 +17,6 @@ import ( "strings" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - "github.com/hashicorp/packer-plugin-sdk/pathing" pluginsdk "github.com/hashicorp/packer-plugin-sdk/plugin" plugingetter "github.com/hashicorp/packer/packer/plugin-getter" ) @@ -80,50 +80,42 @@ func (c *PluginConfig) Discover() error { return nil } - // TODO: use KnownPluginFolders here. TODO probably after JSON is deprecated - // so that we can keep the current behavior just the way it is. - - // Next, look in the same directory as the executable. - exePath, err := os.Executable() - if err != nil { - log.Printf("[ERR] Error loading exe directory: %s", err) - } else { - if err := c.discoverExternalComponents(filepath.Dir(exePath)); err != nil { - return err - } + if len(c.KnownPluginFolders) == 0 { + return errors.New("no known plugin folders defined") } - // Next, look in the default plugins directory inside the configdir/.packer.d/plugins. - dir, err := pathing.ConfigDir() - if err != nil { - log.Printf("[ERR] Error loading config directory: %s", err) - } else { - if err := c.discoverExternalComponents(filepath.Join(dir, "plugins")); err != nil { + // TODO after JSON is deprecated remove support for legacy component plugins. + for _, knownFolder := range c.KnownPluginFolders { + if err := c.discoverLegacyMonoComponents(knownFolder); err != nil { return err } } - // Next, look in the CWD. - if err := c.discoverExternalComponents("."); err != nil { + // Pick last folder as it's the one with the highest priority + // This is the same logic used when installing plugins via Packer's plugin installation commands. + pluginInstallationPath := c.KnownPluginFolders[len(c.KnownPluginFolders)-1] + if err := c.discoverInstalledComponents(pluginInstallationPath); err != nil { return err } - // Check whether there is a custom Plugin directory defined. This gets - // absolute preference. - if packerPluginPath := os.Getenv("PACKER_PLUGIN_PATH"); packerPluginPath != "" { - sep := ":" - if runtime.GOOS == "windows" { - // on windows, PATH is semicolon-separated - sep = ";" + // Manually installed plugins take precedence over all. Duplicate plugins installed + // prior to the packer plugins install command should be removed by user to avoid overrides. + for _, knownFolder := range c.KnownPluginFolders { + pluginPaths, err := c.discoverSingle(filepath.Join(knownFolder, "packer-plugin-*")) + if err != nil { + return err } - plugPaths := strings.Split(packerPluginPath, sep) - for _, plugPath := range plugPaths { - if err := c.discoverExternalComponents(plugPath); err != nil { + for pluginName, pluginPath := range pluginPaths { + // Test pluginPath points to an executable + if _, err := exec.LookPath(pluginPath); err != nil { + log.Printf("[WARN] %q is not executable; skipping", pluginPath) + continue + } + if err := c.DiscoverMultiPlugin(pluginName, pluginPath); err != nil { return err } } } - return nil } @@ -206,64 +198,86 @@ func (c *PluginConfig) discoverExternalComponents(path string) error { log.Printf("using external datasource %v", externallyUsed) } - //Check for installed plugins using the `packer plugins install` command - binInstallOpts := plugingetter.BinaryInstallationOptions{ - OS: runtime.GOOS, - ARCH: runtime.GOARCH, - APIVersionMajor: pluginsdk.APIVersionMajor, - APIVersionMinor: pluginsdk.APIVersionMinor, - Checksummers: []plugingetter.Checksummer{ - {Type: "sha256", Hash: sha256.New()}, - }, - } + return nil +} - if runtime.GOOS == "windows" { - binInstallOpts.Ext = ".exe" +func (c *PluginConfig) discoverLegacyMonoComponents(path string) error { + var err error + log.Printf("[TRACE] discovering plugins in %s", path) + + if !filepath.IsAbs(path) { + path, err = filepath.Abs(path) + if err != nil { + return err + } } + var externallyUsed []string - pluginPaths, err = c.discoverSingle(filepath.Join(path, "*", "*", "*", fmt.Sprintf("packer-plugin-*%s", binInstallOpts.FilenameSuffix()))) + pluginPaths, err := c.discoverSingle(filepath.Join(path, "packer-builder-*")) if err != nil { return err } - for pluginName, pluginPath := range pluginPaths { - var checksumOk bool - for _, checksummer := range binInstallOpts.Checksummers { - cs, err := checksummer.GetCacheChecksumOfFile(pluginPath) - if err != nil { - log.Printf("[TRACE] GetChecksumOfFile(%q) failed: %v", pluginPath, err) - continue - } - - if err := checksummer.ChecksumFile(cs, pluginPath); err != nil { - log.Printf("[TRACE] ChecksumFile(%q) failed: %v", pluginPath, err) - continue - } - checksumOk = true - break - } - - if !checksumOk { - log.Printf("[TRACE] No checksum found for %q ignoring possibly unsafe binary", path) - continue - } + newPath := pluginPath // this needs to be stored in a new variable for the func below + c.Builders.Set(pluginName, func() (packersdk.Builder, error) { + return c.Client(newPath).Builder() + }) + externallyUsed = append(externallyUsed, pluginName) + } + if len(externallyUsed) > 0 { + sort.Strings(externallyUsed) + log.Printf("[INFO] using external builders: %v", externallyUsed) + externallyUsed = nil + } - if err := c.DiscoverMultiPlugin(pluginName, pluginPath); err != nil { - return err - } + pluginPaths, err = c.discoverSingle(filepath.Join(path, "packer-post-processor-*")) + if err != nil { + return err + } + for pluginName, pluginPath := range pluginPaths { + newPath := pluginPath // this needs to be stored in a new variable for the func below + c.PostProcessors.Set(pluginName, func() (packersdk.PostProcessor, error) { + return c.Client(newPath).PostProcessor() + }) + externallyUsed = append(externallyUsed, pluginName) + } + if len(externallyUsed) > 0 { + sort.Strings(externallyUsed) + log.Printf("using external post-processors %v", externallyUsed) + externallyUsed = nil } - // Manually installed plugins take precedence over all. Duplicate plugins installed - // prior to the packer plugins install command should be removed by user to avoid overrides. - pluginPaths, err = c.discoverSingle(filepath.Join(path, "packer-plugin-*")) + pluginPaths, err = c.discoverSingle(filepath.Join(path, "packer-provisioner-*")) if err != nil { return err } + for pluginName, pluginPath := range pluginPaths { + newPath := pluginPath // this needs to be stored in a new variable for the func below + c.Provisioners.Set(pluginName, func() (packersdk.Provisioner, error) { + return c.Client(newPath).Provisioner() + }) + externallyUsed = append(externallyUsed, pluginName) + } + if len(externallyUsed) > 0 { + sort.Strings(externallyUsed) + log.Printf("using external provisioners %v", externallyUsed) + externallyUsed = nil + } + pluginPaths, err = c.discoverSingle(filepath.Join(path, "packer-datasource-*")) + if err != nil { + return err + } for pluginName, pluginPath := range pluginPaths { - if err := c.DiscoverMultiPlugin(pluginName, pluginPath); err != nil { - return err - } + newPath := pluginPath // this needs to be stored in a new variable for the func below + c.DataSources.Set(pluginName, func() (packersdk.Datasource, error) { + return c.Client(newPath).Datasource() + }) + externallyUsed = append(externallyUsed, pluginName) + } + if len(externallyUsed) > 0 { + sort.Strings(externallyUsed) + log.Printf("using external datasource %v", externallyUsed) } return nil @@ -291,7 +305,7 @@ func (c *PluginConfig) discoverSingle(glob string) (map[string]string, error) { // We could do a full PATHEXT parse, but this is probably good enough. if runtime.GOOS == "windows" && strings.ToLower(filepath.Ext(file)) != ".exe" { log.Printf( - "[DEBUG] Ignoring plugin match %s, no exe extension", + "[TRACE] Ignoring plugin match %s, no exe extension", match) continue } @@ -307,7 +321,7 @@ func (c *PluginConfig) discoverSingle(glob string) (map[string]string, error) { // After the split the plugin name is "baz". pluginName = strings.SplitN(pluginName, "_", 2)[0] - log.Printf("[DEBUG] Discovered plugin: %s = %s", pluginName, match) + log.Printf("[INFO] Discovered potential plugin: %s = %s", pluginName, match) res[pluginName] = match } @@ -426,9 +440,9 @@ func (c *PluginConfig) Client(path string, args ...string) *PluginClient { } if strings.Contains(originalPath, PACKERSPACE) { - log.Printf("[TRACE] Starting internal plugin %s", args[len(args)-1]) + log.Printf("[INFO] Starting internal plugin %s", args[len(args)-1]) } else { - log.Printf("[TRACE] Starting external plugin %s %s", path, strings.Join(args, " ")) + log.Printf("[INFO] Starting external plugin %s %s", path, strings.Join(args, " ")) } var config PluginClientConfig config.Cmd = exec.Command(path, args...) @@ -437,3 +451,57 @@ func (c *PluginConfig) Client(path string, args ...string) *PluginClient { config.MaxPort = c.PluginMaxPort return NewClient(&config) } + +// discoverInstalledComponents scans the provided path for plugins installed by running packer plugins install or packer init. +// Valid plugins contain a matching system binary and valid checksum file. +func (c *PluginConfig) discoverInstalledComponents(path string) error { + //Check for installed plugins using the `packer plugins install` command + binInstallOpts := plugingetter.BinaryInstallationOptions{ + OS: runtime.GOOS, + ARCH: runtime.GOARCH, + APIVersionMajor: pluginsdk.APIVersionMajor, + APIVersionMinor: pluginsdk.APIVersionMinor, + Checksummers: []plugingetter.Checksummer{ + {Type: "sha256", Hash: sha256.New()}, + }, + } + + if runtime.GOOS == "windows" { + binInstallOpts.Ext = ".exe" + } + + pluginPath := filepath.Join(path, "*", "*", "*", fmt.Sprintf("packer-plugin-*%s", binInstallOpts.FilenameSuffix())) + pluginPaths, err := c.discoverSingle(pluginPath) + if err != nil { + return err + } + + for pluginName, pluginPath := range pluginPaths { + var checksumOk bool + for _, checksummer := range binInstallOpts.Checksummers { + cs, err := checksummer.GetCacheChecksumOfFile(pluginPath) + if err != nil { + log.Printf("[TRACE] GetChecksumOfFile(%q) failed: %v", pluginPath, err) + continue + } + + if err := checksummer.ChecksumFile(cs, pluginPath); err != nil { + log.Printf("[TRACE] ChecksumFile(%q) failed: %v", pluginPath, err) + continue + } + checksumOk = true + break + } + + if !checksumOk { + log.Printf("[WARN] No checksum found for %q ignoring possibly unsafe binary", path) + continue + } + + if err := c.DiscoverMultiPlugin(pluginName, pluginPath); err != nil { + return err + } + } + + return nil +} diff --git a/packer/plugin_discover_test.go b/packer/plugin_discover_test.go index 91e8ba6b318..32dccf9aae6 100644 --- a/packer/plugin_discover_test.go +++ b/packer/plugin_discover_test.go @@ -24,6 +24,7 @@ func newPluginConfig() PluginConfig { var conf PluginConfig conf.PluginMinPort = 10000 conf.PluginMaxPort = 25000 + conf.KnownPluginFolders = []string{os.TempDir()} return conf } From 4347e8cee80729e85fadca9b2dcc6fd564115ce9 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 23 May 2023 21:05:35 -0400 Subject: [PATCH 118/381] Default to PuluginFolders is KnownPluginFolders is unset * PACKER_PLUGIN_PATH takes precedence over all --- packer/plugin.go | 3 +-- packer/plugin_discover_test.go | 1 - packer/plugin_folders.go | 9 +++++---- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/packer/plugin.go b/packer/plugin.go index 4bd5765f159..5e4360f4fd6 100644 --- a/packer/plugin.go +++ b/packer/plugin.go @@ -6,7 +6,6 @@ package packer import ( "crypto/sha256" "encoding/json" - "errors" "fmt" "log" "os" @@ -81,7 +80,7 @@ func (c *PluginConfig) Discover() error { } if len(c.KnownPluginFolders) == 0 { - return errors.New("no known plugin folders defined") + c.KnownPluginFolders = PluginFolders() } // TODO after JSON is deprecated remove support for legacy component plugins. diff --git a/packer/plugin_discover_test.go b/packer/plugin_discover_test.go index 32dccf9aae6..91e8ba6b318 100644 --- a/packer/plugin_discover_test.go +++ b/packer/plugin_discover_test.go @@ -24,7 +24,6 @@ func newPluginConfig() PluginConfig { var conf PluginConfig conf.PluginMinPort = 10000 conf.PluginMaxPort = 25000 - conf.KnownPluginFolders = []string{os.TempDir()} return conf } diff --git a/packer/plugin_folders.go b/packer/plugin_folders.go index 99ff3b13a40..52d63aac4cc 100644 --- a/packer/plugin_folders.go +++ b/packer/plugin_folders.go @@ -16,6 +16,11 @@ import ( func PluginFolders(dirs ...string) []string { res := []string{} + if packerPluginPath := os.Getenv("PACKER_PLUGIN_PATH"); packerPluginPath != "" { + res = append(res, strings.Split(packerPluginPath, string(os.PathListSeparator))...) + return res + } + if path, err := os.Executable(); err != nil { log.Printf("[ERR] Error finding executable: %v", err) } else { @@ -30,9 +35,5 @@ func PluginFolders(dirs ...string) []string { res = append(res, filepath.Join(cd, "plugins")) } - if packerPluginPath := os.Getenv("PACKER_PLUGIN_PATH"); packerPluginPath != "" { - res = append(res, strings.Split(packerPluginPath, string(os.PathListSeparator))...) - } - return res } From 18cc6edbd5e4dc9384976ecf5c7b307add010986 Mon Sep 17 00:00:00 2001 From: Dylan Staley <88163+dstaley@users.noreply.github.com> Date: Fri, 23 Jun 2023 15:05:27 -0700 Subject: [PATCH 119/381] docs: move community tools to docs folder --- website/content/{ => docs}/community-tools.mdx | 0 website/data/docs-nav-data.json | 4 ++++ 2 files changed, 4 insertions(+) rename website/content/{ => docs}/community-tools.mdx (100%) diff --git a/website/content/community-tools.mdx b/website/content/docs/community-tools.mdx similarity index 100% rename from website/content/community-tools.mdx rename to website/content/docs/community-tools.mdx diff --git a/website/data/docs-nav-data.json b/website/data/docs-nav-data.json index e1de91658f1..7c7e110d518 100644 --- a/website/data/docs-nav-data.json +++ b/website/data/docs-nav-data.json @@ -887,6 +887,10 @@ "title": "Integration Program", "path": "partnerships" }, + { + "title": "Community Tools", + "path": "community-tools" + }, { "divider": true }, From 8982d4f168dd3042a53883408b4ff154d1f2a46a Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 3 Jul 2023 14:13:08 -0400 Subject: [PATCH 120/381] Migrate external Parallels plugin to Parallels/packer-plugin-parallels (#12476) * Update external plugin documentation source The Parallels plugin for Packer is now maintained by the Parallels team, under their respective GitHub org. This changes updates the source address for the external plugin that should be used for pulling new plugin documentation. * Removed packer-plugin-parallels for list of vendored plugins --- command/vendored_plugins.go | 4 ---- go.mod | 3 +-- go.sum | 2 -- website/data/plugins-manifest.json | 5 +++-- 4 files changed, 4 insertions(+), 10 deletions(-) diff --git a/command/vendored_plugins.go b/command/vendored_plugins.go index 79a8af171c6..0718b91a7c5 100644 --- a/command/vendored_plugins.go +++ b/command/vendored_plugins.go @@ -32,8 +32,6 @@ import ( googlecomputebuilder "github.com/hashicorp/packer-plugin-googlecompute/builder/googlecompute" googlecomputeexportpostprocessor "github.com/hashicorp/packer-plugin-googlecompute/post-processor/googlecompute-export" googlecomputeimportpostprocessor "github.com/hashicorp/packer-plugin-googlecompute/post-processor/googlecompute-import" - parallelsisobuilder "github.com/hashicorp/packer-plugin-parallels/builder/parallels/iso" - parallelspvmbuilder "github.com/hashicorp/packer-plugin-parallels/builder/parallels/pvm" qemubuilder "github.com/hashicorp/packer-plugin-qemu/builder/qemu" vagrantbuilder "github.com/hashicorp/packer-plugin-vagrant/builder/vagrant" vagrantpostprocessor "github.com/hashicorp/packer-plugin-vagrant/post-processor/vagrant" @@ -69,8 +67,6 @@ var VendoredBuilders = map[string]packersdk.Builder{ "azure-dtl": new(azuredtlbuilder.Builder), "docker": new(dockerbuilder.Builder), "googlecompute": new(googlecomputebuilder.Builder), - "parallels-iso": new(parallelsisobuilder.Builder), - "parallels-pvm": new(parallelspvmbuilder.Builder), "qemu": new(qemubuilder.Builder), "vagrant": new(vagrantbuilder.Builder), "vsphere-clone": new(vsphereclonebuilder.Builder), diff --git a/go.mod b/go.mod index bc42114765a..fa48d7d58da 100644 --- a/go.mod +++ b/go.mod @@ -59,11 +59,11 @@ require ( ) require ( + github.com/go-openapi/strfmt v0.21.3 github.com/hashicorp/packer-plugin-ansible v1.0.3 github.com/hashicorp/packer-plugin-azure v1.4.0 github.com/hashicorp/packer-plugin-docker v1.0.8 github.com/hashicorp/packer-plugin-googlecompute v1.1.0 - github.com/hashicorp/packer-plugin-parallels v1.0.3 github.com/hashicorp/packer-plugin-qemu v1.0.9 github.com/hashicorp/packer-plugin-vagrant v1.0.3 github.com/hashicorp/packer-plugin-virtualbox v1.0.4 @@ -127,7 +127,6 @@ require ( github.com/go-openapi/jsonreference v0.20.0 // indirect github.com/go-openapi/loads v0.21.2 // indirect github.com/go-openapi/spec v0.20.8 // indirect - github.com/go-openapi/strfmt v0.21.3 // indirect github.com/go-openapi/swag v0.22.3 // indirect github.com/go-openapi/validate v0.22.1 // indirect github.com/gofrs/uuid v4.0.0+incompatible // indirect diff --git a/go.sum b/go.sum index bd6a68ceadb..96c6e63f953 100644 --- a/go.sum +++ b/go.sum @@ -457,8 +457,6 @@ github.com/hashicorp/packer-plugin-docker v1.0.8 h1:UWPG/pl+1RFsaNQVhEuowCeOZuES github.com/hashicorp/packer-plugin-docker v1.0.8/go.mod h1:4U3gHULbUw3okSqqZgQZD5ptyJKs0S7LfOOt2U3V4Jk= github.com/hashicorp/packer-plugin-googlecompute v1.1.0 h1:/cSZCJuRV6osaSa1uOy8cpN+c/uiCbrSsZ8vyNC0slk= github.com/hashicorp/packer-plugin-googlecompute v1.1.0/go.mod h1:k7MhKwEDw9ASP3a1y1syKJFZiZ8pO4oH40HvVgGHzUE= -github.com/hashicorp/packer-plugin-parallels v1.0.3 h1:smypphUCEj3arCdlvbNtZvGC1ujsUSRtN1MBvZHt/w8= -github.com/hashicorp/packer-plugin-parallels v1.0.3/go.mod h1:Q842nvosVmP5FnYozk8ZZj93HGIan19jHTxGeteBCb0= github.com/hashicorp/packer-plugin-qemu v1.0.9 h1:1YKBBzBULYUBWtpAZJTbaLjjZPAdQ63okkpTqMBTnzM= github.com/hashicorp/packer-plugin-qemu v1.0.9/go.mod h1:BpWIpVpOoPFV9Ppmzq4DP/S0QNoh1R+7DUCqxHdXc+Y= github.com/hashicorp/packer-plugin-sdk v0.4.0 h1:UyLYe0y02D9wkOQ3FeeZWyFg2+mx2vLuWRGUL5xt50I= diff --git a/website/data/plugins-manifest.json b/website/data/plugins-manifest.json index ee9c1f5daf5..675c8e7271d 100644 --- a/website/data/plugins-manifest.json +++ b/website/data/plugins-manifest.json @@ -235,8 +235,9 @@ { "title": "Parallels", "path": "parallels", - "repo": "hashicorp/packer-plugin-parallels", - "version": "latest" + "repo": "parallels/packer-plugin-parallels", + "version": "latest", + "pluginTier": "verified" }, { "title": "Profitbricks", From 9c85fc274af579aee846b21cdbc0b89f8eaefb0f Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 6 Jul 2023 16:00:36 -0400 Subject: [PATCH 121/381] Update plugin loading documentation (#12485) Packer checks a number of directories for plugins upon initialization, with the introduction of multi-component plugins and underlying changes to the Packer SDK the ordering changed slightly. These changes update the related documentation to reflect the new ordering, and adds a plugin loading ordering section to the docs to help users discover how plugin loading works. Include in this change are updates to the PACKER_CONFIG_DIR environment variables to reflect the XDG base directory specification used as the default Packer configuration directory layout. * Update website/content/docs/configure.mdx --- website/content/docs/configure.mdx | 80 +++++------- .../content/docs/plugins/install-plugins.mdx | 114 +++++++++--------- .../partials/plugins/plugin-location.mdx | 71 +++-------- 3 files changed, 107 insertions(+), 158 deletions(-) diff --git a/website/content/docs/configure.mdx b/website/content/docs/configure.mdx index cce9f1b554b..1ab98692584 100644 --- a/website/content/docs/configure.mdx +++ b/website/content/docs/configure.mdx @@ -13,69 +13,42 @@ so you generally don't have to worry about it until you want to tweak a configuration. If you're just getting started with Packer, don't worry about core configuration for now. -## Packer's home directory - -Plugins and core configuration files can exist in the home directory of Packer. -The home directory of Packer will be the first one of the following env values -to be set : - -| Unix | Windows | -| ---------------------- | --------------------- | -| `${PACKER_CONFIG_DIR}` | `%PACKER_CONFIG_DIR%` | -| `${APPDATA}` | `%APPDATA%` | -| `${HOME}` | `%HOME%` | -| user dir of `${USER}` | user dir of `${USER}` | - --> Note: On this page "Packer's home directory" will be referenced as -`PACKER_HOME_DIR`. - -## Packer's config file - -Packer can optionally read a JSON file for the end user to set core settings. -The config file of Packer will be looked up on the following paths: - -| Unix | Windows | -| -------------------------------- | -------------------------------- | -| `${PACKER_CONFIG}` | `%PACKER_CONFIG%` | -| `PACKER_HOME_DIR/.packerconfig` | `PACKER_HOME_DIR/packer.config/` | -| `${XDG_CONFIG_HOME}/packer` | | -| `PACKER_HOME_DIR/.config/packer` | | - ## Packer's config directory Packer's configuration directory can potentially contain plugins and internal -Packer files. The config dir of Packer will be looked up on the following paths: +Packer files. The Packer config directory will be looked up on the following paths: | Unix | Windows | | --------------------------- | --------------------------- | -| `PACKER_HOME_DIR/.packer.d` | `PACKER_HOME_DIR/packer.d/` | +| `${HOME}/.config/packer/` | `%APPDATA%\packer.d\` | + +-> **Note:** On Unix systems, Packer defaults to using the XDG base directory specification. +When the environment variable `PACKER_CONFIG_DIR` is unset or empty a default equal to `$HOME/.config/packer` should be used. +In all other cases, where there is an existing older style `.packer.d` directory (e.g `$HOME/.packer.d/`) or PACKER_CONFIG_DIR is not empty +the older configuration directory will be used. Examples: -- On a Unix system, if the `$PACKER_CONFIG_DIR` env var is set to +- On a Unix system, if the `$PACKER_CONFIG_DIR` environment variable is set to `/home/packer`, the config directory will be: `/home/packer/.packer.d/` and other values will not be checked. -- On a Unix system, if the `HOME` env var is `/home/azr` or the `USER` env var - is `azr`, then the config directory will default to `/home/azr/.packer.d/`. -- On a Windows system, if the `PACKER_CONFIG_DIR` env var is set to `C:/`,the +- On a Windows system, if the `PACKER_CONFIG_DIR` environment variable is set to `C:/`,the config directory will be: `C:/packer.d/` and other values will not be checked. -## Packer's plugin directory - -@include "plugins/plugin-location.mdx" + +## Packer's config file (deprecated) -The format of the configuration file is basic JSON. +Packer can optionally read a JSON file for the end user to set core settings. +The config file of Packer will be looked up on the following paths: -## Packer's cache directory +| Unix | Windows | +| -------------------------------- | --------------------------------- | +| `${PACKER_CONFIG}` | `%PACKER_CONFIG%` | +| `${HOME}/.packerconfig` | `%APPDATA%\packer.config\` | -Packer uses a cache directory to download large files and for logistics around -large file download. By default, Packer caches things in the current directory, -under: `./packer_cache/`. This can be changed by setting the `PACKER_CACHE_DIR` -env var. It is recommended to share the same Packer cache dir across your -builds if you have multiple builds doing similar things to avoid downloading the -same ISO twice for example. +The format of the configuration file is basic JSON. -## Packer config file configuration Reference +### Packer config file configuration Reference Below is the list of all available configuration parameters for the core configuration file. None of these are required, since all have defaults. @@ -94,13 +67,20 @@ configuration file. None of these are required, since all have defaults. and the [`packer init`](/packer/docs/commands/init) command to install plugins; if you are using both, the `required_plugin` config will take precedence. -### HCP Packer Configuration +## Packer's plugin directory + +@include "plugins/plugin-location.mdx" -You can configure both legacy JSON and HCL2 Packer templates to publish image metadata to an active HCP Packer registry. The HCP Packer registry helps you track information about machine images, clearly designate which images are appropriate for test and production environments, and query the right images to use in both Packer and Terraform configurations. +## Packer's cache directory -For complete configuration details and examples, refer to [Packer Template Configuration](/hcp/docs/packer/store-image-metadata/template-configuration) in the HCP Packer documentation. +Packer uses a cache directory to download large files and for logistics around +large file download. By default, Packer caches things in the current directory, +under: `./packer_cache/`. This can be changed by setting the `PACKER_CACHE_DIR` +env var. It is recommended to share the same Packer cache directory across your +builds if you have multiple builds doing similar things to avoid downloading the +same ISO twice for example. -## Full list of Environment Variables usable for Packer +## Environment Variables usable for Packer Packer uses a variety of environmental variables. A listing and description of each can be found below: diff --git a/website/content/docs/plugins/install-plugins.mdx b/website/content/docs/plugins/install-plugins.mdx index 86ec7c5c15f..3af8ebbbf4c 100644 --- a/website/content/docs/plugins/install-plugins.mdx +++ b/website/content/docs/plugins/install-plugins.mdx @@ -13,6 +13,10 @@ post-processor components that ship with the Packer binary. Packer automatically This page explains how to install custom external plugins. Refer to [External Plugins](/packer/plugins) for a list of available plugins and their documentation. +## Plugin Loading Order + +@include "plugins/plugin-location.mdx" + ## Installation Guides Choose the tab that corresponds to the type of plugin you want to install. If you are not sure, check the plugin's name. @@ -22,10 +26,10 @@ Choose the tab that corresponds to the type of plugin you want to install. If yo -~> **Note**: Only _multi-component plugin binaries_ -- that is plugins named +-> **Note:** Only _multi-component plugin binaries_ -- plugins named packer-plugin-\*, like the `packer-plugin-amazon` -- are expected to work with Packer init. The legacy `builder`, `post-processor` and `provisioner` plugin -types will keep on being detected but Packer cannot install them automatically. +types will continue to be detected but Packer cannot install them automatically. If a plugin you use has not been upgraded to use the multi-component plugin architecture, contact your maintainer to request an upgrade. @@ -64,9 +68,8 @@ packer { Each plugin has two identifiers: -- A `source` address, which is only necessary when requiring a plugin outside the HashiCorp domain. -- A unique **local name**, which is used everywhere else in a Packer - configuration. +- A `source` address, which is necessary when requiring a plugin not bundled with the Packer binary. +- A unique **local name**, which is used everywhere else in a Packer configuration. ## Local Names @@ -135,7 +138,8 @@ follows: For example, the fictional `myawesomecloud` plugin could belong to the `hashicorp` namespace on `github.com`, so its `source` could be `github.com/hashicorp/myawesomecloud`, -Note: the actual _repository_ that myawesomecloud comes from must always have + +-> Note: the actual _repository_ that myawesomecloud comes from must always have the name format `github.com/hashicorp/packer-plugin-myawesomecloud`, but the `required_plugins` block omits the redundant `packer-plugin-` repository prefix for brevity. @@ -144,9 +148,34 @@ The source address with all three components given explicitly is called the plugin's _fully-qualified address_. You will see fully-qualified address in various outputs, like error messages. -## Plugin location +## Plugin Installation Workflow -@include "plugins/plugin-location.mdx" +* [`packer init`](/packer/docs/commands/init) will install plugins in the **last** directory +in the following numbered list. + +1. `PACKER_PLUGINS_PATH` if set will be the sole location for installing plugins. All other +plugin directories will be ignored. +1. `PACKER_CONFIG_DIR`\plugins on Windows systems, or `PACKER_CONFIG_DIR`/plugins on all other systems. + +* During the initialization of Packer, any plugin required in the +**`required_plugins`** section will be looked up in all entries of the following +list. **First** plugin found takes precedence. Two binaries of the same plugin +with two different version will be considered as two different plugins. Highest +found version matching `required_plugins` will be taken into consideration. + +During initialization, on a `darwin_amd64` system, Packer will look-up for the +following files: + +* `PACKER_PLUGIN_PATH/github.com/azr/happycloud/packer-plugin-happycloud_*_x5.0_darwin_amd64` +* `PACKER_CONFIG_DIR/plugins/github.com/azr/happycloud/packer-plugin-happycloud_*_x5.0_darwin_amd64` + +The first plugin-name/version files found will take precedence. + +For plugins located under the `github.com/azr/happycloud/` directory structure an accompanying SHA256SUM file +will be required in order for `packer init` to ensure the plugin being loaded has not been tampered with. +The SHA256SUM file will be automatically generated when a plugin is installed via `packer init` if the plugin +was installed manually into `PACKER_CONFIG_DIR/plugins/github.com/azr/happycloud/` then the file +`PACKER_CONFIG_DIR/plugins/github.com/azr/happycloud/packer-plugin-happycloud_*_x5.0_darwin_amd64_SHA256SUM` must be generated manually as well. ## Implicit Github urls @@ -171,37 +200,32 @@ will avoid conflicting with other plugins for other tools, like Terraform. --> The [`packer plugins`](/packer/docs/commands/plugins) command allows to install plugins without going through -`init`. For manual installation of plugin binaries, without the `packer plugins` command, please continue reading. +-> The [`packer plugins`](/packer/docs/commands/plugins), available from Packer v1.8.0, command allows +you to install plugins without going through `init`. -The easiest way to manually install a plugin is to name it correctly, then place -it in the proper directory. To name a plugin correctly, make sure the binary is -named `packer-plugin-NAME`. For example, `packer-plugin-amazon` for a "plugin" -binary named "amazon". This binary will make one or more components available to -use. Valid types for plugins are down this page. - -Once the plugin is named properly, Packer automatically discovers plugins in -the following directories in the given order. If a conflicting plugin is found -later, it will take precedence over one found earlier. +```shell +packer plugins install github.com/hashicorp/vagrant +``` -1. The directory where `packer` is, or the executable directory. +## Plugin Installation Workflow +Plugin installation via `packer plugins install` works similar to that of the `packer init` command, with the following +exceptions no `required_plugins` block required and can be used with both legacy JSON and HCL2 templates. -2. The `$HOME/.packer.d/plugins` directory, if `$HOME` is defined (Unix) +* [`packer plugins install`](/packer/docs/commands/plugins) will install plugins in the **last** directory +in the following numbered list. -3. The `%APPDATA%/packer.d/plugins` if `%APPDATA%` is defined (Windows) +1. `PACKER_PLUGINS_PATH` if set will be the sole location for installing plugins. All other +plugin directories will be ignored. +1. `PACKER_CONFIG_DIR`\plugins on Windows systems, or `PACKER_CONFIG_DIR`/plugins on all other systems. -4. The `%USERPROFILE%/packer.d/plugins` if `%USERPROFILE%` is defined - (Windows) -5. The current working directory. +For manual installation of plugin binaries, without the `packer plugins` command, please continue reading. -6. The directory defined in the env var `PACKER_PLUGIN_PATH`. There can be more - than one directory defined; for example, `~/custom-dir-1:~/custom-dir-2`. - Separate directories in the PATH string using a colon (`:`) on POSIX systems and - a semicolon (`;`) on Windows systems. The above example path would be able to - find a provisioner named `packer-provisioner-foo` in either - `~/custom-dir-1/packer-provisioner-foo` or - `~/custom-dir-2/packer-provisioner-foo`. +The easiest way to manually install a plugin is to name it correctly, then place +it in the proper directory. To name a plugin correctly, make sure the binary is +named `packer-plugin-NAME`. For example, `packer-plugin-amazon` for a "plugin" +binary named "amazon". This binary will make one or more components available to +use. Valid types for plugins are down this page. The valid types for plugins are: @@ -217,6 +241,7 @@ The valid types for plugins are: - `provisioner` - A provisioner to install software on images created by a builder. + @@ -226,29 +251,6 @@ named `packer-COMPONENT-NAME`. For example, `packer-provisioner-comment` for a " binary named "comment". This binary will make a single provisioner named `comment` available to use. Valid types for plugins are down this page. -Once the plugin is named properly, Packer automatically discovers plugins in -the following directories in the given order. If a conflicting plugin is found -later, it will take precedence over one found earlier. - -1. The directory where `packer` is, or the executable directory. - -2. The `$HOME/.packer.d/plugins` directory, if `$HOME` is defined (Unix) - -3. The `%APPDATA%/packer.d/plugins` if `%APPDATA%` is defined (Windows) - -4. The `%USERPROFILE%/packer.d/plugins` if `%USERPROFILE%` is defined - (Windows) - -5. The current working directory. - -6. The directory defined in the env var `PACKER_PLUGIN_PATH`. There can be more - than one directory defined; for example, `~/custom-dir-1:~/custom-dir-2`. - Separate directories in the PATH string using a colon (`:`) on POSIX systems and - a semicolon (`;`) on Windows systems. The above example path would be able to - find a provisioner named `packer-provisioner-foo` in either - `~/custom-dir-1/packer-provisioner-foo` or - `~/custom-dir-2/packer-provisioner-foo`. - The valid types for plugins are: - `plugin` - A plugin binary that can contain one or more of each Packer component @@ -264,4 +266,4 @@ The valid types for plugins are: builder. - \ No newline at end of file + diff --git a/website/content/partials/plugins/plugin-location.mdx b/website/content/partials/plugins/plugin-location.mdx index eec78bf10b9..d8e997c7d44 100644 --- a/website/content/partials/plugins/plugin-location.mdx +++ b/website/content/partials/plugins/plugin-location.mdx @@ -1,58 +1,25 @@ -Plugins will usually be located in the -[PACKER_HOME_DIR](/packer/docs/configure#packer-s-home-directory). +Upon the initialization of Packer, any externally installed plugin will be automatically +discovered and loaded. -* [`packer init`](/packer/docs/commands/init) will install plugins in the **last** directory -in the following numbered list. +Packer plugins will usually be located within a plugins sub-directory under Packer's main config directory +[PACKER_CONFIG_DIR](/packer/docs/configure#packer-s-config-directory). If `PACKER_CONFIG_DIR` is +either not set or empty, a default equal to `$HOME/.config/packer/plugins` on UNIX, or `%APPDATA%\packer.d\plugins` +for Windows, will be used. -* During the initialization of Packer, any plugin required in the -**`required_plugins`** section will be looked up in all entries of the following -list. **First** plugin found takes precedence. Two binaries of the same plugin -with two different version will be considered as two different plugins. Highest -found version matching `required_plugins` will be taken into consideration. +Where applicable, some installation processes such as `packer init` may override the plugin loading process. +Refer to the specific installation guides for any plugin loading overrides. -1. The directory where `packer` is, or the executable directory. -1. The current working directory. (`"."`) -1. The `PACKER_HOME_DIR/plugins` directory. `PACKER_HOME_DIR` refers to *[Packer's home -directory](/packer/docs/configure#packer-s-home-directory)*, if it could be found. -1. The director(y/ies) under the `PACKER_PLUGIN_PATH` env var, if `PACKER_PLUGIN_PATH` -is set. +Packer uses the following process for loading the correct plugin: -~> **Note**: There can be more than one directory in the `PACKER_PLUGIN_PATH` -env var, it will be seperated by a semicolon (`;`) on Windows systems and a -colon (`:`) on other systems. The order priority will be kept. +1. All directories under the `PACKER_PLUGIN_PATH` environment variable, if `PACKER_PLUGIN_PATH` +is set. The `PACKER_PLUGIN_PATH` takes precedences over all other plugin directories; no other directories will be checked. +1. The directory where `packer` is installed, or the executable directory. +1. The current working directory, where `packer build` is being invoked. (`"."`) +1. The `PACKER_CONFIG_DIR/plugins` directory. `PACKER_CONFIG_DIR` refers to *[Packer's config +directory](/packer/docs/configure#packer-s-config-directory)*, if it could be found. -Using the following example : -```hcl - required_plugins { - happycloud = { - version = ">= 2.7.0" - source = "github.com/azr/happycloud" - } - } -``` +-> **Note:** The `PACKER_PLUGIN_PATH` environment variable can be set to more that one directories; +for example, ~/custom-dir-1:~/custom-dir-2. Separate directories in the PATH string using a colon (:) on UNIX systems +and a semicolon (;) on Windows systems. The above example path would be able to find a single or multi-component plugin +in either `~/custom-dir-1/packer/` or `~/custom-dir-2/`. -The plugin getter will then install the binaries in the following location for a -system with no `PACKER_PLUGIN_PATH` env var set. - -* `PACKER_HOME_DIR/plugins/github.com/hashicorp/happycloud/` - -During initialization, on a `darwin_amd64` system, Packer will look-up for the -following files: - -* `PACKER_EXEC_DIR/github.com/azr/happycloud/packer-plugin-happycloud_*_x5.0_darwin_amd64` -* `./github.com/azr/happycloud/packer-plugin-happycloud_*_x5.0_darwin_amd64` -* `PACKER_HOME_DIR/plugins/github.com/azr/happycloud/packer-plugin-happycloud_*_x5.0_darwin_amd64` -* `PACKER_PLUGIN_PATH/github.com/azr/happycloud/packer-plugin-happycloud_*_x5.0_darwin_amd64` -* `./packer-plugin-happycloud` - -The first plugin-name/version files found will take precedence. - -For plugins located under the `github.com/azr/happycloud/` directory structure an accompanying SHA256SUM file -will be required in order for `packer init` to ensure the plugin being loaded has not been tampered with. -The SHA256SUM file will be automatically generated when a plugin is installed via `packer init` if the plugin -was installed manually into `PACKER_HOME_DIR/plugins/github.com/azr/happycloud/` then the file -`PACKER_HOME_DIR/plugins/github.com/azr/happycloud/packer-plugin-happycloud_*_x5.0_darwin_amd64_SHA256SUM` must be generated manually as well. - --> Note: `PACKER_HOME_DIR` is not an actual env var and refers to [Packer's home -directory](#packer-s-home-directory). `PACKER_EXEC_DIR` is not an actual env var -and refers to the directory where `packer` is, or the executable directory. From 8beddcf52aa2f56594848a13d666e8356140aede Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 12 Jul 2023 10:24:05 -0400 Subject: [PATCH 122/381] website: fix header on configure page When the config file header was reworked, an erroneous link was included and placed so close to the header that it was rendered verbatim in the final documentation page. By adding an extra empty line in between the anchor link and the header, this renders correctly. --- website/content/docs/configure.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/website/content/docs/configure.mdx b/website/content/docs/configure.mdx index 1ab98692584..18eeb409396 100644 --- a/website/content/docs/configure.mdx +++ b/website/content/docs/configure.mdx @@ -36,6 +36,7 @@ Examples: config directory will be: `C:/packer.d/` and other values will not be checked. + ## Packer's config file (deprecated) Packer can optionally read a JSON file for the end user to set core settings. From 0e3de18e989ec7d366679d6ebd95e8437c81798d Mon Sep 17 00:00:00 2001 From: akkuman Date: Thu, 13 Jul 2023 16:41:50 +0800 Subject: [PATCH 123/381] fix: revise env var PACKER_PLUGIN_PATH ref: https://github.com/hashicorp/packer/pull/8616/files#diff-0e426a43248661127a0c0ee115aef7a1093b635f8993b3f7ebb1dd9f05b8f249R153 --- website/content/docs/plugins/install-plugins.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/plugins/install-plugins.mdx b/website/content/docs/plugins/install-plugins.mdx index 3af8ebbbf4c..0460e6c561c 100644 --- a/website/content/docs/plugins/install-plugins.mdx +++ b/website/content/docs/plugins/install-plugins.mdx @@ -153,7 +153,7 @@ various outputs, like error messages. * [`packer init`](/packer/docs/commands/init) will install plugins in the **last** directory in the following numbered list. -1. `PACKER_PLUGINS_PATH` if set will be the sole location for installing plugins. All other +1. `PACKER_PLUGIN_PATH` if set will be the sole location for installing plugins. All other plugin directories will be ignored. 1. `PACKER_CONFIG_DIR`\plugins on Windows systems, or `PACKER_CONFIG_DIR`/plugins on all other systems. From 456bc2397b3950860d09eb4c3ca324dcc2ac512f Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Mon, 17 Jul 2023 11:25:42 -0400 Subject: [PATCH 124/381] hcl2template: only warn once for missing plugins In HCL2, if a template contains a `required_plugins' block, but the required plugins are not installed, we print a warning. Prior to this commit, this was reported as an error once per missing plugin, which was redundant. This commit changes that by gathering all the missing plugins once, and printing them as a bullet list, so the message isn't redundant anymore. --- hcl2template/plugin.go | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/hcl2template/plugin.go b/hcl2template/plugin.go index bd1080b836b..1c32ef7779e 100644 --- a/hcl2template/plugin.go +++ b/hcl2template/plugin.go @@ -8,6 +8,7 @@ import ( "fmt" "log" "runtime" + "strings" "github.com/hashicorp/hcl/v2" "github.com/hashicorp/packer-plugin-sdk/didyoumean" @@ -77,6 +78,8 @@ func (cfg *PackerConfig) detectPluginBinaries() hcl.Diagnostics { return diags } + uninstalledPlugins := map[string]string{} + for _, pluginRequirement := range pluginReqs { sortedInstalls, err := pluginRequirement.ListInstallations(opts) if err != nil { @@ -88,11 +91,7 @@ func (cfg *PackerConfig) detectPluginBinaries() hcl.Diagnostics { continue } if len(sortedInstalls) == 0 { - diags = append(diags, &hcl.Diagnostic{ - Severity: hcl.DiagError, - Summary: fmt.Sprintf("no plugin installed for %s %v", pluginRequirement.Identifier, pluginRequirement.VersionConstraints.String()), - Detail: "Did you run packer init for this project ?", - }) + uninstalledPlugins[pluginRequirement.Identifier.String()] = pluginRequirement.VersionConstraints.String() continue } log.Printf("[TRACE] Found the following %q installations: %v", pluginRequirement.Identifier, sortedInstalls) @@ -108,6 +107,20 @@ func (cfg *PackerConfig) detectPluginBinaries() hcl.Diagnostics { } } + if len(uninstalledPlugins) > 0 { + detailMessage := &strings.Builder{} + detailMessage.WriteString("The following plugins are required, but not installed:\n\n") + for pluginName, pluginVersion := range uninstalledPlugins { + fmt.Fprintf(detailMessage, "* %s %s\n", pluginName, pluginVersion) + } + detailMessage.WriteString("\nDid you run packer init for this project ?") + diags = append(diags, &hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Missing plugins", + Detail: detailMessage.String(), + }) + } + return diags } From 2824320aa165ccf1a6b5aedad27699288b373382 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 11 Jul 2023 10:40:22 -0400 Subject: [PATCH 125/381] packer: remove discoverExternalComponents Since the `discoverExternalComponents' function was defined but not called anywhere, it is dead code, and can be safely removed from the codebase. --- packer/plugin.go | 82 ------------------------------------------------ 1 file changed, 82 deletions(-) diff --git a/packer/plugin.go b/packer/plugin.go index 5e4360f4fd6..a4321d90fd0 100644 --- a/packer/plugin.go +++ b/packer/plugin.go @@ -118,88 +118,6 @@ func (c *PluginConfig) Discover() error { return nil } -func (c *PluginConfig) discoverExternalComponents(path string) error { - var err error - log.Printf("[TRACE] discovering plugins in %s", path) - - if !filepath.IsAbs(path) { - path, err = filepath.Abs(path) - if err != nil { - return err - } - } - var externallyUsed []string - - pluginPaths, err := c.discoverSingle(filepath.Join(path, "packer-builder-*")) - if err != nil { - return err - } - for pluginName, pluginPath := range pluginPaths { - newPath := pluginPath // this needs to be stored in a new variable for the func below - c.Builders.Set(pluginName, func() (packersdk.Builder, error) { - return c.Client(newPath).Builder() - }) - externallyUsed = append(externallyUsed, pluginName) - } - if len(externallyUsed) > 0 { - sort.Strings(externallyUsed) - log.Printf("[INFO] using external builders: %v", externallyUsed) - externallyUsed = nil - } - - pluginPaths, err = c.discoverSingle(filepath.Join(path, "packer-post-processor-*")) - if err != nil { - return err - } - for pluginName, pluginPath := range pluginPaths { - newPath := pluginPath // this needs to be stored in a new variable for the func below - c.PostProcessors.Set(pluginName, func() (packersdk.PostProcessor, error) { - return c.Client(newPath).PostProcessor() - }) - externallyUsed = append(externallyUsed, pluginName) - } - if len(externallyUsed) > 0 { - sort.Strings(externallyUsed) - log.Printf("using external post-processors %v", externallyUsed) - externallyUsed = nil - } - - pluginPaths, err = c.discoverSingle(filepath.Join(path, "packer-provisioner-*")) - if err != nil { - return err - } - for pluginName, pluginPath := range pluginPaths { - newPath := pluginPath // this needs to be stored in a new variable for the func below - c.Provisioners.Set(pluginName, func() (packersdk.Provisioner, error) { - return c.Client(newPath).Provisioner() - }) - externallyUsed = append(externallyUsed, pluginName) - } - if len(externallyUsed) > 0 { - sort.Strings(externallyUsed) - log.Printf("using external provisioners %v", externallyUsed) - externallyUsed = nil - } - - pluginPaths, err = c.discoverSingle(filepath.Join(path, "packer-datasource-*")) - if err != nil { - return err - } - for pluginName, pluginPath := range pluginPaths { - newPath := pluginPath // this needs to be stored in a new variable for the func below - c.DataSources.Set(pluginName, func() (packersdk.Datasource, error) { - return c.Client(newPath).Datasource() - }) - externallyUsed = append(externallyUsed, pluginName) - } - if len(externallyUsed) > 0 { - sort.Strings(externallyUsed) - log.Printf("using external datasource %v", externallyUsed) - } - - return nil -} - func (c *PluginConfig) discoverLegacyMonoComponents(path string) error { var err error log.Printf("[TRACE] discovering plugins in %s", path) From a2930bda4fb9863687bd614ea3b875604d1acda0 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 11 Jul 2023 15:41:37 -0400 Subject: [PATCH 126/381] packer: warn on bundled plugins usage Since bundled plugins will be removed in an upcoming version of Packer, this commit adds a new warning message whenever a template uses one such plugin. This warning has been implemented on build, validate, console and the inspect subcommands. In addition to warning about the upcoming change and potential issue this will cause, this warning message proposes solutions to the user so they know what they'll have to do in order not to rely on those bundled plugins later. --- acctest/plugin/bundled_plugin_test.go | 181 ++++++++++++++++++ .../test-fixtures/basic_amazon_bundled.json | 10 + .../basic_amazon_bundled.pkr.hcl | 11 ++ ...basic_amazon_with_required_plugins.pkr.hcl | 20 ++ command/build.go | 10 +- command/meta.go | 175 +++++++++++++++++ command/validate.go | 10 +- command/vendored_plugins.go | 168 ++++++++++++++++ config.go | 4 + hcl2template/parser.go | 15 +- hcl2template/plugin.go | 2 +- packer/core.go | 6 + packer/run_interfaces.go | 7 + 13 files changed, 603 insertions(+), 16 deletions(-) create mode 100644 acctest/plugin/bundled_plugin_test.go create mode 100644 acctest/plugin/test-fixtures/basic_amazon_bundled.json create mode 100644 acctest/plugin/test-fixtures/basic_amazon_bundled.pkr.hcl create mode 100644 acctest/plugin/test-fixtures/basic_amazon_with_required_plugins.pkr.hcl diff --git a/acctest/plugin/bundled_plugin_test.go b/acctest/plugin/bundled_plugin_test.go new file mode 100644 index 00000000000..e9308a59869 --- /dev/null +++ b/acctest/plugin/bundled_plugin_test.go @@ -0,0 +1,181 @@ +package plugin + +import ( + _ "embed" + "errors" + "fmt" + "os" + "os/exec" + "strings" + "testing" + + "github.com/hashicorp/go-multierror" + amazonacc "github.com/hashicorp/packer-plugin-amazon/builder/ebs/acceptance" + "github.com/hashicorp/packer-plugin-sdk/acctest" + "github.com/hashicorp/packer/hcl2template/addrs" +) + +//go:embed test-fixtures/basic_amazon_bundled.pkr.hcl +var basicAmazonBundledEbsTemplate string + +func TestAccBuildBundledPlugins(t *testing.T) { + plugin := addrs.Plugin{ + Hostname: "github.com", + Namespace: "hashicorp", + Type: "amazon", + } + testCase := &acctest.PluginTestCase{ + Name: "amazon-ebs_bundled_test", + Setup: func() error { + return cleanupPluginInstallation(plugin) + }, + Teardown: func() error { + helper := amazonacc.AMIHelper{ + Region: "us-east-1", + Name: "packer-plugin-bundled-amazon-ebs-test", + } + return helper.CleanUpAmi() + }, + Template: basicAmazonBundledEbsTemplate, + Type: "amazon-ebs", + Init: false, + Check: func(buildCommand *exec.Cmd, logfile string) error { + if buildCommand.ProcessState != nil { + if buildCommand.ProcessState.ExitCode() != 0 { + return fmt.Errorf("Bad exit code. Logfile: %s", logfile) + } + } + + rawLogs, err := os.ReadFile(logfile) + if err != nil { + return fmt.Errorf("failed to read logs: %s", err) + } + + var errs error + + logs := string(rawLogs) + + if !strings.Contains(logs, "Warning: Bundled plugins used") { + errs = multierror.Append(errs, errors.New("expected warning about bundled plugins used, did not find it")) + } + + if !strings.Contains(logs, "Then run 'packer init' to manage installation of the plugins") { + errs = multierror.Append(errs, errors.New("expected suggestion about packer init in logs, did not find it.")) + } + + return errs + }, + } + + acctest.TestPlugin(t, testCase) +} + +//go:embed test-fixtures/basic_amazon_with_required_plugins.pkr.hcl +var basicAmazonRequiredPluginEbsTemplate string + +func TestAccBuildBundledPluginsWithRequiredPlugins(t *testing.T) { + plugin := addrs.Plugin{ + Hostname: "github.com", + Namespace: "hashicorp", + Type: "amazon", + } + testCase := &acctest.PluginTestCase{ + Name: "amazon-ebs_with_required_plugins_test", + Setup: func() error { + return cleanupPluginInstallation(plugin) + }, + Teardown: func() error { + helper := amazonacc.AMIHelper{ + Region: "us-east-1", + Name: "packer-plugin-required-plugin-amazon-ebs-test", + } + return helper.CleanUpAmi() + }, + Template: basicAmazonRequiredPluginEbsTemplate, + Type: "amazon-ebs", + Init: false, + Check: func(buildCommand *exec.Cmd, logfile string) error { + if buildCommand.ProcessState != nil { + if buildCommand.ProcessState.ExitCode() != 1 { + return fmt.Errorf("Bad exit code. Logfile: %s", logfile) + } + } + + rawLogs, err := os.ReadFile(logfile) + if err != nil { + return fmt.Errorf("failed to read logs: %s", err) + } + + var errs error + + logs := string(rawLogs) + + if strings.Contains(logs, "Warning: Bundled plugins used") { + errs = multierror.Append(errs, errors.New("did not expect warning about bundled plugins used")) + } + + if !strings.Contains(logs, "Missing plugins") { + errs = multierror.Append(errs, errors.New("expected error about plugins required and not installed, did not find it")) + } + + return errs + }, + } + + acctest.TestPlugin(t, testCase) +} + +//go:embed test-fixtures/basic_amazon_bundled.json +var basicAmazonBundledEbsTemplateJSON string + +func TestAccBuildBundledPluginsJSON(t *testing.T) { + plugin := addrs.Plugin{ + Hostname: "github.com", + Namespace: "hashicorp", + Type: "amazon", + } + testCase := &acctest.PluginTestCase{ + Name: "amazon-ebs_bundled_test_json", + Setup: func() error { + return cleanupPluginInstallation(plugin) + }, + Teardown: func() error { + helper := amazonacc.AMIHelper{ + Region: "us-east-1", + Name: "packer-plugin-bundled-amazon-ebs-test-json", + } + return helper.CleanUpAmi() + }, + Template: basicAmazonBundledEbsTemplateJSON, + Type: "amazon-ebs", + Init: false, + Check: func(buildCommand *exec.Cmd, logfile string) error { + if buildCommand.ProcessState != nil { + if buildCommand.ProcessState.ExitCode() != 0 { + return fmt.Errorf("Bad exit code. Logfile: %s", logfile) + } + } + + rawLogs, err := os.ReadFile(logfile) + if err != nil { + return fmt.Errorf("failed to read logs: %s", err) + } + + var errs error + + logs := string(rawLogs) + + if !strings.Contains(logs, "Warning: Bundled plugins used") { + errs = multierror.Append(errs, errors.New("expected warning about bundled plugins, did not find it.")) + } + + if !strings.Contains(logs, "plugins with the 'packer plugins install' command") { + errs = multierror.Append(errs, errors.New("expected suggestion about packer plugins install in logs, did not find it.")) + } + + return errs + }, + } + + acctest.TestPlugin(t, testCase) +} diff --git a/acctest/plugin/test-fixtures/basic_amazon_bundled.json b/acctest/plugin/test-fixtures/basic_amazon_bundled.json new file mode 100644 index 00000000000..f674cd130d1 --- /dev/null +++ b/acctest/plugin/test-fixtures/basic_amazon_bundled.json @@ -0,0 +1,10 @@ +{ + "builders": [{ + "type": "amazon-ebs", + "region": "us-east-1", + "instance_type": "m3.medium", + "source_ami": "ami-76b2a71e", + "ssh_username": "ubuntu", + "ami_name": "packer-plugin-bundled-amazon-ebs-test-json" + }] +} diff --git a/acctest/plugin/test-fixtures/basic_amazon_bundled.pkr.hcl b/acctest/plugin/test-fixtures/basic_amazon_bundled.pkr.hcl new file mode 100644 index 00000000000..c17a09df04f --- /dev/null +++ b/acctest/plugin/test-fixtures/basic_amazon_bundled.pkr.hcl @@ -0,0 +1,11 @@ +source "amazon-ebs" "basic-test" { + region = "us-east-1" + instance_type = "m3.medium" + source_ami = "ami-76b2a71e" + ssh_username = "ubuntu" + ami_name = "packer-plugin-bundled-amazon-ebs-test" +} + +build { + sources = ["source.amazon-ebs.basic-test"] +} diff --git a/acctest/plugin/test-fixtures/basic_amazon_with_required_plugins.pkr.hcl b/acctest/plugin/test-fixtures/basic_amazon_with_required_plugins.pkr.hcl new file mode 100644 index 00000000000..f9ba5a55b2c --- /dev/null +++ b/acctest/plugin/test-fixtures/basic_amazon_with_required_plugins.pkr.hcl @@ -0,0 +1,20 @@ +packer { + required_plugins { + amazon = { + source = "github.com/hashicorp/amazon", + version = "~> 1" + } + } +} + +source "amazon-ebs" "basic-test" { + region = "us-east-1" + instance_type = "m3.medium" + source_ami = "ami-76b2a71e" + ssh_username = "ubuntu" + ami_name = "packer-plugin-bundled-amazon-ebs-test" +} + +build { + sources = ["source.amazon-ebs.basic-test"] +} diff --git a/command/build.go b/command/build.go index b707fe22d6f..842938adcb9 100644 --- a/command/build.go +++ b/command/build.go @@ -87,7 +87,15 @@ func (c *BuildCommand) RunContext(buildCtx context.Context, cla *BuildArgs) int return ret } - diags := packerStarter.Initialize(packer.InitializeOptions{}) + diags := packerStarter.DetectPluginBinaries() + ret = writeDiags(c.Ui, nil, diags) + if ret != 0 { + return ret + } + + diags = packerStarter.Initialize(packer.InitializeOptions{}) + bundledDiags := c.DetectBundledPlugins(packerStarter) + diags = append(bundledDiags, diags...) ret = writeDiags(c.Ui, nil, diags) if ret != 0 { return ret diff --git a/command/meta.go b/command/meta.go index 99123fd8ec7..1579d152237 100644 --- a/command/meta.go +++ b/command/meta.go @@ -9,7 +9,9 @@ import ( "fmt" "io" "os" + "strings" + "github.com/hashicorp/hcl/v2" "github.com/hashicorp/hcl/v2/hclparse" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template" @@ -179,3 +181,176 @@ func (m *Meta) GetConfigFromJSON(cla *MetaArgs) (packer.Handler, int) { } return core, ret } + +func (m *Meta) DetectBundledPlugins(handler packer.Handler) hcl.Diagnostics { + var plugins []string + + switch h := handler.(type) { + case *packer.Core: + plugins = m.detectBundledPluginsJSON(h) + case *hcl2template.PackerConfig: + plugins = m.detectBundledPluginsHCL2(handler.(*hcl2template.PackerConfig)) + } + + if len(plugins) == 0 { + return nil + } + + buf := &strings.Builder{} + buf.WriteString("This template relies on the use of plugins bundled into the Packer binary.\n") + buf.WriteString("The practice of bundling external plugins into Packer will be removed in an upcoming version.\n\n") + switch h := handler.(type) { + case *packer.Core: + buf.WriteString("To remove this warning and ensure builds keep working you can install these external plugins with the 'packer plugins install' command\n\n") + + for _, plugin := range plugins { + fmt.Fprintf(buf, "* packer plugins install %s\n", plugin) + } + + buf.WriteString("\nAlternatively, if you upgrade your templates to HCL2, you can use 'packer init' with a 'required_plugins' block to automatically install external plugins.\n\n") + fmt.Fprintf(buf, "You can try HCL2 by running 'packer hcl2_upgrade %s'", h.Template.Path) + case *hcl2template.PackerConfig: + buf.WriteString("To remove this warning, add the following section to your template:\n") + buf.WriteString(m.fixRequiredPlugins(h)) + buf.WriteString("\nThen run 'packer init' to manage installation of the plugins") + } + + return hcl.Diagnostics{ + &hcl.Diagnostic{ + Severity: hcl.DiagWarning, + Summary: "Bundled plugins used", + Detail: buf.String(), + }, + } +} + +func (m *Meta) detectBundledPluginsJSON(core *packer.Core) []string { + bundledPlugins := map[string]struct{}{} + + tmpl := core.Template + if tmpl == nil { + panic("No template parsed. This is a Packer bug which should be reported, please open an issue on the project's issue tracker.") + } + + for _, b := range tmpl.Builders { + builderType := fmt.Sprintf("packer-builder-%s", b.Type) + if bundledStatus[builderType] { + bundledPlugins[builderType] = struct{}{} + } + } + + for _, p := range tmpl.Provisioners { + provisionerType := fmt.Sprintf("packer-provisioner-%s", p.Type) + if bundledStatus[provisionerType] { + bundledPlugins[provisionerType] = struct{}{} + } + } + + for _, pps := range tmpl.PostProcessors { + for _, pp := range pps { + postProcessorType := fmt.Sprintf("packer-post-processor-%s", pp.Type) + if bundledStatus[postProcessorType] { + bundledPlugins[postProcessorType] = struct{}{} + } + } + } + + return compileBundledPluginList(bundledPlugins) +} + +var knownPluginPrefixes = map[string]string{ + "amazon": "github.com/hashicorp/amazon", + "ansible": "github.com/hashicorp/ansible", + "azure": "github.com/hashicorp/azure", + "docker": "github.com/hashicorp/docker", + "googlecompute": "github.com/hashicorp/googlecompute", + "qemu": "github.com/hashicorp/qemu", + "vagrant": "github.com/hashicorp/vagrant", + "vmware": "github.com/hashicorp/vmware", + "vsphere": "github.com/hashicorp/vsphere", +} + +func (m *Meta) fixRequiredPlugins(config *hcl2template.PackerConfig) string { + plugins := map[string]struct{}{} + + for _, b := range config.Builds { + for _, b := range b.Sources { + for prefix, plugin := range knownPluginPrefixes { + if strings.HasPrefix(b.Type, prefix) { + plugins[plugin] = struct{}{} + } + } + } + + for _, p := range b.ProvisionerBlocks { + for prefix, plugin := range knownPluginPrefixes { + if strings.HasPrefix(p.PType, prefix) { + plugins[plugin] = struct{}{} + } + } + } + + for _, pps := range b.PostProcessorsLists { + for _, pp := range pps { + for prefix, plugin := range knownPluginPrefixes { + if strings.HasPrefix(pp.PType, prefix) { + plugins[plugin] = struct{}{} + } + } + } + } + } + + for _, ds := range config.Datasources { + for prefix, plugin := range knownPluginPrefixes { + if strings.HasPrefix(ds.Type, prefix) { + plugins[plugin] = struct{}{} + } + } + } + + retPlugins := make([]string, 0, len(plugins)) + for plugin := range plugins { + retPlugins = append(retPlugins, plugin) + } + + return generateRequiredPluginsBlock(retPlugins) +} + +func (m *Meta) detectBundledPluginsHCL2(config *hcl2template.PackerConfig) []string { + bundledPlugins := map[string]struct{}{} + + for _, b := range config.Builds { + for _, src := range b.Sources { + builderType := fmt.Sprintf("packer-builder-%s", src.Type) + if bundledStatus[builderType] { + bundledPlugins[builderType] = struct{}{} + } + } + + for _, p := range b.ProvisionerBlocks { + provisionerType := fmt.Sprintf("packer-provisioner-%s", p.PType) + if bundledStatus[provisionerType] { + bundledPlugins[provisionerType] = struct{}{} + } + } + + for _, pps := range b.PostProcessorsLists { + for _, pp := range pps { + postProcessorType := fmt.Sprintf("packer-post-processor-%s", pp.PType) + if bundledStatus[postProcessorType] { + bundledPlugins[postProcessorType] = struct{}{} + } + } + } + } + + for _, ds := range config.Datasources { + dsType := fmt.Sprintf("packer-datasource-%s", ds.Type) + if bundledStatus[dsType] { + bundledPlugins[dsType] = struct{}{} + } + } + + return compileBundledPluginList(bundledPlugins) +} diff --git a/command/validate.go b/command/validate.go index 1bc4cc1d7eb..2b7e2107b0d 100644 --- a/command/validate.go +++ b/command/validate.go @@ -65,9 +65,17 @@ func (c *ValidateCommand) RunContext(ctx context.Context, cla *ValidateArgs) int return 0 } - diags := packerStarter.Initialize(packer.InitializeOptions{ + diags := packerStarter.DetectPluginBinaries() + ret = writeDiags(c.Ui, nil, diags) + if ret != 0 { + return ret + } + + diags = packerStarter.Initialize(packer.InitializeOptions{ SkipDatasourcesExecution: !cla.EvaluateDatasources, }) + bundledDiags := c.DetectBundledPlugins(packerStarter) + diags = append(bundledDiags, diags...) ret = writeDiags(c.Ui, nil, diags) if ret != 0 { return ret diff --git a/command/vendored_plugins.go b/command/vendored_plugins.go index 0718b91a7c5..d6e5f836338 100644 --- a/command/vendored_plugins.go +++ b/command/vendored_plugins.go @@ -4,6 +4,10 @@ package command import ( + "fmt" + "log" + "strings" + packersdk "github.com/hashicorp/packer-plugin-sdk/packer" // Previously core-bundled components, split into their own plugins but @@ -102,6 +106,170 @@ var VendoredPostProcessors = map[string]packersdk.PostProcessor{ "vsphere": new(vspherepostprocessor.PostProcessor), } +// bundledStatus is used to know if one of the bundled components is loaded from +// an external plugin, or from the bundled plugins. +// +// We keep track of this to produce a warning if a user relies on one +// such plugin, as they will be removed in a later version of Packer. +var bundledStatus = map[string]bool{ + "packer-builder-amazon-ebs": false, + "packer-builder-amazon-chroot": false, + "packer-builder-amazon-ebssurrogate": false, + "packer-builder-amazon-ebsvolume": false, + "packer-builder-amazon-instance": false, + "packer-post-processor-amazon-import": false, + "packer-datasource-amazon-ami": false, + "packer-datasource-amazon-secretsmanager": false, + + "packer-provisioner-ansible": false, + "packer-provisioner-ansible-local": false, + + "packer-provisioner-azure-dtlartifact": false, + "packer-builder-azure-arm": false, + "packer-builder-azure-chroot": false, + "packer-builder-azure-dtl": false, + + "packer-builder-docker": false, + "packer-post-processor-docker-import": false, + "packer-post-processor-docker-push": false, + "packer-post-processor-docker-save": false, + "packer-post-processor-docker-tag": false, + + "packer-builder-googlecompute": false, + "packer-post-processor-googlecompute-export": false, + "packer-post-processor-googlecompute-import": false, + + "packer-builder-qemu": false, + + "packer-builder-vagrant": false, + "packer-post-processor-vagrant": false, + "packer-post-processor-vagrant-cloud": false, + + "packer-builder-virtualbox-iso": false, + "packer-builder-virtualbox-ovf": false, + "packer-builder-virtualbox-vm": false, + + "packer-builder-vmware-iso": false, + "packer-builder-vmware-vmx": false, + + "packer-builder-vsphere-clone": false, + "packer-builder-vsphere-iso": false, + "packer-post-processor-vsphere-template": false, + "packer-post-processor-vsphere": false, +} + +// TrackBundledPlugin marks a component as loaded from Packer's bundled plugins +// instead of from an externally loaded plugin. +// +// NOTE: `pluginName' must be in the format `packer--' +func TrackBundledPlugin(pluginName string) { + _, exists := bundledStatus[pluginName] + if !exists { + return + } + + bundledStatus[pluginName] = true +} + +var componentPluginMap = map[string]string{ + "packer-builder-amazon-ebs": "github.com/hashicorp/amazon", + "packer-builder-amazon-chroot": "github.com/hashicorp/amazon", + "packer-builder-amazon-ebssurrogate": "github.com/hashicorp/amazon", + "packer-builder-amazon-ebsvolume": "github.com/hashicorp/amazon", + "packer-builder-amazon-instance": "github.com/hashicorp/amazon", + "packer-post-processor-amazon-import": "github.com/hashicorp/amazon", + "packer-datasource-amazon-ami": "github.com/hashicorp/amazon", + "packer-datasource-amazon-secretsmanager": "github.com/hashicorp/amazon", + + "packer-provisioner-ansible": "github.com/hashicorp/ansible", + "packer-provisioner-ansible-local": "github.com/hashicorp/ansible", + + "packer-provisioner-azure-dtlartifact": "github.com/hashicorp/azure", + "packer-builder-azure-arm": "github.com/hashicorp/azure", + "packer-builder-azure-chroot": "github.com/hashicorp/azure", + "packer-builder-azure-dtl": "github.com/hashicorp/azure", + + "packer-builder-docker": "github.com/hashicorp/docker", + "packer-post-processor-docker-import": "github.com/hashicorp/docker", + "packer-post-processor-docker-push": "github.com/hashicorp/docker", + "packer-post-processor-docker-save": "github.com/hashicorp/docker", + "packer-post-processor-docker-tag": "github.com/hashicorp/docker", + + "packer-builder-googlecompute": "github.com/hashicorp/googlecompute", + "packer-post-processor-googlecompute-export": "github.com/hashicorp/googlecompute", + "packer-post-processor-googlecompute-import": "github.com/hashicorp/googlecompute", + + "packer-builder-qemu": "github.com/hashicorp/qemu", + + "packer-builder-vagrant": "github.com/hashicorp/vagrant", + "packer-post-processor-vagrant": "github.com/hashicorp/vagrant", + "packer-post-processor-vagrant-cloud": "github.com/hashicorp/vagrant", + + "packer-builder-virtualbox-iso": "github.com/hashicorp/virtualbox", + "packer-builder-virtualbox-ovf": "github.com/hashicorp/virtualbox", + "packer-builder-virtualbox-vm": "github.com/hashicorp/virtualbox", + + "packer-builder-vmware-iso": "github.com/hashicorp/vmware", + "packer-builder-vmware-vmx": "github.com/hashicorp/vmware", + + "packer-builder-vsphere-clone": "github.com/hashicorp/vsphere", + "packer-builder-vsphere-iso": "github.com/hashicorp/vsphere", + "packer-post-processor-vsphere-template": "github.com/hashicorp/vsphere", + "packer-post-processor-vsphere": "github.com/hashicorp/vsphere", +} + +// compileBundledPluginList returns a list of plugins to import in a config +// +// This only works on bundled plugins and serves as a way to inform users that +// they should not rely on a bundled plugin anymore, but give them recommendations +// on how to manage those plugins instead. +func compileBundledPluginList(componentMap map[string]struct{}) []string { + plugins := map[string]struct{}{} + for component := range componentMap { + plugin, ok := componentPluginMap[component] + if !ok { + log.Printf("Unknown bundled plugin component: %q", component) + continue + } + + plugins[plugin] = struct{}{} + } + + pluginList := make([]string, 0, len(plugins)) + for plugin := range plugins { + pluginList = append(pluginList, plugin) + } + + return pluginList +} + +func generateRequiredPluginsBlock(plugins []string) string { + if len(plugins) == 0 { + return "" + } + + buf := &strings.Builder{} + buf.WriteString(` +packer { + required_plugins {`) + + for _, plugin := range plugins { + pluginName := strings.Replace(plugin, "github.com/hashicorp/", "", 1) + fmt.Fprintf(buf, ` + %s = { + source = %q + version = "~> 1" + }`, pluginName, plugin) + } + + buf.WriteString(` + } +} +`) + + return buf.String() +} + // Upon init lets load up any plugins that were vendored manually into the default // set of plugins. func init() { diff --git a/config.go b/config.go index 6b59b98fe63..af679dd8e0b 100644 --- a/config.go +++ b/config.go @@ -153,6 +153,7 @@ func (c *config) discoverInternalComponents() error { for builder := range command.Builders { builder := builder if !c.Plugins.Builders.Has(builder) { + command.TrackBundledPlugin(fmt.Sprintf("packer-builder-%s", builder)) bin := fmt.Sprintf("%s%splugin%spacker-builder-%s", packerPath, PACKERSPACE, PACKERSPACE, builder) c.Plugins.Builders.Set(builder, func() (packersdk.Builder, error) { @@ -164,6 +165,7 @@ func (c *config) discoverInternalComponents() error { for provisioner := range command.Provisioners { provisioner := provisioner if !c.Plugins.Provisioners.Has(provisioner) { + command.TrackBundledPlugin(fmt.Sprintf("packer-provisioner-%s", provisioner)) bin := fmt.Sprintf("%s%splugin%spacker-provisioner-%s", packerPath, PACKERSPACE, PACKERSPACE, provisioner) c.Plugins.Provisioners.Set(provisioner, func() (packersdk.Provisioner, error) { @@ -175,6 +177,7 @@ func (c *config) discoverInternalComponents() error { for postProcessor := range command.PostProcessors { postProcessor := postProcessor if !c.Plugins.PostProcessors.Has(postProcessor) { + command.TrackBundledPlugin(fmt.Sprintf("packer-post-processor-%s", postProcessor)) bin := fmt.Sprintf("%s%splugin%spacker-post-processor-%s", packerPath, PACKERSPACE, PACKERSPACE, postProcessor) c.Plugins.PostProcessors.Set(postProcessor, func() (packersdk.PostProcessor, error) { @@ -186,6 +189,7 @@ func (c *config) discoverInternalComponents() error { for dataSource := range command.Datasources { dataSource := dataSource if !c.Plugins.DataSources.Has(dataSource) { + command.TrackBundledPlugin(fmt.Sprintf("packer-datasource-%s", dataSource)) bin := fmt.Sprintf("%s%splugin%spacker-datasource-%s", packerPath, PACKERSPACE, PACKERSPACE, dataSource) c.Plugins.DataSources.Set(dataSource, func() (packersdk.Datasource, error) { diff --git a/hcl2template/parser.go b/hcl2template/parser.go index 2246131fa88..a724bb807bd 100644 --- a/hcl2template/parser.go +++ b/hcl2template/parser.go @@ -308,19 +308,8 @@ func filterVarsFromLogs(inputOrLocal Variables) { } func (cfg *PackerConfig) Initialize(opts packer.InitializeOptions) hcl.Diagnostics { - var diags hcl.Diagnostics - - // enable packer to start plugins requested in required_plugins. - moreDiags := cfg.detectPluginBinaries() - diags = append(diags, moreDiags...) - if moreDiags.HasErrors() { - return diags - } - - moreDiags = cfg.InputVariables.ValidateValues() - diags = append(diags, moreDiags...) - moreDiags = cfg.LocalVariables.ValidateValues() - diags = append(diags, moreDiags...) + diags := cfg.InputVariables.ValidateValues() + diags = append(diags, cfg.LocalVariables.ValidateValues()...) diags = append(diags, cfg.evaluateDatasources(opts.SkipDatasourcesExecution)...) diags = append(diags, checkForDuplicateLocalDefinition(cfg.LocalBlocks)...) diags = append(diags, cfg.evaluateLocalVariables(cfg.LocalBlocks)...) diff --git a/hcl2template/plugin.go b/hcl2template/plugin.go index 1c32ef7779e..4a5c0186647 100644 --- a/hcl2template/plugin.go +++ b/hcl2template/plugin.go @@ -55,7 +55,7 @@ func (cfg *PackerConfig) PluginRequirements() (plugingetter.Requirements, hcl.Di return reqs, diags } -func (cfg *PackerConfig) detectPluginBinaries() hcl.Diagnostics { +func (cfg *PackerConfig) DetectPluginBinaries() hcl.Diagnostics { opts := plugingetter.ListInstallationsOptions{ FromFolders: cfg.parser.PluginConfig.KnownPluginFolders, BinaryInstallationOptions: plugingetter.BinaryInstallationOptions{ diff --git a/packer/core.go b/packer/core.go index 4d62cce6bc3..b711af080bc 100644 --- a/packer/core.go +++ b/packer/core.go @@ -132,6 +132,12 @@ func NewCore(c *CoreConfig) *Core { return core } +// DetectPluginBinaries is used to load required plugins from the template, +// since it is unsupported in JSON, this is essentially a no-op. +func (c *Core) DetectPluginBinaries() hcl.Diagnostics { + return nil +} + func (c *Core) Initialize(_ InitializeOptions) hcl.Diagnostics { err := c.initialize() if err != nil { diff --git a/packer/run_interfaces.go b/packer/run_interfaces.go index 5bf1151529c..253998c20a4 100644 --- a/packer/run_interfaces.go +++ b/packer/run_interfaces.go @@ -40,6 +40,12 @@ type InitializeOptions struct { SkipDatasourcesExecution bool } +type PluginBinaryDetector interface { + // DetectPluginBinaries is used only for HCL2 templates, and loads required + // plugins if specified. + DetectPluginBinaries() hcl.Diagnostics +} + // The Handler handles all Packer things. This interface reflects the Packer // commands, ex: init, console ( evaluate ), fix config, inspect config, etc. To // run a build we will start the builds and then the core of Packer handles @@ -53,6 +59,7 @@ type Handler interface { BuildGetter ConfigFixer ConfigInspector + PluginBinaryDetector } //go:generate enumer -type FixConfigMode From b522edca36cdbc33c3c24c8659d0b4e69682b4e0 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 14 Jul 2023 17:11:54 -0400 Subject: [PATCH 127/381] hcl2_upgrade: add required_plugins in out template When a legacy JSON template references built-in plugins, we add them to the resulting template as a `required_plugins' block in HCL2. --- command/hcl2_upgrade.go | 85 ++++++++++++++++++- command/hcl2_upgrade_test.go | 1 + .../hcl2_upgrade/ami_test/expected.pkr.hcl | 8 ++ .../aws-access-config/expected.pkr.hcl | 6 ++ .../hcl2_upgrade/azure_shg/expected.pkr.hcl | 8 ++ .../bundled-plugin-used/expected.pkr.hcl | 29 +++++++ .../bundled-plugin-used/input.json | 11 +++ .../hcl2_upgrade/complete/expected.pkr.hcl | 6 ++ .../hcl2_upgrade/minimal/expected.pkr.hcl | 6 ++ .../hcl2_upgrade/source-name/expected.pkr.hcl | 6 ++ .../expected.pkr.hcl | 8 ++ .../without-annotations/expected.pkr.hcl | 6 ++ 12 files changed, 176 insertions(+), 4 deletions(-) create mode 100644 command/test-fixtures/hcl2_upgrade/bundled-plugin-used/expected.pkr.hcl create mode 100644 command/test-fixtures/hcl2_upgrade/bundled-plugin-used/input.json diff --git a/command/hcl2_upgrade.go b/command/hcl2_upgrade.go index adba96d7f87..08b7d2ad745 100644 --- a/command/hcl2_upgrade.go +++ b/command/hcl2_upgrade.go @@ -797,16 +797,93 @@ type PackerParser struct { } func (p *PackerParser) Parse(tpl *template.Template) error { + reqPlugins, err := p.generateRequiredPluginsBlock(tpl) + if err != nil { + return err + } + + if tpl.MinVersion == "" && reqPlugins == nil { + return nil + } + + fileContent := hclwrite.NewEmptyFile() + body := fileContent.Body() + packerBody := body.AppendNewBlock("packer", nil).Body() + if tpl.MinVersion != "" { - fileContent := hclwrite.NewEmptyFile() - body := fileContent.Body() - packerBody := body.AppendNewBlock("packer", nil).Body() packerBody.SetAttributeValue("required_version", cty.StringVal(fmt.Sprintf(">= %s", tpl.MinVersion))) - p.out = fileContent.Bytes() } + + if reqPlugins != nil { + packerBody.AppendBlock(reqPlugins) + } + + p.out = fileContent.Bytes() + return nil } +func gatherPluginsFromTemplate(tpl *template.Template) []string { + plugins := map[string]struct{}{} + + for _, b := range tpl.Builders { + for prefix, plugin := range knownPluginPrefixes { + if strings.HasPrefix(b.Type, prefix) { + plugins[plugin] = struct{}{} + } + } + } + + for _, p := range tpl.Provisioners { + for prefix, plugin := range knownPluginPrefixes { + if strings.HasPrefix(p.Type, prefix) { + plugins[plugin] = struct{}{} + } + } + } + + for _, pps := range tpl.PostProcessors { + for _, pp := range pps { + for prefix, plugin := range knownPluginPrefixes { + if strings.HasPrefix(pp.Type, prefix) { + plugins[plugin] = struct{}{} + } + } + } + } + + if len(plugins) == 0 { + return nil + } + + retPlugins := make([]string, 0, len(plugins)) + for plugin := range plugins { + retPlugins = append(retPlugins, plugin) + } + + sort.Strings(retPlugins) + + return retPlugins +} + +func (p *PackerParser) generateRequiredPluginsBlock(tpl *template.Template) (*hclwrite.Block, error) { + plugins := gatherPluginsFromTemplate(tpl) + if len(plugins) == 0 { + return nil, nil + } + + reqPlugins := hclwrite.NewBlock("required_plugins", nil) + for _, plugin := range plugins { + pluginBlock := cty.ObjectVal(map[string]cty.Value{ + "source": cty.StringVal(plugin), + "version": cty.StringVal("~> 1"), + }) + reqPlugins.Body().SetAttributeValue(strings.Replace(plugin, "github.com/hashicorp/", "", 1), pluginBlock) + } + + return reqPlugins, nil +} + func (p *PackerParser) Write(out *bytes.Buffer) { if len(p.out) > 0 { if p.WithAnnotations { diff --git a/command/hcl2_upgrade_test.go b/command/hcl2_upgrade_test.go index d2f92b6b690..afa8575aa8e 100644 --- a/command/hcl2_upgrade_test.go +++ b/command/hcl2_upgrade_test.go @@ -38,6 +38,7 @@ func Test_hcl2_upgrade(t *testing.T) { {folder: "complete-variables-with-template-engine", flags: []string{}}, {folder: "undeclared-variables", flags: []string{}, exitCode: 0}, {folder: "varfile-with-no-variables-block", flags: []string{}, exitCode: 0}, + {folder: "bundled-plugin-used", flags: []string{}, exitCode: 0}, } for _, tc := range tc { diff --git a/command/test-fixtures/hcl2_upgrade/ami_test/expected.pkr.hcl b/command/test-fixtures/hcl2_upgrade/ami_test/expected.pkr.hcl index 72ccb20383c..8a72f3551b0 100644 --- a/command/test-fixtures/hcl2_upgrade/ami_test/expected.pkr.hcl +++ b/command/test-fixtures/hcl2_upgrade/ami_test/expected.pkr.hcl @@ -1,3 +1,11 @@ +packer { + required_plugins { + amazon = { + source = "github.com/hashicorp/amazon" + version = "~> 1" + } + } +} source "amazon-ebs" "autogenerated_1" { run_tags = { diff --git a/command/test-fixtures/hcl2_upgrade/aws-access-config/expected.pkr.hcl b/command/test-fixtures/hcl2_upgrade/aws-access-config/expected.pkr.hcl index 9ccbe9dc2fc..8c34e4735b3 100644 --- a/command/test-fixtures/hcl2_upgrade/aws-access-config/expected.pkr.hcl +++ b/command/test-fixtures/hcl2_upgrade/aws-access-config/expected.pkr.hcl @@ -1,5 +1,11 @@ packer { required_version = ">= 1.6.0" + required_plugins { + amazon = { + source = "github.com/hashicorp/amazon" + version = "~> 1" + } + } } variable "aws_access_key" { diff --git a/command/test-fixtures/hcl2_upgrade/azure_shg/expected.pkr.hcl b/command/test-fixtures/hcl2_upgrade/azure_shg/expected.pkr.hcl index 089ce80a781..15d5a4ad33e 100644 --- a/command/test-fixtures/hcl2_upgrade/azure_shg/expected.pkr.hcl +++ b/command/test-fixtures/hcl2_upgrade/azure_shg/expected.pkr.hcl @@ -1,3 +1,11 @@ +packer { + required_plugins { + azure = { + source = "github.com/hashicorp/azure" + version = "~> 1" + } + } +} source "azure-arm" "autogenerated_1" { shared_image_gallery { diff --git a/command/test-fixtures/hcl2_upgrade/bundled-plugin-used/expected.pkr.hcl b/command/test-fixtures/hcl2_upgrade/bundled-plugin-used/expected.pkr.hcl new file mode 100644 index 00000000000..cce175b01bd --- /dev/null +++ b/command/test-fixtures/hcl2_upgrade/bundled-plugin-used/expected.pkr.hcl @@ -0,0 +1,29 @@ +packer { + required_plugins { + amazon = { + source = "github.com/hashicorp/amazon" + version = "~> 1" + } + ansible = { + source = "github.com/hashicorp/ansible" + version = "~> 1" + } + googlecompute = { + source = "github.com/hashicorp/googlecompute" + version = "~> 1" + } + } +} + +source "amazon-ebs" "autogenerated_1" { +} + +build { + sources = ["source.amazon-ebs.autogenerated_1"] + + provisioner "ansible-local" { + } + + post-processor "googlecompute-import" { + } +} diff --git a/command/test-fixtures/hcl2_upgrade/bundled-plugin-used/input.json b/command/test-fixtures/hcl2_upgrade/bundled-plugin-used/input.json new file mode 100644 index 00000000000..917c7105e5a --- /dev/null +++ b/command/test-fixtures/hcl2_upgrade/bundled-plugin-used/input.json @@ -0,0 +1,11 @@ +{ + "builders": [{ + "type": "amazon-ebs" + }], + "provisioners": [{ + "type": "ansible-local" + }], + "post-processors": [{ + "type": "googlecompute-import" + }] +} diff --git a/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl b/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl index bcc669b6438..a6800c67210 100644 --- a/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl +++ b/command/test-fixtures/hcl2_upgrade/complete/expected.pkr.hcl @@ -14,6 +14,12 @@ # See https://www.packer.io/docs/templates/hcl_templates/blocks/packer for more info packer { required_version = ">= 1.6.0" + required_plugins { + amazon = { + source = "github.com/hashicorp/amazon" + version = "~> 1" + } + } } # All generated input variables will be of 'string' type as this is how Packer JSON diff --git a/command/test-fixtures/hcl2_upgrade/minimal/expected.pkr.hcl b/command/test-fixtures/hcl2_upgrade/minimal/expected.pkr.hcl index 2802e8e18b0..316293c39e7 100644 --- a/command/test-fixtures/hcl2_upgrade/minimal/expected.pkr.hcl +++ b/command/test-fixtures/hcl2_upgrade/minimal/expected.pkr.hcl @@ -14,6 +14,12 @@ # See https://www.packer.io/docs/templates/hcl_templates/blocks/packer for more info packer { required_version = ">= 1.6.0" + required_plugins { + amazon = { + source = "github.com/hashicorp/amazon" + version = "~> 1" + } + } } # All generated input variables will be of 'string' type as this is how Packer JSON diff --git a/command/test-fixtures/hcl2_upgrade/source-name/expected.pkr.hcl b/command/test-fixtures/hcl2_upgrade/source-name/expected.pkr.hcl index b5adf8ef55b..c4145f7d145 100644 --- a/command/test-fixtures/hcl2_upgrade/source-name/expected.pkr.hcl +++ b/command/test-fixtures/hcl2_upgrade/source-name/expected.pkr.hcl @@ -14,6 +14,12 @@ # See https://www.packer.io/docs/templates/hcl_templates/blocks/packer for more info packer { required_version = ">= 1.6.0" + required_plugins { + amazon = { + source = "github.com/hashicorp/amazon" + version = "~> 1" + } + } } # All generated input variables will be of 'string' type as this is how Packer JSON diff --git a/command/test-fixtures/hcl2_upgrade/vsphere_linux_options_and_network_interface/expected.pkr.hcl b/command/test-fixtures/hcl2_upgrade/vsphere_linux_options_and_network_interface/expected.pkr.hcl index a160d0c9eed..16c3c21ca24 100644 --- a/command/test-fixtures/hcl2_upgrade/vsphere_linux_options_and_network_interface/expected.pkr.hcl +++ b/command/test-fixtures/hcl2_upgrade/vsphere_linux_options_and_network_interface/expected.pkr.hcl @@ -1,3 +1,11 @@ +packer { + required_plugins { + vsphere = { + source = "github.com/hashicorp/vsphere" + version = "~> 1" + } + } +} source "vsphere-clone" "autogenerated_1" { RAM_reserve_all = false diff --git a/command/test-fixtures/hcl2_upgrade/without-annotations/expected.pkr.hcl b/command/test-fixtures/hcl2_upgrade/without-annotations/expected.pkr.hcl index e332c21e08f..414ebc55a96 100644 --- a/command/test-fixtures/hcl2_upgrade/without-annotations/expected.pkr.hcl +++ b/command/test-fixtures/hcl2_upgrade/without-annotations/expected.pkr.hcl @@ -1,5 +1,11 @@ packer { required_version = ">= 1.6.0" + required_plugins { + amazon = { + source = "github.com/hashicorp/amazon" + version = "~> 1" + } + } } variable "aws_access_key" { From 6e764658b7722aa09e7a825f5d6a126bfa268797 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet <105649352+lbajolet-hashicorp@users.noreply.github.com> Date: Tue, 18 Jul 2023 16:14:35 -0400 Subject: [PATCH 128/381] Makefile: remove mode-check target (#12505) The Makefile would check for executable files inside the Packer repository, and produce errors if one was detected and not explicitely whitelisted through the `EXECUTABLE_FILES' Makefile variable. This check was introduced a while back to avoid having executable files in the repository, but this check can be problematic sometimes because of how it is written, namely when building the website, which causes a lot of JS executable files to appear in the hierarchy, and in turn this causes the shell expansion to fail because of the large number of arguments. Since this test is not necessary for Packer to build or test, and since it implies that we have to maintain the whitelist regex, we remove it from the Makefile. --- Makefile | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index ad6cfd3a28a..01d62f0053c 100644 --- a/Makefile +++ b/Makefile @@ -12,8 +12,6 @@ GOOS=$(shell go env GOOS) GOARCH=$(shell go env GOARCH) GOPATH=$(shell go env GOPATH) -EXECUTABLE_FILES=$(shell find . -type f -executable | egrep -v '^\./(website/[vendor|tmp]|vendor/|\.git|bin/|scripts/|pkg/)' | egrep -v '.*(\.sh|\.bats|\.git)' | egrep -v './provisioner/(ansible|inspec)/test-fixtures/exit1') - # Get the git commit GIT_DIRTY=$(shell test -n "`git status --porcelain`" && echo "+CHANGES" || true) GIT_COMMIT=$(shell git rev-parse --short HEAD) @@ -133,15 +131,6 @@ fmt-check: fmt ## Check go code formatting exit 1; \ fi -mode-check: ## Check that only certain files are executable - @echo "==> Checking that only certain files are executable..." - @if [ ! -z "$(EXECUTABLE_FILES)" ]; then \ - echo "These files should not be executable or they must be white listed in the Makefile:"; \ - echo "$(EXECUTABLE_FILES)" | xargs -n1; \ - exit 1; \ - else \ - echo "Check passed."; \ - fi fmt-docs: @find ./website/pages/docs -name "*.md" -exec pandoc --wrap auto --columns 79 --atx-headers -s -f "markdown_github+yaml_metadata_block" -t "markdown_github+yaml_metadata_block" {} -o {} \; @@ -166,7 +155,7 @@ generate-check: generate ## Check go code generation is on par exit 1; \ fi -test: mode-check vet ## Run unit tests +test: vet ## Run unit tests @go test -count $(COUNT) $(TEST) $(TESTARGS) -timeout=3m # acctest runs provisioners acceptance tests @@ -178,7 +167,7 @@ testacc: # install-build-deps generate ## Run acceptance tests @echo "WARN: Acceptance tests will take a long time to run and may cost money. Ctrl-C if you want to cancel." PACKER_ACC=1 go test -count $(COUNT) -v $(TEST) $(TESTARGS) -timeout=120m -testrace: mode-check vet ## Test with race detection enabled +testrace: vet ## Test with race detection enabled @go test -count $(COUNT) -race $(TEST) $(TESTARGS) -timeout=3m -p=8 # Runs code coverage and open a html page with report From 5271c287498556266deb2ffb06f0164bbacf09f1 Mon Sep 17 00:00:00 2001 From: GaryNg Date: Tue, 18 Jul 2023 21:47:06 +0800 Subject: [PATCH 129/381] Add closing code block --- .../docs/templates/hcl_templates/functions/contextual/vault.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx b/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx index f36e8f65823..c4b25b9798f 100644 --- a/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx +++ b/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx @@ -49,6 +49,7 @@ local "foo" { expression = vault("secrets/hello", "foo") sensitive = true } +``` The `local` block example accesses the Vault path `secrets/foo` and returns the value stored at the key `foo`, storing it as the local variable `local.foo`. However, the output of From cc1e2fca782de3e1a854597a6ed51445cba93765 Mon Sep 17 00:00:00 2001 From: GaryNg Date: Tue, 18 Jul 2023 21:52:26 +0800 Subject: [PATCH 130/381] Prefix url with product slug --- .../docs/templates/hcl_templates/functions/contextual/vault.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx b/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx index c4b25b9798f..95454cf211c 100644 --- a/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx +++ b/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx @@ -54,7 +54,7 @@ local "foo" { The `local` block example accesses the Vault path `secrets/foo` and returns the value stored at the key `foo`, storing it as the local variable `local.foo`. However, the output of the newly stored local variable will be filtered from the Packer build output, and replaced -with the value ''. See [Local Values](/docs/templates/hcl_templates/locals) for more details. +with the value ''. See [Local Values](/packer/docs/templates/hcl_templates/locals) for more details. ## Usage From 58b193f221308f6235cca015153543672b0aeede Mon Sep 17 00:00:00 2001 From: GaryNg Date: Wed, 19 Jul 2023 22:55:14 +0800 Subject: [PATCH 131/381] Use backtick to prevent html parsing Co-authored-by: Lucas Bajolet <105649352+lbajolet-hashicorp@users.noreply.github.com> --- .../docs/templates/hcl_templates/functions/contextual/vault.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx b/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx index 95454cf211c..8136a10114d 100644 --- a/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx +++ b/website/content/docs/templates/hcl_templates/functions/contextual/vault.mdx @@ -54,7 +54,7 @@ local "foo" { The `local` block example accesses the Vault path `secrets/foo` and returns the value stored at the key `foo`, storing it as the local variable `local.foo`. However, the output of the newly stored local variable will be filtered from the Packer build output, and replaced -with the value ''. See [Local Values](/packer/docs/templates/hcl_templates/locals) for more details. +with the value ``. See [Local Values](/packer/docs/templates/hcl_templates/locals) for more details. ## Usage From 0194d839b0ffb1a07ba10e72b693bd12daf9e636 Mon Sep 17 00:00:00 2001 From: "hashicorp-tsccr[bot]" <129506189+hashicorp-tsccr[bot]@users.noreply.github.com> Date: Wed, 19 Jul 2023 13:20:14 -0400 Subject: [PATCH 132/381] Result of tsccr-helper -log-level=info -pin-all-workflows . (#12507) Co-authored-by: hashicorp-tsccr[bot] --- .github/workflows/acceptance-test.yml | 10 +++++----- .github/workflows/auto-close-stale-issues.yml | 2 +- .github/workflows/build.yml | 14 +++++++------- .github/workflows/check-plugin-docs.yml | 4 ++-- .github/workflows/create-release-branch.yml | 2 +- .github/workflows/go-test.yml | 14 +++++++------- .github/workflows/go-validate.yml | 18 +++++++++--------- .github/workflows/issue-comment-created.yml | 2 +- .github/workflows/issue-migrator.yml | 2 +- .github/workflows/issues-opened.yml | 8 ++++---- .github/workflows/jira.yml | 6 +++--- .github/workflows/lock.yml | 2 +- .github/workflows/nightly-release.yml | 12 ++++++------ 13 files changed, 48 insertions(+), 48 deletions(-) diff --git a/.github/workflows/acceptance-test.yml b/.github/workflows/acceptance-test.yml index 98d012cb8d4..783b6bdccde 100644 --- a/.github/workflows/acceptance-test.yml +++ b/.github/workflows/acceptance-test.yml @@ -19,7 +19,7 @@ jobs: outputs: go-version: ${{ steps.get-go-version.outputs.go-version }} steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - name: 'Determine Go version' id: get-go-version # We use .go-version as our source of truth for current Go @@ -40,12 +40,12 @@ jobs: # Packer GH Token for API Rate Limiting PACKER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - name: IAM Assume Role - uses: aws-actions/configure-aws-credentials@e1e17a757e536f70e52b5a12b2e8d1d1c60e04ef # v2.0.0 + uses: aws-actions/configure-aws-credentials@5fd3084fc36e372ff1fff382a39b10d03659f355 # v2.2.0 with: role-to-assume: ${{ env.AWS_ROLE_ARN }} aws-region: ${{ env.AWS_REGION }} @@ -70,7 +70,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Send slack notification on failure - uses: slackapi/slack-github-action@007b2c3c751a190b6f0f040e47ed024deaa72844 # v1.23.0 + uses: slackapi/slack-github-action@e28cf165c92ffef168d23c5c9000cffc8a25e117 # v1.24.0 with: payload: | { diff --git a/.github/workflows/auto-close-stale-issues.yml b/.github/workflows/auto-close-stale-issues.yml index 40b04dec196..af4a089df5d 100644 --- a/.github/workflows/auto-close-stale-issues.yml +++ b/.github/workflows/auto-close-stale-issues.yml @@ -14,7 +14,7 @@ jobs: pull-requests: write # for actions/stale to close stale PRs runs-on: ubuntu-latest steps: - - uses: actions/stale@a20b814fb01b71def3bd6f56e7494d667ddf28da # v8.0.0 + - uses: actions/stale@1160a2240286f5da8ec72b1c0816ce2481aabf84 # v8.0.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} days-before-issue-stale: 23 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 657b9c39ebc..b713ef62393 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,7 @@ jobs: outputs: go-version: ${{ steps.get-go-version.outputs.go-version }} steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - name: 'Determine Go version' id: get-go-version # We use .go-version as our source of truth for current Go @@ -44,7 +44,7 @@ jobs: product-prerelease-version: ${{ steps.set-product-version.outputs.prerelease-product-version }} set-ld-flags: ${{ steps.set-ld-flags.outputs.set-ld-flags }} steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - name: set product version id: set-product-version uses: hashicorp/actions-set-product-version@v1 @@ -67,7 +67,7 @@ jobs: filepath: ${{ steps.generate-metadata-file.outputs.filepath }} steps: - name: 'Checkout directory' - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - name: Generate metadata file id: generate-metadata-file uses: hashicorp/actions-generate-metadata@main @@ -105,7 +105,7 @@ jobs: GOPRIVATE: "github.com/hashicorp" GO111MODULE: on steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - name: Go Build env: PRODUCT_VERSION: ${{ needs.set-product-version.outputs.product-version }} @@ -142,7 +142,7 @@ jobs: GO111MODULE: on steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - name: Go Build env: PRODUCT_VERSION: ${{ needs.set-product-version.outputs.product-version }} @@ -204,7 +204,7 @@ jobs: GO111MODULE: on steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - name: Go Build env: PRODUCT_VERSION: ${{ needs.set-product-version.outputs.product-version }} @@ -234,7 +234,7 @@ jobs: env: version: ${{ needs.set-product-version.outputs.product-version }} steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - name: Docker Build (Action) uses: hashicorp/actions-docker-build@v1 with: diff --git a/.github/workflows/check-plugin-docs.yml b/.github/workflows/check-plugin-docs.yml index c43ae9cb33c..00ba2851ef8 100644 --- a/.github/workflows/check-plugin-docs.yml +++ b/.github/workflows/check-plugin-docs.yml @@ -23,9 +23,9 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - name: Setup Node - uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 + uses: actions/setup-node@e33196f7422957bea03ed53f6fbb155025ffc7b8 # v3.7.0 with: node-version: '16.x' - name: Install Dependencies diff --git a/.github/workflows/create-release-branch.yml b/.github/workflows/create-release-branch.yml index 0d1f4f3953c..780087058b7 100644 --- a/.github/workflows/create-release-branch.yml +++ b/.github/workflows/create-release-branch.yml @@ -4,7 +4,7 @@ jobs: create-branch: runs-on: ubuntu-latest steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - uses: hashicorp/actions-create-release-branch@v1 with: token: ${{ secrets.ELEVATED_GITHUB_TOKEN }} diff --git a/.github/workflows/go-test.yml b/.github/workflows/go-test.yml index 93f8eeb1ae8..2f426d16a03 100644 --- a/.github/workflows/go-test.yml +++ b/.github/workflows/go-test.yml @@ -24,7 +24,7 @@ jobs: outputs: go-version: ${{ steps.get-go-version.outputs.go-version }} steps: - - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3.5.0 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - name: 'Determine Go version' id: get-go-version run: | @@ -36,8 +36,8 @@ jobs: runs-on: ubuntu-latest name: Linux go tests steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - run: TESTARGS="-coverprofile=coverage.txt -covermode=atomic" make ci @@ -47,8 +47,8 @@ jobs: runs-on: macos-latest name: Darwin go tests steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - run: go test ./... -coverprofile=coverage.txt -covermode=atomic @@ -58,8 +58,8 @@ jobs: runs-on: windows-latest name: Windows go tests steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - run: go test ./... -coverprofile=coverage.txt -covermode=atomic diff --git a/.github/workflows/go-validate.yml b/.github/workflows/go-validate.yml index d67b3aa5151..a3c45f794ff 100644 --- a/.github/workflows/go-validate.yml +++ b/.github/workflows/go-validate.yml @@ -20,7 +20,7 @@ jobs: outputs: go-version: ${{ steps.get-go-version.outputs.go-version }} steps: - - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3.5.0 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - name: 'Determine Go version' id: get-go-version run: | @@ -32,8 +32,8 @@ jobs: runs-on: ubuntu-latest name: Go Mod Tidy steps: - - uses: actions/checkout@8f4b7f84864484a7bf31766abe9204da3cbe65b3 # v3.5.0 - - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - run: go mod tidy @@ -43,10 +43,10 @@ jobs: runs-on: ubuntu-latest name: Lint steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 with: fetch-depth: 0 - - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 + - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - run: echo "$GITHUB_SHA" @@ -59,8 +59,8 @@ jobs: runs-on: ubuntu-latest name: Fmt check steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - run: make fmt-check @@ -70,8 +70,8 @@ jobs: runs-on: ubuntu-latest name: Generate check steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - - uses: actions/setup-go@4d34df0c2316fe8122ab82dc22947d607c0c91f9 # v4.0.0 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - run: make generate-check diff --git a/.github/workflows/issue-comment-created.yml b/.github/workflows/issue-comment-created.yml index f250dc1f101..e28ac0d0939 100644 --- a/.github/workflows/issue-comment-created.yml +++ b/.github/workflows/issue-comment-created.yml @@ -14,7 +14,7 @@ jobs: issues: write # for actions-ecosystem/action-remove-labels to remove issue labels runs-on: ubuntu-latest steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - uses: actions-ecosystem/action-remove-labels@2ce5d41b4b6aa8503e285553f75ed56e0a40bae0 # v1.3.0 with: github_token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/issue-migrator.yml b/.github/workflows/issue-migrator.yml index 9acc66ee6d4..58eed27f22a 100644 --- a/.github/workflows/issue-migrator.yml +++ b/.github/workflows/issue-migrator.yml @@ -12,7 +12,7 @@ jobs: if: startsWith(github.event.label.name, 'remote-plugin/') runs-on: ubuntu-latest steps: - - uses: bflad/action-migrate-issue@main # TSCCR: no entry for repository "bflad/action-migrate-issue" + - uses: bflad/action-migrate-issue@main # TSCCR: no entry for repository "bflad/action-migrate-issue" with: source-issue-comment: | This issue has been migrated to {target-issue-url} due to the [Packer Plugin split](https://github.com/hashicorp/packer/issues/8610#issuecomment-770034737). diff --git a/.github/workflows/issues-opened.yml b/.github/workflows/issues-opened.yml index 57a8cd0cb65..86adfacef1f 100644 --- a/.github/workflows/issues-opened.yml +++ b/.github/workflows/issues-opened.yml @@ -13,8 +13,8 @@ jobs: issues: write # for github/issue-labeler to create or remove labels runs-on: ubuntu-latest steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 - - uses: github/issue-labeler@e24a3eb6b2e28c8904d086302a2b760647f5f45c # v3.1 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: github/issue-labeler@98b5412841f6c4b0b3d9c29d53c13fad16bd7de2 # v3.2 with: repo-token: "${{ secrets.GITHUB_TOKEN }}" configuration-path: .github/labeler-issue-triage.yml @@ -27,7 +27,7 @@ jobs: if: contains(github.event.issue.labels.*.name, 'question') runs-on: ubuntu-latest steps: - - uses: actions-ecosystem/action-create-comment@v1.0.2 # TSCCR: no entry for repository "actions-ecosystem/action-create-comment" + - uses: actions-ecosystem/action-create-comment@v1.0.2 # TSCCR: no entry for repository "actions-ecosystem/action-create-comment" with: github_token: ${{ secrets.GITHUB_TOKEN }} body: | @@ -39,7 +39,7 @@ jobs: If no activity is taken on this question within 30 days it will be automatically closed. If you find the forum to be more helpful or if you've found the answer to your question elsewhere please feel free to post a response and close the issue. - - uses: actions-ecosystem/action-add-labels@v1.1.3 # TSCCR: no entry for repository "actions-ecosystem/action-add-labels" + - uses: actions-ecosystem/action-add-labels@v1.1.3 # TSCCR: no entry for repository "actions-ecosystem/action-add-labels" with: github_token: ${{ secrets.GITHUB_TOKEN }} labels: needs-reply diff --git a/.github/workflows/jira.yml b/.github/workflows/jira.yml index e0e82a97f01..a0fe240edb6 100644 --- a/.github/workflows/jira.yml +++ b/.github/workflows/jira.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Login - uses: atlassian/gajira-login@45fd029b9f1d6d8926c6f04175aa80c0e42c9026 # v3.0.1 + uses: atlassian/gajira-login@ca13f8850ea309cf44a6e4e0c49d9aa48ac3ca4c # v3 env: JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} @@ -61,7 +61,7 @@ jobs: - name: Create ticket id: create-ticket if: steps.search.outputs.issue == '' && github.event.label.name == 'sync to jira' && steps.set-ticket-type.outputs.type != 'Invalid' - uses: atlassian/gajira-create@59e177c4f6451399df5b4911c2211104f171e669 # v3.0.1 + uses: atlassian/gajira-create@1ff0b6bd115a780592b47bfbb63fc4629132e6ec # v3 with: project: HPR issuetype: "${{ steps.set-ticket-type.outputs.type }}" @@ -74,7 +74,7 @@ jobs: - name: Add tracking comment if: steps.create-ticket.outputs.issue != '' && steps.set-ticket-type.outputs.type != 'Invalid' - uses: actions-ecosystem/action-create-comment@v1.0.0 # TSCCR: no entry for repository "actions-ecosystem/action-create-comment" + uses: actions-ecosystem/action-create-comment@v1.0.0 # TSCCR: no entry for repository "actions-ecosystem/action-create-comment" with: github_token: ${{ secrets.GITHUB_TOKEN }} body: | diff --git a/.github/workflows/lock.yml b/.github/workflows/lock.yml index 77f57ab0a7f..f1f17b35893 100644 --- a/.github/workflows/lock.yml +++ b/.github/workflows/lock.yml @@ -15,7 +15,7 @@ jobs: pull-requests: write # for dessant/lock-threads to lock PRs runs-on: ubuntu-latest steps: - - uses: dessant/lock-threads@c1b35aecc5cdb1a34539d14196df55838bb2f836 # v4.0.0 + - uses: dessant/lock-threads@be8aa5be94131386884a6da4189effda9b14aa21 # v4.0.1 with: github-token: ${{ github.token }} issue-comment: > diff --git a/.github/workflows/nightly-release.yml b/.github/workflows/nightly-release.yml index ea388be057c..72a1ee3503b 100644 --- a/.github/workflows/nightly-release.yml +++ b/.github/workflows/nightly-release.yml @@ -24,7 +24,7 @@ jobs: needs: build-artifacts runs-on: ubuntu-latest steps: - - uses: actions/checkout@8e5e7e5ab8b370d6c329ec480221332ada57f0ab # v3.5.2 + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - name: Download built artifacts uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 with: @@ -38,7 +38,7 @@ jobs: echo "BUILD_OUTPUT_LIST=$(cat tmp2.txt | tr '\n' ',' | perl -ple 'chop')" >> $GITHUB_ENV rm -rf tmp.txt && rm -rf tmp2.txt - name: Advance nightly tag - uses: actions/github-script@ffc2c79a5b2490bd33e0a41c1de74b877714d736 # v3 + uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | @@ -62,7 +62,7 @@ jobs: - name: Create a nightly GitHub prerelease id: create_prerelease continue-on-error: true - uses: ncipollo/release-action@v1 # TSCCR: no entry for repository "ncipollo/release-action" + uses: ncipollo/release-action@a2e71bdd4e7dab70ca26a852f29600c98b33153e # v1.12.0 with: name: nightly artifacts: "${{ env.BUILD_OUTPUT_LIST }}" @@ -85,7 +85,7 @@ jobs: - name: Retry failed nightly GitHub prerelease id: create_prerelease_retry if: steps.create_prerelease.outcome == 'failure' - uses: ncipollo/release-action@v1 # TSCCR: no entry for repository "ncipollo/release-action" + uses: ncipollo/release-action@a2e71bdd4e7dab70ca26a852f29600c98b33153e # v1.12.0 with: name: nightly artifacts: "${{ env.BUILD_OUTPUT_LIST }}" @@ -101,7 +101,7 @@ jobs: run: | echo "prerelease_id=${{ steps.create_prerelease_retry.outputs.id }}" >> $GITHUB_ENV - name: Publish nightly GitHub prerelease - uses: eregon/publish-release@v1 # TSCCR: no entry for repository "eregon/publish-release" + uses: eregon/publish-release@46913fa2b3f7edc7345ae3c17f6d1b093a54916d # v1.0.5 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -117,7 +117,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Send slack notification on failure - uses: slackapi/slack-github-action@007b2c3c751a190b6f0f040e47ed024deaa72844 # v1.23.0 + uses: slackapi/slack-github-action@e28cf165c92ffef168d23c5c9000cffc8a25e117 # v1.24.0 with: payload: | { From 3c4a4f06da67f1f6a472e373dde3b0bb0d7a67e9 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 19 Jul 2023 10:26:27 -0400 Subject: [PATCH 133/381] CHANGELOG: add changelog for Packer 1.9.2 --- CHANGELOG.md | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d04040aa1a8..54fd88302ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,61 @@ -## 1.9.2 (Upcoming) +## 1.9.2 (July 19, 2023) + +### NOTES: + +* Vendored plugins within Packer have not been updated. Plugin releases occur on + a regular basis to address issues and feature requests. + Please note that in an upcoming version of Packer, we will remove the last + bundled plugins from Packer. + Users are encouraged to use `packer init` for HCL2 templates or + `packer plugins install` with legacy JSON templates for installing external + plugins. + +* Packer will now warn when using bundled plugins. This feature will be removed in + a future version of the tool, so this warning is meant to bring awareness of the + upcoming change, and to help users update their environment/templates to be + ready for this. + [GH-12495](https://github.com/hashicorp/packer/pull/12495) + +### BUG FIXES: + +* Fixed a bug with how Packer was discovering plugins: in order to load + plugins, Packer would recursively scan all the known directories in which + we could have installed plugins. This caused unnecessary directory + walks and slowdowns upon invocation. Packer will now only check + for nested plugins within the directories used by commands such as `packer + init`, or `packer plugins install`, or as defined in PACKER_PLUGIN_PATH. + Refer to + [Packer's plugin directory documentation](https://developer.hashicorp.com/packer/docs/configure#packer-s-plugin-directory) + for details on how loading works. + [GH-12414](https://github.com/hashicorp/packer/pull/12414) + +* The `packer init` subcommand now bundles all the missing installed plugins into one + condensed warning, as opposed to one warning per missing plugin. + [GH-12506](https://github.com/hashicorp/packer/pull/12506) + +### PLUGINS: + +* packer-plugin-parallels: The Parallels plugin has been handed over to the Parallels + team. New releases for this plugin are available at + https://github.com/parallels/packer-plugin-parallels. This plugin is is no longer + being bundled in the Packer binary release. Existing references to the + plugin will continue to work but users are advised to update the + `required_plugins` block to use the new plugin source address. + [GH-12476](https://github.com/hashicorp/packer/pull/12476) + ``` + required_plugins { + parallels = { + source = "github.com/parallels/parallels" + version = "~> 1" + } + } + ``` + +### IMPROVEMENTS: + +* The `hcl2_upgrade` subcommand will now add `required_plugins` to the template + generated from JSON for all our officially supported plugins. + [GH-12504](https://github.com/hashicorp/packer/pull/12504) ## 1.9.1 (June 1, 2023) From e3c20e3dc5cb085affe015e14881bfe0aa028e03 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 19 Jul 2023 17:10:21 -0400 Subject: [PATCH 134/381] CHANGELOG: prepare for 1.9.3 --- CHANGELOG.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 54fd88302ef..9c693c7fd3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +## 1.9.3 (Upcoming) + ## 1.9.2 (July 19, 2023) ### NOTES: @@ -5,15 +7,13 @@ * Vendored plugins within Packer have not been updated. Plugin releases occur on a regular basis to address issues and feature requests. Please note that in an upcoming version of Packer, we will remove the last - bundled plugins from Packer. - Users are encouraged to use `packer init` for HCL2 templates or + bundled plugins from Packer. Users are encouraged to use `packer init` for HCL2 templates or `packer plugins install` with legacy JSON templates for installing external plugins. * Packer will now warn when using bundled plugins. This feature will be removed in a future version of the tool, so this warning is meant to bring awareness of the - upcoming change, and to help users update their environment/templates to be - ready for this. + upcoming change, and help users update their templates. [GH-12495](https://github.com/hashicorp/packer/pull/12495) ### BUG FIXES: @@ -37,7 +37,7 @@ * packer-plugin-parallels: The Parallels plugin has been handed over to the Parallels team. New releases for this plugin are available at - https://github.com/parallels/packer-plugin-parallels. This plugin is is no longer + https://github.com/parallels/packer-plugin-parallels. This plugin is no longer being bundled in the Packer binary release. Existing references to the plugin will continue to work but users are advised to update the `required_plugins` block to use the new plugin source address. @@ -53,8 +53,8 @@ ### IMPROVEMENTS: -* The `hcl2_upgrade` subcommand will now add `required_plugins` to the template - generated from JSON for all our officially supported plugins. +* The `hcl2_upgrade` sub-command will now add `required_plugins` to the template + generated from JSON for [official plugins](https://developer.hashicorp.com/packer/plugins#tiers-and-namespaces). [GH-12504](https://github.com/hashicorp/packer/pull/12504) ## 1.9.1 (June 1, 2023) From 02f1d5058718e4494a729ca280d4828f7bd07530 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 18 Jul 2023 21:37:27 +0000 Subject: [PATCH 135/381] build(deps-dev): bump word-wrap from 1.2.3 to 1.2.4 in /website Bumps [word-wrap](https://github.com/jonschlinkert/word-wrap) from 1.2.3 to 1.2.4. - [Release notes](https://github.com/jonschlinkert/word-wrap/releases) - [Commits](https://github.com/jonschlinkert/word-wrap/compare/1.2.3...1.2.4) --- updated-dependencies: - dependency-name: word-wrap dependency-type: indirect ... Signed-off-by: dependabot[bot] --- website/package-lock.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/website/package-lock.json b/website/package-lock.json index b18174e0193..c96a4c2977f 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -13700,9 +13700,9 @@ } }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -24337,9 +24337,9 @@ } }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", + "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", "dev": true }, "wrap-ansi": { From e9e4534321dfc00bd2fe561c5b1cf4c5f8d94323 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 8 Jul 2023 00:16:20 +0000 Subject: [PATCH 136/381] build(deps): bump tough-cookie from 4.0.0 to 4.1.3 in /website Bumps [tough-cookie](https://github.com/salesforce/tough-cookie) from 4.0.0 to 4.1.3. - [Release notes](https://github.com/salesforce/tough-cookie/releases) - [Changelog](https://github.com/salesforce/tough-cookie/blob/master/CHANGELOG.md) - [Commits](https://github.com/salesforce/tough-cookie/compare/v4.0.0...v4.1.3) --- updated-dependencies: - dependency-name: tough-cookie dependency-type: indirect ... Signed-off-by: dependabot[bot] --- website/package-lock.json | 80 ++++++++++++++++++++++++++++++++------- 1 file changed, 66 insertions(+), 14 deletions(-) diff --git a/website/package-lock.json b/website/package-lock.json index c96a4c2977f..fa295779654 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -9851,6 +9851,13 @@ "node": ">=6" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true, + "peer": true + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -10314,6 +10321,13 @@ "dev": true, "peer": true }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "peer": true + }, "node_modules/resolve": { "version": "1.22.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", @@ -12429,24 +12443,25 @@ } }, "node_modules/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dev": true, "peer": true, "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", - "universalify": "^0.1.2" + "universalify": "^0.2.0", + "url-parse": "^1.5.3" }, "engines": { "node": ">=6" } }, "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, "peer": true, "engines": { @@ -13058,6 +13073,17 @@ "dev": true, "peer": true }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "peer": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "node_modules/url-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-5.0.0.tgz", @@ -21357,6 +21383,13 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true, + "peer": true + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -21703,6 +21736,13 @@ "dev": true, "peer": true }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true, + "peer": true + }, "resolve": { "version": "1.22.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", @@ -23372,21 +23412,22 @@ } }, "tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dev": true, "peer": true, "requires": { "psl": "^1.1.33", "punycode": "^2.1.1", - "universalify": "^0.1.2" + "universalify": "^0.2.0", + "url-parse": "^1.5.3" }, "dependencies": { "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, "peer": true } @@ -23846,6 +23887,17 @@ "dev": true, "peer": true }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "peer": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "url-regex": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/url-regex/-/url-regex-5.0.0.tgz", From 739b2acd203f9a506744c5dd9df42a2190171ee8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Dunglas?= Date: Wed, 19 Jul 2023 23:35:26 +0200 Subject: [PATCH 137/381] docs: fix typo (#12493) --- .../templates/hcl_templates/functions/collection/lookup.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/templates/hcl_templates/functions/collection/lookup.mdx b/website/content/docs/templates/hcl_templates/functions/collection/lookup.mdx index a936d02a70c..0eb686063f1 100644 --- a/website/content/docs/templates/hcl_templates/functions/collection/lookup.mdx +++ b/website/content/docs/templates/hcl_templates/functions/collection/lookup.mdx @@ -6,7 +6,7 @@ description: The lookup function retrieves an element value from a map given its # `lookup` Function `lookup` retrieves the value of a single element from a map, given its key. -If the given key does not exist, a the given default value is returned instead. +If the given key does not exist, the given default value is returned instead. ```hcl lookup(map, key, default) From 13ed8d90b3b4ac18461add0a00826d093406ebd0 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 20 Jul 2023 07:37:04 -0400 Subject: [PATCH 138/381] Update github-script action REST calls Breaking changed introduced in actions/github-script@v6. https://github.com/actions/github-script#breaking-changes-in-v5 --- .github/workflows/nightly-release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/nightly-release.yml b/.github/workflows/nightly-release.yml index 72a1ee3503b..e63c05ea30d 100644 --- a/.github/workflows/nightly-release.yml +++ b/.github/workflows/nightly-release.yml @@ -43,7 +43,7 @@ jobs: github-token: ${{ secrets.GITHUB_TOKEN }} script: | try { - await github.git.deleteRef({ + await github.rest.git.deleteRef({ owner: context.repo.owner, repo: context.repo.repo, ref: "tags/nightly" @@ -51,7 +51,7 @@ jobs: } catch (e) { console.log("Warning: The nightly tag doesn't exist yet, so there's nothing to do. Trace: " + e) } - await github.git.createRef({ + await github.rest.git.createRef({ owner: context.repo.owner, repo: context.repo.repo, ref: "refs/tags/nightly", From 682f2e7b6c15a046ff6619c4788904e5031fd6b8 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 21 Jul 2023 17:37:50 -0400 Subject: [PATCH 139/381] .github/workflows: Replace untrusted GHA in repo workflows (#12530) The GHA action used for adding comments or labels to issues untrusted by TSCCR have been replaced with an approved set of actions. The updated workflows use actions/github-script for adding comments or labels to an issue. Related to: https://github.com/hashicorp/security-tsccr/pull/608 --- .github/workflows/issues-opened.yml | 35 ++++++++++++++++++----------- .github/workflows/jira.yml | 16 ++++++++----- 2 files changed, 32 insertions(+), 19 deletions(-) diff --git a/.github/workflows/issues-opened.yml b/.github/workflows/issues-opened.yml index 86adfacef1f..7cc3f4cc5fe 100644 --- a/.github/workflows/issues-opened.yml +++ b/.github/workflows/issues-opened.yml @@ -23,24 +23,33 @@ jobs: name: Redirect to discuss permissions: contents: read - issues: write # for actions-ecosystem/action-create-comment to create comments + issues: write # for actions/github-script to create comments and add labels if: contains(github.event.issue.labels.*.name, 'question') runs-on: ubuntu-latest steps: - - uses: actions-ecosystem/action-create-comment@v1.0.2 # TSCCR: no entry for repository "actions-ecosystem/action-create-comment" + - uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1 with: - github_token: ${{ secrets.GITHUB_TOKEN }} - body: | - Hi 👋 thanks for reaching out. + script: | + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: | + Hi 👋 thanks for reaching out. - For general questions we recommend reaching out to the [community forum](https://discuss.hashicorp.com/c/packer) for greater visibility. - As the GitHub issue tracker is only watched by a small subset of maintainers and is really reserved for bugs and enhancements, you'll have a better chance of finding someone who can help you in the forum. - We'll mark this issue as needs-reply to help inform maintainers that this question is awaiting a response. - If no activity is taken on this question within 30 days it will be automatically closed. + For general questions we recommend reaching out to the [community forum](https://discuss.hashicorp.com/c/packer) for greater visibility. + As the GitHub issue tracker is only watched by a small subset of maintainers and is really reserved for bugs and enhancements, you'll have a better chance of finding someone who can help you in the forum. + We'll mark this issue as needs-reply to help inform maintainers that this question is awaiting a response. + If no activity is taken on this question within 30 days it will be automatically closed. - If you find the forum to be more helpful or if you've found the answer to your question elsewhere please feel free to post a response and close the issue. - - uses: actions-ecosystem/action-add-labels@v1.1.3 # TSCCR: no entry for repository "actions-ecosystem/action-add-labels" + If you find the forum to be more helpful or if you've found the answer to your question elsewhere please feel free to post a response and close the issue. + - uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1 with: - github_token: ${{ secrets.GITHUB_TOKEN }} - labels: needs-reply + script: | + github.rest.issues.addLabels({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + labels: ['needs-reply'] + }) diff --git a/.github/workflows/jira.yml b/.github/workflows/jira.yml index a0fe240edb6..bdb6b8a5ce2 100644 --- a/.github/workflows/jira.yml +++ b/.github/workflows/jira.yml @@ -11,7 +11,7 @@ jobs: sync: name: Sync to JIRA permissions: - issues: write # for actions-ecosytem/action-create-comment + issues: write # for actions/github-script to create comments runs-on: ubuntu-latest steps: - name: Login @@ -74,13 +74,17 @@ jobs: - name: Add tracking comment if: steps.create-ticket.outputs.issue != '' && steps.set-ticket-type.outputs.type != 'Invalid' - uses: actions-ecosystem/action-create-comment@v1.0.0 # TSCCR: no entry for repository "actions-ecosystem/action-create-comment" + uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1 with: - github_token: ${{ secrets.GITHUB_TOKEN }} - body: | - This issue has been synced to JIRA for planning. + script: | + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: | + This issue has been synced to JIRA for planning. - JIRA ID: [${{ steps.create-ticket.outputs.issue }}](https://hashicorp.atlassian.net/browse/${{steps.create-ticket.outputs.issue}}) + JIRA ID: [${{ steps.create-ticket.outputs.issue }}](https://hashicorp.atlassian.net/browse/${{steps.create-ticket.outputs.issue}}) From 2401add228605115f20aea60023ecbf9cd2360ad Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 24 Jul 2023 11:52:57 -0400 Subject: [PATCH 140/381] Fix body attribute for github-script comment --- .github/workflows/issues-opened.yml | 4 ++-- .github/workflows/jira.yml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/issues-opened.yml b/.github/workflows/issues-opened.yml index 7cc3f4cc5fe..c899e9993b3 100644 --- a/.github/workflows/issues-opened.yml +++ b/.github/workflows/issues-opened.yml @@ -34,7 +34,7 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - body: | + body: ` Hi 👋 thanks for reaching out. For general questions we recommend reaching out to the [community forum](https://discuss.hashicorp.com/c/packer) for greater visibility. @@ -42,7 +42,7 @@ jobs: We'll mark this issue as needs-reply to help inform maintainers that this question is awaiting a response. If no activity is taken on this question within 30 days it will be automatically closed. - If you find the forum to be more helpful or if you've found the answer to your question elsewhere please feel free to post a response and close the issue. + If you find the forum to be more helpful or if you've found the answer to your question elsewhere please feel free to post a response and close the issue.` - uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1 with: script: | diff --git a/.github/workflows/jira.yml b/.github/workflows/jira.yml index bdb6b8a5ce2..70ae2c562c1 100644 --- a/.github/workflows/jira.yml +++ b/.github/workflows/jira.yml @@ -81,10 +81,10 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - body: | + body: ` This issue has been synced to JIRA for planning. - JIRA ID: [${{ steps.create-ticket.outputs.issue }}](https://hashicorp.atlassian.net/browse/${{steps.create-ticket.outputs.issue}}) + JIRA ID: [${{ steps.create-ticket.outputs.issue }}](https://hashicorp.atlassian.net/browse/${{steps.create-ticket.outputs.issue}})` From a1957a1deff6b71f0905e6a4f1f8b565bc79dd3f Mon Sep 17 00:00:00 2001 From: "hashicorp-copywrite[bot]" <110428419+hashicorp-copywrite[bot]@users.noreply.github.com> Date: Mon, 24 Jul 2023 16:03:29 +0000 Subject: [PATCH 141/381] [COMPLIANCE] Add Copyright and License Headers --- acctest/plugin/bundled_plugin_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/acctest/plugin/bundled_plugin_test.go b/acctest/plugin/bundled_plugin_test.go index e9308a59869..9f21dfac626 100644 --- a/acctest/plugin/bundled_plugin_test.go +++ b/acctest/plugin/bundled_plugin_test.go @@ -1,3 +1,6 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: MPL-2.0 + package plugin import ( From 74b5c2aa56e4cccd227f96a3cd36f66261f86b76 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 30 May 2023 13:56:00 -0400 Subject: [PATCH 142/381] issue-comment-created: Add guard for labels The action currently fails when trying to remove the stale or waiting-reply labels from issues that do not actually contain the labels in question. This update adds a guard clause to only run the action on issues containing at least one of the labels. --- .github/workflows/issue-comment-created.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/issue-comment-created.yml b/.github/workflows/issue-comment-created.yml index e28ac0d0939..a5c112d2a15 100644 --- a/.github/workflows/issue-comment-created.yml +++ b/.github/workflows/issue-comment-created.yml @@ -12,6 +12,7 @@ jobs: permissions: contents: read # for actions/checkout to fetch code issues: write # for actions-ecosystem/action-remove-labels to remove issue labels + if: ${{contains(github.event.issue.labels.*.name, 'waiting-reply') || contains(github.event.issue.labels.*.name, 'stale')}} runs-on: ubuntu-latest steps: - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 From 55decee2427dc438213688db46d507b5f1caa981 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Mon, 24 Jul 2023 14:01:28 -0400 Subject: [PATCH 143/381] .github: fix issues-opened.yml workflow This commit fixes a bug with the first script, as the object passed to the REST API is not closed properly. --- .github/workflows/issues-opened.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/issues-opened.yml b/.github/workflows/issues-opened.yml index c899e9993b3..565b89af048 100644 --- a/.github/workflows/issues-opened.yml +++ b/.github/workflows/issues-opened.yml @@ -43,6 +43,8 @@ jobs: If no activity is taken on this question within 30 days it will be automatically closed. If you find the forum to be more helpful or if you've found the answer to your question elsewhere please feel free to post a response and close the issue.` + }) + - uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1 with: script: | @@ -51,5 +53,5 @@ jobs: owner: context.repo.owner, repo: context.repo.repo, labels: ['needs-reply'] - }) + }) From 38101a64c9650798cd60ea873227a5828bf1525a Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 19 Jul 2023 12:42:37 -0400 Subject: [PATCH 144/381] hcp: Add support for project level service principals HCP supports two types of service principals: Organization-level and project-level. When a user tries to publish to an active HCP Packer registry using a plsp the client fails when configuring the client due to a API permission error; namely plsp do not have the permissions to query an org for a list of projects. Setting the HCP_PROJECT_ID does not resolve the issue because the call to ListProjects is still executed. This changes updates the client configuration params to obtain both the HCP Organization and Project IDs that will be used for connecting to the HCP Packer registry. With this change if a user provides a project Id via the HCP_PROJECT_ID environment variable no call to ListProjects will be made. Instead the value will be take as is and used to create the connection. A user connecting with a project level service principals must provide a valid HCP_PROJECT_ID in order to connect. --- internal/hcp/api/client.go | 118 +++++++++++++++++++++----------- internal/hcp/api/client_test.go | 4 +- internal/hcp/env/env.go | 4 ++ internal/hcp/env/variables.go | 1 + 4 files changed, 84 insertions(+), 43 deletions(-) diff --git a/internal/hcp/api/client.go b/internal/hcp/api/client.go index 21a07156cc2..89d4a39b489 100644 --- a/internal/hcp/api/client.go +++ b/internal/hcp/api/client.go @@ -7,6 +7,7 @@ package api import ( "fmt" "log" + "net/http" "os" "time" @@ -44,39 +45,67 @@ func NewClient() (*Client, error) { } } - cl, err := httpclient.New(httpclient.Config{ + hcpClientCfg := httpclient.Config{ SourceChannel: fmt.Sprintf("packer/%s", version.PackerVersion.FormattedVersion()), - }) - if err != nil { + } + if err := hcpClientCfg.Canonicalize(); err != nil { return nil, &ClientError{ StatusCode: InvalidClientConfig, Err: err, } } + cl, err := httpclient.New(hcpClientCfg) + if err != nil { + return nil, &ClientError{ + StatusCode: InvalidClientConfig, + Err: err, + } + } client := &Client{ Packer: packerSvc.New(cl, nil), Organization: organizationSvc.New(cl, nil), Project: projectSvc.New(cl, nil), } + //if both HCP_ORGANIZATION_ID and HCP_PROJECT_ID are set via env variables the hcpConfig may have all we need already. + if hcpClientCfg.Profile().OrganizationID != "" && hcpClientCfg.Profile().ProjectID != "" { + client.OrganizationID = hcpClientCfg.Profile().OrganizationID + client.ProjectID = hcpClientCfg.Profile().ProjectID - if err := client.loadOrganizationID(); err != nil { - return nil, &ClientError{ - StatusCode: InvalidClientConfig, - Err: err, - } + return client, nil } - if err := client.loadProjectID(); err != nil { - return nil, &ClientError{ - StatusCode: InvalidClientConfig, - Err: err, + + if client.OrganizationID == "" { + err := client.loadOrganizationID() + if err != nil { + return nil, &ClientError{ + StatusCode: InvalidClientConfig, + Err: err, + } } } + if client.ProjectID == "" { + err := client.loadProjectID() + if err != nil { + return nil, &ClientError{ + StatusCode: InvalidClientConfig, + Err: err, + } + } + } return client, nil } func (c *Client) loadOrganizationID() error { + if c.OrganizationID != "" { + return nil + } + + if env.HasOrganizationID() { + c.OrganizationID = os.Getenv(env.HCPOrganizationID) + return nil + } // Get the organization ID. listOrgParams := organizationSvc.NewOrganizationServiceListParams() listOrgResp, err := c.Organization.OrganizationServiceList(listOrgParams, nil) @@ -92,55 +121,62 @@ func (c *Client) loadOrganizationID() error { } func (c *Client) loadProjectID() error { + if c.ProjectID != "" { + return nil + } + if env.HasProjectID() { + c.ProjectID = os.Getenv(env.HCPProjectID) + return nil + } // Get the project using the organization ID. listProjParams := projectSvc.NewProjectServiceListParams() listProjParams.ScopeID = &c.OrganizationID scopeType := string(rmmodels.HashicorpCloudResourcemanagerResourceIDResourceTypeORGANIZATION) listProjParams.ScopeType = &scopeType listProjResp, err := c.Project.ProjectServiceList(listProjParams, nil) - if err != nil { - return fmt.Errorf("unable to fetch project id: %v", err) - } - - if env.HasProjectID() { - proj, err := findProjectByID(os.Getenv(env.HCPProjectID), listProjResp.Payload.Projects) - if err != nil { - return err - } - c.ProjectID = proj.ID - } else { - if len(listProjResp.Payload.Projects) > 1 { - log.Printf("[WARNING] Multiple HCP projects found, will pick the oldest one by default\n" + - "To specify which project to use, set the HCP_PROJECT_ID environment variable to the one you want to use.") + if err != nil { + //For permission errors our service principle may not have the perms + // to see all projects for an Org; this is the case for project-level service principles. + serviceErr, ok := err.(*projectSvc.ProjectServiceListDefault) + if !ok { + return fmt.Errorf("unable to fetch project list: %v", err) } - - proj, err := findOldestProject(listProjResp.Payload.Projects) - if err != nil { - return err + if serviceErr.Code() == http.StatusForbidden { + return fmt.Errorf("unable to fetch project\n\n"+ + "If the provided credentials are tied to a specific project trying setting the %s environment variable to one you want to use.", env.HCPProjectID) } + } - c.ProjectID = proj.ID + if len(listProjResp.Payload.Projects) > 1 { + log.Printf("[WARNING] Multiple HCP projects found, will pick the oldest one by default\n"+ + "To specify which project to use, set the %s environment variable to the one you want to use.", env.HCPProjectID) } + proj, err := getOldestProject(listProjResp.Payload.Projects) + if err != nil { + return err + } + c.ProjectID = proj.ID return nil } -func findOldestProject(projs []*models.HashicorpCloudResourcemanagerProject) (*models.HashicorpCloudResourcemanagerProject, error) { - if len(projs) == 0 { +// getOldestProject retrieves the oldest project from a list based on its created_at time. +func getOldestProject(projects []*models.HashicorpCloudResourcemanagerProject) (*models.HashicorpCloudResourcemanagerProject, error) { + if len(projects) == 0 { return nil, fmt.Errorf("no project found") } - proj := projs[0] - for i := 1; i < len(projs); i++ { - nxtProj := projs[i] - - if time.Time(nxtProj.CreatedAt).Before(time.Time(proj.CreatedAt)) { - proj = nxtProj + oldestTime := time.Now() + var oldestProj *models.HashicorpCloudResourcemanagerProject + for _, proj := range projects { + projTime := time.Time(proj.CreatedAt) + if projTime.Before(oldestTime) { + oldestProj = proj + oldestTime = projTime } } - - return proj, nil + return oldestProj, nil } func findProjectByID(projID string, projs []*models.HashicorpCloudResourcemanagerProject) (*models.HashicorpCloudResourcemanagerProject, error) { diff --git a/internal/hcp/api/client_test.go b/internal/hcp/api/client_test.go index b1cdbff61c2..466b390b828 100644 --- a/internal/hcp/api/client_test.go +++ b/internal/hcp/api/client_test.go @@ -94,7 +94,7 @@ func TestFindProjectID(t *testing.T) { } } -func TestFindOldestProject(t *testing.T) { +func TestGetOldestProject(t *testing.T) { testcases := []struct { Name string ProjectList []*models.HashicorpCloudResourcemanagerProject @@ -151,7 +151,7 @@ func TestFindOldestProject(t *testing.T) { for _, tt := range testcases { t.Run(tt.Name, func(t *testing.T) { - proj, err := findOldestProject(tt.ProjectList) + proj, err := getOldestProject(tt.ProjectList) if (err != nil) != tt.ExpectErr { t.Errorf("test findProjectByID, expected %t, got %t", tt.ExpectErr, diff --git a/internal/hcp/env/env.go b/internal/hcp/env/env.go index 0cf459015e8..0186be1671f 100644 --- a/internal/hcp/env/env.go +++ b/internal/hcp/env/env.go @@ -13,6 +13,10 @@ func HasProjectID() bool { return hasEnvVar(HCPProjectID) } +func HasOrganizationID() bool { + return hasEnvVar(HCPOrganizationID) +} + func HasClientID() bool { return hasEnvVar(HCPClientID) } diff --git a/internal/hcp/env/variables.go b/internal/hcp/env/variables.go index 71258c13be3..8c74b600d47 100644 --- a/internal/hcp/env/variables.go +++ b/internal/hcp/env/variables.go @@ -7,6 +7,7 @@ const ( HCPClientID = "HCP_CLIENT_ID" HCPClientSecret = "HCP_CLIENT_SECRET" HCPProjectID = "HCP_PROJECT_ID" + HCPOrganizationID = "HCP_ORGANIZATION_ID" HCPPackerRegistry = "HCP_PACKER_REGISTRY" HCPPackerBucket = "HCP_PACKER_BUCKET_NAME" HCPPackerBuildFingerprint = "HCP_PACKER_BUILD_FINGERPRINT" From 60c66fdf9fa0f30986f5b857f4fc69f6a21834dc Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 20 Jul 2023 16:03:43 -0400 Subject: [PATCH 145/381] Add additional validation for manually set project ids When setting a project id via the HCP_PROJECT_ID env the client will try to validate the project by checking that it has an associated registry. If the project is invalid or not a valid UUID an error will be displayed to the user * Add comment to clarify usage of SDK loaded env. variables --- internal/hcp/api/client.go | 48 ++++++++++++------- internal/hcp/api/client_test.go | 83 --------------------------------- 2 files changed, 31 insertions(+), 100 deletions(-) diff --git a/internal/hcp/api/client.go b/internal/hcp/api/client.go index 89d4a39b489..f28999d57b6 100644 --- a/internal/hcp/api/client.go +++ b/internal/hcp/api/client.go @@ -11,6 +11,7 @@ import ( "os" "time" + "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/client/packer_service" packerSvc "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/client/packer_service" organizationSvc "github.com/hashicorp/hcp-sdk-go/clients/cloud-resource-manager/preview/2019-12-10/client/organization_service" projectSvc "github.com/hashicorp/hcp-sdk-go/clients/cloud-resource-manager/preview/2019-12-10/client/project_service" @@ -67,7 +68,12 @@ func NewClient() (*Client, error) { Organization: organizationSvc.New(cl, nil), Project: projectSvc.New(cl, nil), } - //if both HCP_ORGANIZATION_ID and HCP_PROJECT_ID are set via env variables the hcpConfig may have all we need already. + // A client.Config.hcpConfig is set when calling Canonicalize on basic HCP httpclient, as on line 52. + // If a user sets HCP_* env. variables they will be loaded into the client via the SDK and used for any client calls. + // For HCP_ORGANIZATION_ID and HCP_PROJECT_ID if they are both set via env. variables the call to hcpClientCfg.Connicalize() + // will automatically loaded them using the FromEnv configOption. + // + // If both values are set we should have all that we need to continue so we can returned the configured client. if hcpClientCfg.Profile().OrganizationID != "" && hcpClientCfg.Profile().ProjectID != "" { client.OrganizationID = hcpClientCfg.Profile().OrganizationID client.ProjectID = hcpClientCfg.Profile().ProjectID @@ -94,14 +100,11 @@ func NewClient() (*Client, error) { } } } + return client, nil } func (c *Client) loadOrganizationID() error { - if c.OrganizationID != "" { - return nil - } - if env.HasOrganizationID() { c.OrganizationID = os.Getenv(env.HCPOrganizationID) return nil @@ -121,11 +124,12 @@ func (c *Client) loadOrganizationID() error { } func (c *Client) loadProjectID() error { - if c.ProjectID != "" { - return nil - } if env.HasProjectID() { c.ProjectID = os.Getenv(env.HCPProjectID) + err := c.ValidateRegistryForProject() + if err != nil { + return fmt.Errorf("project validation for id %q responded in error: %v", c.ProjectID, err) + } return nil } // Get the project using the organization ID. @@ -136,15 +140,15 @@ func (c *Client) loadProjectID() error { listProjResp, err := c.Project.ProjectServiceList(listProjParams, nil) if err != nil { - //For permission errors our service principle may not have the perms - // to see all projects for an Org; this is the case for project-level service principles. + //For permission errors, our service principal may not have the ability + // to see all projects for an Org; this is the case for project-level service principals. serviceErr, ok := err.(*projectSvc.ProjectServiceListDefault) if !ok { return fmt.Errorf("unable to fetch project list: %v", err) } if serviceErr.Code() == http.StatusForbidden { return fmt.Errorf("unable to fetch project\n\n"+ - "If the provided credentials are tied to a specific project trying setting the %s environment variable to one you want to use.", env.HCPProjectID) + "If the provided credentials are tied to a specific project try setting the %s environment variable to one you want to use.", env.HCPProjectID) } } @@ -179,12 +183,22 @@ func getOldestProject(projects []*models.HashicorpCloudResourcemanagerProject) ( return oldestProj, nil } -func findProjectByID(projID string, projs []*models.HashicorpCloudResourcemanagerProject) (*models.HashicorpCloudResourcemanagerProject, error) { - for _, proj := range projs { - if proj.ID == projID { - return proj, nil - } +// ValidateRegistryForProject validates that there is an active registry associated to the configured organization and project ids. +// A successful validation will result in a nil response. All other response represent an invalid registry error request or a registry not found error. +func (client *Client) ValidateRegistryForProject() error { + params := packer_service.NewPackerServiceGetRegistryParams() + params.LocationOrganizationID = client.OrganizationID + params.LocationProjectID = client.ProjectID + + resp, err := client.Packer.PackerServiceGetRegistry(params, nil) + if err != nil { + return err } - return nil, fmt.Errorf("No project %q found", projID) + if resp.GetPayload().Registry == nil { + return fmt.Errorf("No active HCP Packer registry was found for the organization %q and project %q", client.OrganizationID, client.ProjectID) + } + + return nil + } diff --git a/internal/hcp/api/client_test.go b/internal/hcp/api/client_test.go index 466b390b828..16d321beb77 100644 --- a/internal/hcp/api/client_test.go +++ b/internal/hcp/api/client_test.go @@ -11,89 +11,6 @@ import ( "github.com/hashicorp/hcp-sdk-go/clients/cloud-resource-manager/preview/2019-12-10/models" ) -func TestFindProjectID(t *testing.T) { - testcases := []struct { - Name string - ProjectID string - ProjectList []*models.HashicorpCloudResourcemanagerProject - ExpectProjectID string - ExpectErr bool - }{ - { - "Only one project, project exists, success", - "test-project-exists", - []*models.HashicorpCloudResourcemanagerProject{ - { - ID: "test-project-exists", - }, - }, - "test-project-exists", - false, - }, - { - "Multiple projects, project exists, success", - "test-project-exists", - []*models.HashicorpCloudResourcemanagerProject{ - { - ID: "other-project-exists", - }, - { - ID: "test-project-exists", - }, - }, - "test-project-exists", - false, - }, - { - "One project, no id match, fail", - "test-project-exists", - []*models.HashicorpCloudResourcemanagerProject{ - { - ID: "other-project-exists", - }, - }, - "", - true, - }, - { - "Multiple projects, no id match, fail", - "test-project-exists", - []*models.HashicorpCloudResourcemanagerProject{ - { - ID: "other-project-exists", - }, - { - ID: "yet-another-project-exists", - }, - }, - "", - true, - }, - { - "No projects, no id match, fail", - "test-project-exists", - []*models.HashicorpCloudResourcemanagerProject{}, - "", - true, - }, - } - - for _, tt := range testcases { - t.Run(tt.Name, func(t *testing.T) { - proj, err := findProjectByID(tt.ProjectID, tt.ProjectList) - if (err != nil) != tt.ExpectErr { - t.Errorf("test findProjectByID, expected %t, got %t", - tt.ExpectErr, - err != nil) - } - - if proj != nil && proj.ID != tt.ExpectProjectID { - t.Errorf("expected to select project %q, got %q", tt.ExpectProjectID, proj.ID) - } - }) - } -} - func TestGetOldestProject(t *testing.T) { testcases := []struct { Name string From d0198c8a1714d23b64e82bcf716397c692f7c4d2 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Mon, 24 Jul 2023 15:16:29 -0400 Subject: [PATCH 146/381] packer: track bundled plugins usage on telemetry --- command/meta.go | 2 ++ packer/telemetry.go | 10 +++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/command/meta.go b/command/meta.go index 1579d152237..fb3d9efb2a7 100644 --- a/command/meta.go +++ b/command/meta.go @@ -196,6 +196,8 @@ func (m *Meta) DetectBundledPlugins(handler packer.Handler) hcl.Diagnostics { return nil } + packer.CheckpointReporter.SetBundledUsage() + buf := &strings.Builder{} buf.WriteString("This template relies on the use of plugins bundled into the Packer binary.\n") buf.WriteString("The practice of bundling external plugins into Packer will be removed in an upcoming version.\n\n") diff --git a/packer/telemetry.go b/packer/telemetry.go index d4e20696649..b1f0347b2ba 100644 --- a/packer/telemetry.go +++ b/packer/telemetry.go @@ -26,7 +26,7 @@ const ( JSONTemplate PackerTemplateType = "JSON" ) -const TelemetryVersion string = "beta/packer/6" +const TelemetryVersion string = "beta/packer/7" const TelemetryPanicVersion string = "beta/packer_panic/4" var CheckpointReporter *CheckpointTelemetry @@ -37,6 +37,7 @@ type PackerReport struct { Error string `json:"error"` Command string `json:"command"` TemplateType PackerTemplateType `json:"template_type"` + UseBundled bool `json:"use_bundled"` } type CheckpointTelemetry struct { @@ -44,6 +45,7 @@ type CheckpointTelemetry struct { signatureFile string startTime time.Time templateType PackerTemplateType + useBundled bool } func NewCheckpointReporter(disableSignature bool) *CheckpointTelemetry { @@ -128,6 +130,11 @@ func (c *CheckpointTelemetry) SetTemplateType(t PackerTemplateType) { c.templateType = t } +// SetBundledUsage marks the template as using bundled plugins +func (c *CheckpointTelemetry) SetBundledUsage() { + c.useBundled = true +} + func (c *CheckpointTelemetry) Finalize(command string, errCode int, err error) error { if c == nil { return nil @@ -145,6 +152,7 @@ func (c *CheckpointTelemetry) Finalize(command string, errCode int, err error) e extra.Error = err.Error() } + extra.UseBundled = c.useBundled extra.TemplateType = c.templateType params.Payload = extra // b, _ := json.MarshalIndent(params, "", " ") From 3512a175a6d35cf3311a81a1f1f750bf8281d7d5 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Mon, 24 Jul 2023 11:41:04 -0400 Subject: [PATCH 147/381] command: change wording for init's postitional arg `packer init' is meant to be invoked on a template file or a directory. This was described in the command-line help message as `[template.pkr.hcl|folder]'. Because this is encapsulated between square brackets, this could be taken as an option instead of a positional, mandatory argument. This commit changes the wording to adopt a similar convention as `packer build', so the two are consistent in how they are invoked, and to avoid mistaking this argument as optional. --- command/init.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/command/init.go b/command/init.go index 761627134d6..b95eb86992b 100644 --- a/command/init.go +++ b/command/init.go @@ -180,7 +180,7 @@ packer { func (*InitCommand) Help() string { helpText := ` -Usage: packer init [options] [config.pkr.hcl|folder/] +Usage: packer init [options] TEMPLATE Install all the missing plugins required in a Packer config. Note that Packer does not have a state. From 392232933ff1ef66025d3fd82ac3e353fbaf0356 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Mon, 24 Jul 2023 11:43:31 -0400 Subject: [PATCH 148/381] website: add usage notice to init The `packer init' command's wording was not clear, so it was changed in a preceding commit, and this commit aims to add more details on how the command is meant to be used, along with a simple example. --- website/content/docs/commands/init.mdx | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/website/content/docs/commands/init.mdx b/website/content/docs/commands/init.mdx index 52b72eb8151..e6209d2c15e 100644 --- a/website/content/docs/commands/init.mdx +++ b/website/content/docs/commands/init.mdx @@ -19,6 +19,26 @@ the first command that should be executed when working with a new or existing template. This command is always safe to run multiple times. Though subsequent runs may give errors, this command will never delete anything. +You should invoke `packer init` on either an HCL2 template, or a directory that contains +at least a valid HCL2 template, and eventually other related dependencies like varfiles +for example. + +Example: + +```sh +$ ls . +template.pkr.hcl varfile.pkrvars.pkr.hcl + +$ packer init template.pkr.hcl # You can invoke packer init on a single template in this case + # This works if the template is self-contained, but may fail if + # the template is meant to be built as a bundle of partials. + +$ packer init . # Alternatively, you can invoke packer init on a directory instead, + # which behaves the same in a configuration like this one, but if + # the target is a collection ofHCL2 templates, this is the + # preferred way to invoke it. +``` + Packer does not currently have the notion of a state like Terraform has. In other words, currently `packer init` is only in charge of installing Packer plugins. From 5c9ab19d8fa8467aa2c64d227579c070047ecab2 Mon Sep 17 00:00:00 2001 From: "hashicorp-tsccr[bot]" Date: Thu, 27 Jul 2023 12:40:14 +0000 Subject: [PATCH 149/381] Result of tsccr-helper -log-level=info -pin-all-workflows . --- .github/workflows/issue-migrator.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/issue-migrator.yml b/.github/workflows/issue-migrator.yml index 58eed27f22a..719cfa44f2f 100644 --- a/.github/workflows/issue-migrator.yml +++ b/.github/workflows/issue-migrator.yml @@ -12,7 +12,7 @@ jobs: if: startsWith(github.event.label.name, 'remote-plugin/') runs-on: ubuntu-latest steps: - - uses: bflad/action-migrate-issue@main # TSCCR: no entry for repository "bflad/action-migrate-issue" + - uses: bflad/action-migrate-issue@2e049d822b08e67d25b938343227051518f14d9a # v1.0.2 with: source-issue-comment: | This issue has been migrated to {target-issue-url} due to the [Packer Plugin split](https://github.com/hashicorp/packer/issues/8610#issuecomment-770034737). From d1aa103ebc80bcc2863a7bc61c49245847143b94 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 27 Jul 2023 17:12:17 -0400 Subject: [PATCH 150/381] workflows/jira: Fix syntax error for createComment --- .github/workflows/jira.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/jira.yml b/.github/workflows/jira.yml index 70ae2c562c1..a3fa8cd7ea8 100644 --- a/.github/workflows/jira.yml +++ b/.github/workflows/jira.yml @@ -68,9 +68,7 @@ jobs: summary: "${{ github.event.repository.name }}: ${{ github.event.issue.title }}" description: "${{ github.event.issue.body }}\n\n_Created from GitHub by ${{ github.actor }}._" # The field customfield_10089 refers to the Issue Link field in JIRA. - fields: '{ "customfield_10089": "${{ github.event.issue.html_url }}", - "components": [{ "name": "OSS" }], - "labels": ${{ steps.set-ticket-labels.outputs.labels }} }' + fields: '{ "customfield_10089": "${{ github.event.issue.html_url }}", "components": [{ "name": "OSS" }], "labels": ${{ steps.set-ticket-labels.outputs.labels }} }' - name: Add tracking comment if: steps.create-ticket.outputs.issue != '' && steps.set-ticket-type.outputs.type != 'Invalid' @@ -83,8 +81,6 @@ jobs: repo: context.repo.repo, body: ` This issue has been synced to JIRA for planning. - JIRA ID: [${{ steps.create-ticket.outputs.issue }}](https://hashicorp.atlassian.net/browse/${{steps.create-ticket.outputs.issue}})` - - + }) From d3d33714e6834de18a8a71c44874171ec4093503 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 27 Jul 2023 15:58:29 -0400 Subject: [PATCH 151/381] Update plugin loading for current directory Starting with Go 1.19 the loading of binaries from the current working directory was deemed as a possible security problem. Thus the use of exec.Command or exec.LookPath no longer resolves an executable within the current working directory. This change updates the discover logic to return absolute paths for any discovered plugin, which is called directly when passed to exec.Command or exec.LookPath. By doing this Packer is able to load a custom plugin sitting in the current working directory as it did in version prior to v1.9.2. --- packer/plugin.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packer/plugin.go b/packer/plugin.go index a4321d90fd0..1a6a0ab845c 100644 --- a/packer/plugin.go +++ b/packer/plugin.go @@ -239,7 +239,11 @@ func (c *PluginConfig) discoverSingle(glob string) (map[string]string, error) { pluginName = strings.SplitN(pluginName, "_", 2)[0] log.Printf("[INFO] Discovered potential plugin: %s = %s", pluginName, match) - res[pluginName] = match + pluginPath, err := filepath.Abs(match) + if err != nil { + pluginPath = match + } + res[pluginName] = pluginPath } return res, nil From a96584fb5613106cd106087f7f841fd57ff98cff Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 27 Jul 2023 16:04:34 -0400 Subject: [PATCH 152/381] Update plugin discover logic When copying a plugin's checksum file (packer-plugin-*_SHA256SUM) installed by `packer plugins install` or `packer init` into a separate directory the file may be copied with the executable bit turned out. If unchanged after the copy, Packer would discover the checksum file as a possible plugin match and error when trying to execute describe on the plugin look a like. This change adds a checksum file test to the plugin matching logic. If the discovered plugin name is a checksum it is excluded from the discovered plugin list. --- packer/plugin.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/packer/plugin.go b/packer/plugin.go index 1a6a0ab845c..69f0b631c7d 100644 --- a/packer/plugin.go +++ b/packer/plugin.go @@ -20,6 +20,11 @@ import ( plugingetter "github.com/hashicorp/packer/packer/plugin-getter" ) +var defaultChecksummer = plugingetter.Checksummer{ + Type: "sha256", + Hash: sha256.New(), +} + // PluginConfig helps load and use packer plugins type PluginConfig struct { KnownPluginFolders []string @@ -227,6 +232,14 @@ func (c *PluginConfig) discoverSingle(glob string) (map[string]string, error) { continue } + if strings.Contains(strings.ToUpper(file), defaultChecksummer.FileExt()) { + log.Printf( + "[TRACE] Ignoring plugin match %s, which looks to be a checksum file", + match) + continue + + } + // If the filename has a ".", trim up to there if idx := strings.Index(file, ".exe"); idx >= 0 { file = file[:idx] @@ -383,7 +396,7 @@ func (c *PluginConfig) discoverInstalledComponents(path string) error { APIVersionMajor: pluginsdk.APIVersionMajor, APIVersionMinor: pluginsdk.APIVersionMinor, Checksummers: []plugingetter.Checksummer{ - {Type: "sha256", Hash: sha256.New()}, + defaultChecksummer, }, } From 848039dcdb2a150b0271e044407327e7ec8ec347 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 28 Jul 2023 12:48:02 -0400 Subject: [PATCH 153/381] Update plugin discover testing * Add test case for loading plugin in CWD * Add test case to validate checksume files are ignored * Update Discover to include CWD "." in PluginFolders if KnowPluginFolders is unset --- packer/plugin.go | 3 +- packer/plugin_discover_test.go | 424 +++++++++++++++++++-------------- 2 files changed, 244 insertions(+), 183 deletions(-) diff --git a/packer/plugin.go b/packer/plugin.go index 69f0b631c7d..dd3e6d31719 100644 --- a/packer/plugin.go +++ b/packer/plugin.go @@ -85,7 +85,8 @@ func (c *PluginConfig) Discover() error { } if len(c.KnownPluginFolders) == 0 { - c.KnownPluginFolders = PluginFolders() + //PluginFolders should match the call in github.com/hahicorp/packer/main.go#loadConfig + c.KnownPluginFolders = PluginFolders(".") } // TODO after JSON is deprecated remove support for legacy component plugins. diff --git a/packer/plugin_discover_test.go b/packer/plugin_discover_test.go index 91e8ba6b318..fec52607d83 100644 --- a/packer/plugin_discover_test.go +++ b/packer/plugin_discover_test.go @@ -154,6 +154,233 @@ func TestDiscoverDatasource(t *testing.T) { } } +func TestMultiPlugin_describe(t *testing.T) { + createMockPlugins(t, mockPlugins) + pluginDir := os.Getenv("PACKER_PLUGIN_PATH") + defer os.RemoveAll(pluginDir) + c := PluginConfig{} + err := c.Discover() + if err != nil { + t.Fatalf("error discovering plugins; %s", err.Error()) + } + + for mockPluginName, plugin := range mockPlugins { + for mockBuilderName := range plugin.Builders { + expectedBuilderName := mockPluginName + "-" + mockBuilderName + + if !c.Builders.Has(expectedBuilderName) { + t.Fatalf("expected to find builder %q", expectedBuilderName) + } + } + for mockProvisionerName := range plugin.Provisioners { + expectedProvisionerName := mockPluginName + "-" + mockProvisionerName + if !c.Provisioners.Has(expectedProvisionerName) { + t.Fatalf("expected to find builder %q", expectedProvisionerName) + } + } + for mockPostProcessorName := range plugin.PostProcessors { + expectedPostProcessorName := mockPluginName + "-" + mockPostProcessorName + if !c.PostProcessors.Has(expectedPostProcessorName) { + t.Fatalf("expected to find post-processor %q", expectedPostProcessorName) + } + } + for mockDatasourceName := range plugin.Datasources { + expectedDatasourceName := mockPluginName + "-" + mockDatasourceName + if !c.DataSources.Has(expectedDatasourceName) { + t.Fatalf("expected to find datasource %q", expectedDatasourceName) + } + } + } +} + +func TestMultiPlugin_describe_installed(t *testing.T) { + createMockInstalledPlugins(t, mockInstalledPlugins, createMockChecksumFile) + pluginDir := os.Getenv("PACKER_PLUGIN_PATH") + defer os.RemoveAll(pluginDir) + + c := PluginConfig{} + err := c.Discover() + if err != nil { + t.Fatalf("error discovering plugins; %s", err.Error()) + } + + for mockPluginName, plugin := range mockInstalledPlugins { + mockPluginName = strings.Split(mockPluginName, "_")[0] + for mockBuilderName := range plugin.Builders { + expectedBuilderName := mockPluginName + "-" + mockBuilderName + if !c.Builders.Has(expectedBuilderName) { + t.Fatalf("expected to find builder %q", expectedBuilderName) + } + } + for mockProvisionerName := range plugin.Provisioners { + expectedProvisionerName := mockPluginName + "-" + mockProvisionerName + if !c.Provisioners.Has(expectedProvisionerName) { + t.Fatalf("expected to find builder %q", expectedProvisionerName) + } + } + for mockPostProcessorName := range plugin.PostProcessors { + expectedPostProcessorName := mockPluginName + "-" + mockPostProcessorName + if !c.PostProcessors.Has(expectedPostProcessorName) { + t.Fatalf("expected to find post-processor %q", expectedPostProcessorName) + } + } + for mockDatasourceName := range plugin.Datasources { + expectedDatasourceName := mockPluginName + "-" + mockDatasourceName + if !c.DataSources.Has(expectedDatasourceName) { + t.Fatalf("expected to find datasource %q", expectedDatasourceName) + } + } + } +} + +func TestMultiPlugin_describe_installed_for_invalid(t *testing.T) { + tc := []struct { + desc string + installedPluginsMock map[string]pluginsdk.Set + createMockFn func(*testing.T, map[string]pluginsdk.Set) + }{ + { + desc: "Incorrectly named plugins", + installedPluginsMock: invalidInstalledPluginsMock, + createMockFn: func(t *testing.T, mocks map[string]pluginsdk.Set) { + createMockInstalledPlugins(t, mocks, createMockChecksumFile) + }, + }, + { + desc: "Plugins missing checksums", + installedPluginsMock: mockInstalledPlugins, + createMockFn: func(t *testing.T, mocks map[string]pluginsdk.Set) { + createMockInstalledPlugins(t, mocks) + }, + }, + } + + for _, tt := range tc { + t.Run(tt.desc, func(t *testing.T) { + tt.createMockFn(t, tt.installedPluginsMock) + pluginDir := os.Getenv("PACKER_PLUGIN_PATH") + defer os.RemoveAll(pluginDir) + + c := PluginConfig{} + err := c.Discover() + if err != nil { + t.Fatalf("error discovering plugins; %s", err.Error()) + } + if c.Builders.Has("feather") { + t.Fatalf("expected to not find builder %q", "feather") + } + for mockPluginName, plugin := range tt.installedPluginsMock { + mockPluginName = strings.Split(mockPluginName, "_")[0] + for mockBuilderName := range plugin.Builders { + expectedBuilderName := mockPluginName + "-" + mockBuilderName + if c.Builders.Has(expectedBuilderName) { + t.Fatalf("expected to not find builder %q", expectedBuilderName) + } + } + for mockProvisionerName := range plugin.Provisioners { + expectedProvisionerName := mockPluginName + "-" + mockProvisionerName + if c.Provisioners.Has(expectedProvisionerName) { + t.Fatalf("expected to not find builder %q", expectedProvisionerName) + } + } + for mockPostProcessorName := range plugin.PostProcessors { + expectedPostProcessorName := mockPluginName + "-" + mockPostProcessorName + if c.PostProcessors.Has(expectedPostProcessorName) { + t.Fatalf("expected to not find post-processor %q", expectedPostProcessorName) + } + } + for mockDatasourceName := range plugin.Datasources { + expectedDatasourceName := mockPluginName + "-" + mockDatasourceName + if c.DataSources.Has(expectedDatasourceName) { + t.Fatalf("expected to not find datasource %q", expectedDatasourceName) + } + } + } + }) + } +} + +func TestMultiPlugin_defaultName(t *testing.T) { + createMockPlugins(t, defaultNameMock) + pluginDir := os.Getenv("PACKER_PLUGIN_PATH") + defer os.RemoveAll(pluginDir) + + c := PluginConfig{} + err := c.Discover() + if err != nil { + t.Fatalf("error discovering plugins; %s ; mocks are %#v", err.Error(), defaultNameMock) + } + + expectedBuilderNames := []string{"foo-bar", "foo-baz", "foo"} + for _, mockBuilderName := range expectedBuilderNames { + if !c.Builders.Has(mockBuilderName) { + t.Fatalf("expected to find builder %q; builders is %#v", mockBuilderName, c.Builders) + } + } +} + +// no T.Parallel using os.Chdir +func TestMultiPlugin_CWD(t *testing.T) { + createMockPlugins(t, defaultNameMock) + pluginDir := os.Getenv("PACKER_PLUGIN_PATH") + defer os.RemoveAll(pluginDir) + // Unset PACKER_PLUGIN_PATH to test CWD loading + os.Unsetenv("PACKER_PLUGIN_PATH") + if err := os.Chdir(pluginDir); err != nil { + t.Fatalf("failed to change directory to test loading from CWD: %s", err) + } + c := PluginConfig{} + err := c.Discover() + if err != nil { + t.Fatalf("error discovering plugins; %s ; mocks are %#v", err.Error(), defaultNameMock) + } + expectedBuilderNames := []string{"foo-bar", "foo-baz", "foo"} + for _, mockBuilderName := range expectedBuilderNames { + if !c.Builders.Has(mockBuilderName) { + t.Fatalf("expected to find builder %q; builders is %#v", mockBuilderName, c.Builders) + } + } +} + +func TestMultiPlugin_IgnoreChecksumFile(t *testing.T) { + createMockPlugins(t, defaultNameMock) + pluginDir := os.Getenv("PACKER_PLUGIN_PATH") + defer os.RemoveAll(pluginDir) + + csFile, err := generateMockChecksumFile(filepath.Join(pluginDir, "packer-plugin-foo")) + if err != nil { + t.Fatal(err.Error()) + } + // Copy plugin contents into checksum file to validate that it is not only skipped but that it never gets loaded + if err := os.Rename(filepath.Join(pluginDir, "packer-plugin-foo"), csFile); err != nil { + t.Fatalf("failed to rename plugin bin file to checkfum file needed for test: %s", err) + } + + c := PluginConfig{} + err = c.Discover() + if err != nil { + t.Fatalf("error discovering plugins; %s ; mocks are %#v", err.Error(), defaultNameMock) + } + expectedBuilderNames := []string{"foo-bar", "foo-baz", "foo"} + for _, mockBuilderName := range expectedBuilderNames { + if c.Builders.Has(mockBuilderName) { + t.Fatalf("expected to not find builder %q; builders is %#v", mockBuilderName, c.Builders) + } + } +} + +func TestMultiPlugin_defaultName_each_plugin_type(t *testing.T) { + createMockPlugins(t, doubleDefaultMock) + pluginDir := os.Getenv("PACKER_PLUGIN_PATH") + defer os.RemoveAll(pluginDir) + + c := PluginConfig{} + err := c.Discover() + if err != nil { + t.Fatal("Should not have error because pluginsdk.DEFAULT_NAME is used twice but only once per plugin type.") + } +} + func generateFakePlugins(dirname string, pluginNames []string) (string, []string, func(), error) { dir, err := os.MkdirTemp("", dirname) if err != nil { @@ -296,6 +523,15 @@ func createMockPlugins(t *testing.T, plugins map[string]pluginsdk.Set) { } func createMockChecksumFile(t testing.TB, filePath string) { + t.Helper() + cs, err := generateMockChecksumFile(filePath) + if err != nil { + t.Fatalf(err.Error()) + } + t.Logf("created fake plugin checksum file %s", cs) +} + +func generateMockChecksumFile(filePath string) (string, error) { cs := plugingetter.Checksummer{ Type: "sha256", Hash: sha256.New(), @@ -303,19 +539,20 @@ func createMockChecksumFile(t testing.TB, filePath string) { f, err := os.Open(filePath) if err != nil { - t.Fatalf("failed to open fake plugin binary: %v", err) + return "", fmt.Errorf("failed to open fake plugin binary: %v", err) } defer f.Close() sum, err := cs.Sum(f) if err != nil { - t.Fatalf("failed to checksum fake plugin binary: %v", err) + return "", fmt.Errorf("failed to checksum fake plugin binary: %v", err) } - t.Logf("creating fake plugin checksum file %s with contents %x", filePath+cs.FileExt(), string(sum)) - if err := os.WriteFile(filePath+cs.FileExt(), []byte(fmt.Sprintf("%x", sum)), os.ModePerm); err != nil { - t.Fatalf("failed to write checksum fake plugin binary: %v", err) + sumfile := filePath + cs.FileExt() + if err := os.WriteFile(sumfile, []byte(fmt.Sprintf("%x", sum)), os.ModePerm); err != nil { + return "", fmt.Errorf("failed to write checksum fake plugin binary: %v", err) } + return sumfile, nil } func createMockInstalledPlugins(t *testing.T, plugins map[string]pluginsdk.Set, opts ...func(tb testing.TB, filePath string)) { @@ -461,180 +698,3 @@ var ( }, } ) - -func Test_multiplugin_describe(t *testing.T) { - createMockPlugins(t, mockPlugins) - pluginDir := os.Getenv("PACKER_PLUGIN_PATH") - defer os.RemoveAll(pluginDir) - c := PluginConfig{} - err := c.Discover() - if err != nil { - t.Fatalf("error discovering plugins; %s", err.Error()) - } - - for mockPluginName, plugin := range mockPlugins { - for mockBuilderName := range plugin.Builders { - expectedBuilderName := mockPluginName + "-" + mockBuilderName - - if !c.Builders.Has(expectedBuilderName) { - t.Fatalf("expected to find builder %q", expectedBuilderName) - } - } - for mockProvisionerName := range plugin.Provisioners { - expectedProvisionerName := mockPluginName + "-" + mockProvisionerName - if !c.Provisioners.Has(expectedProvisionerName) { - t.Fatalf("expected to find builder %q", expectedProvisionerName) - } - } - for mockPostProcessorName := range plugin.PostProcessors { - expectedPostProcessorName := mockPluginName + "-" + mockPostProcessorName - if !c.PostProcessors.Has(expectedPostProcessorName) { - t.Fatalf("expected to find post-processor %q", expectedPostProcessorName) - } - } - for mockDatasourceName := range plugin.Datasources { - expectedDatasourceName := mockPluginName + "-" + mockDatasourceName - if !c.DataSources.Has(expectedDatasourceName) { - t.Fatalf("expected to find datasource %q", expectedDatasourceName) - } - } - } -} - -func Test_multiplugin_describe_installed(t *testing.T) { - createMockInstalledPlugins(t, mockInstalledPlugins, createMockChecksumFile) - pluginDir := os.Getenv("PACKER_PLUGIN_PATH") - defer os.RemoveAll(pluginDir) - - c := PluginConfig{} - err := c.Discover() - if err != nil { - t.Fatalf("error discovering plugins; %s", err.Error()) - } - - for mockPluginName, plugin := range mockInstalledPlugins { - mockPluginName = strings.Split(mockPluginName, "_")[0] - for mockBuilderName := range plugin.Builders { - expectedBuilderName := mockPluginName + "-" + mockBuilderName - if !c.Builders.Has(expectedBuilderName) { - t.Fatalf("expected to find builder %q", expectedBuilderName) - } - } - for mockProvisionerName := range plugin.Provisioners { - expectedProvisionerName := mockPluginName + "-" + mockProvisionerName - if !c.Provisioners.Has(expectedProvisionerName) { - t.Fatalf("expected to find builder %q", expectedProvisionerName) - } - } - for mockPostProcessorName := range plugin.PostProcessors { - expectedPostProcessorName := mockPluginName + "-" + mockPostProcessorName - if !c.PostProcessors.Has(expectedPostProcessorName) { - t.Fatalf("expected to find post-processor %q", expectedPostProcessorName) - } - } - for mockDatasourceName := range plugin.Datasources { - expectedDatasourceName := mockPluginName + "-" + mockDatasourceName - if !c.DataSources.Has(expectedDatasourceName) { - t.Fatalf("expected to find datasource %q", expectedDatasourceName) - } - } - } -} - -func Test_multiplugin_describe_installed_for_invalid(t *testing.T) { - tc := []struct { - desc string - installedPluginsMock map[string]pluginsdk.Set - createMockFn func(*testing.T, map[string]pluginsdk.Set) - }{ - { - desc: "Incorrectly named plugins", - installedPluginsMock: invalidInstalledPluginsMock, - createMockFn: func(t *testing.T, mocks map[string]pluginsdk.Set) { - createMockInstalledPlugins(t, mocks, createMockChecksumFile) - }, - }, - { - desc: "Plugins missing checksums", - installedPluginsMock: mockInstalledPlugins, - createMockFn: func(t *testing.T, mocks map[string]pluginsdk.Set) { - createMockInstalledPlugins(t, mocks) - }, - }, - } - - for _, tt := range tc { - t.Run(tt.desc, func(t *testing.T) { - tt.createMockFn(t, tt.installedPluginsMock) - pluginDir := os.Getenv("PACKER_PLUGIN_PATH") - defer os.RemoveAll(pluginDir) - - c := PluginConfig{} - err := c.Discover() - if err != nil { - t.Fatalf("error discovering plugins; %s", err.Error()) - } - if c.Builders.Has("feather") { - t.Fatalf("expected to not find builder %q", "feather") - } - for mockPluginName, plugin := range tt.installedPluginsMock { - mockPluginName = strings.Split(mockPluginName, "_")[0] - for mockBuilderName := range plugin.Builders { - expectedBuilderName := mockPluginName + "-" + mockBuilderName - if c.Builders.Has(expectedBuilderName) { - t.Fatalf("expected to not find builder %q", expectedBuilderName) - } - } - for mockProvisionerName := range plugin.Provisioners { - expectedProvisionerName := mockPluginName + "-" + mockProvisionerName - if c.Provisioners.Has(expectedProvisionerName) { - t.Fatalf("expected to not find builder %q", expectedProvisionerName) - } - } - for mockPostProcessorName := range plugin.PostProcessors { - expectedPostProcessorName := mockPluginName + "-" + mockPostProcessorName - if c.PostProcessors.Has(expectedPostProcessorName) { - t.Fatalf("expected to not find post-processor %q", expectedPostProcessorName) - } - } - for mockDatasourceName := range plugin.Datasources { - expectedDatasourceName := mockPluginName + "-" + mockDatasourceName - if c.DataSources.Has(expectedDatasourceName) { - t.Fatalf("expected to not find datasource %q", expectedDatasourceName) - } - } - } - }) - } -} - -func Test_multiplugin_defaultName(t *testing.T) { - createMockPlugins(t, defaultNameMock) - pluginDir := os.Getenv("PACKER_PLUGIN_PATH") - defer os.RemoveAll(pluginDir) - - c := PluginConfig{} - err := c.Discover() - if err != nil { - t.Fatalf("error discovering plugins; %s ; mocks are %#v", err.Error(), defaultNameMock) - } - - expectedBuilderNames := []string{"foo-bar", "foo-baz", "foo"} - for _, mockBuilderName := range expectedBuilderNames { - if !c.Builders.Has(mockBuilderName) { - t.Fatalf("expected to find builder %q; builders is %#v", mockBuilderName, c.Builders) - } - } -} - -func Test_only_one_multiplugin_defaultName_each_plugin_type(t *testing.T) { - createMockPlugins(t, doubleDefaultMock) - pluginDir := os.Getenv("PACKER_PLUGIN_PATH") - defer os.RemoveAll(pluginDir) - - c := PluginConfig{} - err := c.Discover() - if err != nil { - t.Fatal("Should not have error because pluginsdk.DEFAULT_NAME is used twice but only once per plugin type.") - } -} From 99c79ecbd6b0fa25ead81a0693429b1b4c764263 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 2 Aug 2023 15:34:06 -0400 Subject: [PATCH 154/381] Add build tags to skip amd64 tests on darwin/arm64 (#12549) --- command/init_test.go | 2 ++ command/plugins_install_test.go | 2 ++ command/plugins_remove_test.go | 2 ++ 3 files changed, 6 insertions(+) diff --git a/command/init_test.go b/command/init_test.go index 7f35d3f4cc5..8a10cbb0c73 100644 --- a/command/init_test.go +++ b/command/init_test.go @@ -1,6 +1,8 @@ // Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 +//go:build amd64 && (darwin || windows || linux) + package command import ( diff --git a/command/plugins_install_test.go b/command/plugins_install_test.go index 577d8b3f776..7f34cb5dddd 100644 --- a/command/plugins_install_test.go +++ b/command/plugins_install_test.go @@ -1,6 +1,8 @@ // Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 +//go:build amd64 && (darwin || windows || linux) + package command import ( diff --git a/command/plugins_remove_test.go b/command/plugins_remove_test.go index 41104db7146..83b2463bc02 100644 --- a/command/plugins_remove_test.go +++ b/command/plugins_remove_test.go @@ -1,6 +1,8 @@ // Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 +//go:build amd64 && (darwin || windows || linux) + package command import ( From b29abbcd8c9364a721fab8be6aac331e26d4b744 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Thu, 20 Jul 2023 15:53:52 -0400 Subject: [PATCH 155/381] Dockerfile: remove trailing whitespaces --- Dockerfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 75acdcd3450..5724076b480 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,13 +2,13 @@ # SPDX-License-Identifier: MPL-2.0 # ======================================================================== -# +# # This Dockerfile contains multiple targets. # Use 'docker build --target= .' to build one. # e.g. `docker build --target=release-light .` # -# All non-dev targets have a PRODUCT_VERSION argument that must be provided -# via --build-arg=PRODUCT_VERSION= when building. +# All non-dev targets have a PRODUCT_VERSION argument that must be provided +# via --build-arg=PRODUCT_VERSION= when building. # e.g. --build-arg PRODUCT_VERSION=1.11.2 # # For local dev and testing purposes, please build and use the `dev` docker image. @@ -28,7 +28,7 @@ COPY bin/packer /bin/packer ENTRYPOINT ["/bin/packer"] -# Official docker image that includes binaries from releases.hashicorp.com. +# Official docker image that includes binaries from releases.hashicorp.com. # This downloads the release from releases.hashicorp.com and therefore requires that # the release is published before building the Docker image. FROM docker.mirror.hashicorp.services/alpine:latest as official @@ -79,7 +79,7 @@ ENTRYPOINT ["/bin/packer"] # Light docker image which can be used to run the binary from a container. -# This image builds from the locally generated binary in ./bin/, and from CI-built binaries within CI. +# This image builds from the locally generated binary in ./bin/, and from CI-built binaries within CI. # To generate the local binary, run `make dev`. # This image is published to DockerHub under the `light`, `light-$VERSION`, and `latest` tags. FROM docker.mirror.hashicorp.services/alpine:latest as release-light From ffe277677063c1d5e3711e693ad3baeb80f43c7d Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 21 Jul 2023 11:38:29 -0400 Subject: [PATCH 156/381] README: fix link to CONTRIBUTING Since the main branch is not called master anymore, and the anchor was renamed, we fix both these changes in the link to that page from the README. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index af75e1ed95b..c6a6703d72a 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ key points. First, [download a pre-built Packer binary](https://www.packer.io/downloads.html) for your operating system or [compile Packer -yourself](https://github.com/hashicorp/packer/blob/master/.github/CONTRIBUTING.md#setting-up-go-to-work-on-packer). +yourself](https://github.com/hashicorp/packer/blob/main/.github/CONTRIBUTING.md#setting-up-go). After Packer is installed, create your first template, which tells Packer what platforms to build images for and how you want to build them. In our From 838736982c6248bd47c631f01f16e8f57ee716d6 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 21 Jul 2023 11:39:25 -0400 Subject: [PATCH 157/381] Dockerfile: add release-full target In addition to the `release-light' target, we add a `release_full' target to the Dockerfile, so that we can ship an image of Packer with the official plugins pre-bundled in their latest version. --- Dockerfile | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/Dockerfile b/Dockerfile index 5724076b480..d50c96ebcf0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -104,6 +104,24 @@ COPY dist/$TARGETOS/$TARGETARCH/$BIN_NAME /bin/ ENTRYPOINT ["/bin/packer"] +# Full docker image which can be used to run the binary from a container. +# This image is essentially the same as the `release-light` one, but embeds +# the official plugins in it. +FROM release-light as release-full + +# Install the latest version of the official plugins +RUN /bin/packer plugins install "github.com/hashicorp/amazon" && \ + /bin/packer plugins install "github.com/hashicorp/ansible" && \ + /bin/packer plugins install "github.com/hashicorp/azure" && \ + /bin/packer plugins install "github.com/hashicorp/docker" && \ + /bin/packer plugins install "github.com/hashicorp/googlecompute" && \ + /bin/packer plugins install "github.com/hashicorp/qemu" && \ + /bin/packer plugins install "github.com/hashicorp/vagrant" && \ + /bin/packer plugins install "github.com/hashicorp/virtualbox" && \ + /bin/packer plugins install "github.com/hashicorp/vmware" && \ + /bin/packer plugins install "github.com/hashicorp/vsphere" + +ENTRYPOINT ["/bin/packer"] # Set default target to 'dev'. FROM dev From c6da7777150b7751b8f4a968180dfe71305093d7 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 21 Jul 2023 11:43:39 -0400 Subject: [PATCH 158/381] workflows: add docker-full to build workflow --- .github/workflows/build.yml | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b713ef62393..a756fc56013 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -222,7 +222,7 @@ jobs: instructions: |- go build -o "$BIN_PATH" -ldflags="$LD_FLAGS" -tags netcgo -trimpath -buildvcs=false - build-docker: + build-docker-light: name: Docker light ${{ matrix.arch }} build needs: - set-product-version @@ -251,3 +251,31 @@ jobs: dev_tags: | docker.io/hashicorppreview/${{ env.REPO_NAME }}:${{ env.version }} docker.io/hashicorppreview/${{ env.REPO_NAME }}:${{ env.version }}-${{ github.sha }} + + build-docker-full: + name: Docker full ${{ matrix.arch }} build + needs: + - set-product-version + - build-linux + runs-on: ubuntu-latest + strategy: + matrix: + arch: [ "arm", "arm64", "386", "amd64" ] + env: + version: ${{ needs.set-product-version.outputs.product-version }} + steps: + - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - name: Docker Build (Action) + uses: hashicorp/actions-docker-build@v1 + with: + version: ${{ env.version }} + target: release-full + arch: ${{ matrix.arch }} + tags: | + docker.io/hashicorp/${{ env.REPO_NAME }}:full + docker.io/hashicorp/${{ env.REPO_NAME }}:full-${{ env.version }} + public.ecr.aws/hashicorp/${{ env.REPO_NAME }}:full + public.ecr.aws/hashicorp/${{ env.REPO_NAME }}:full-${{ env.version }} + dev_tags: | + docker.io/hashicorppreview/${{ env.REPO_NAME }}:full-${{ env.version }} + docker.io/hashicorppreview/${{ env.REPO_NAME }}:full-${{ env.version }}-${{ github.sha }} From 55854f55377872adddb9d017a800fe33a8a0fb0e Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 25 Jul 2023 11:40:46 -0400 Subject: [PATCH 159/381] Makefile: only build dev version of binary/docker The Docker images release-light and release-full are not to be built locally from a dev build, but from a release, and the commands to build those images are only referenced in CI, so we don't need to ship them as part of the makefile. In addition, those images are not straightforward to build from the Makefile, as they require quite a few things from the environment, as well as the binary installed in a specific location, which is never setup by the rest of the Makefile. Therefore, we opted to simplify the Makefile so that it only builds docker-dev for local use. --- Dockerfile | 51 --------------------------------------------------- Makefile | 35 ++++++++--------------------------- 2 files changed, 8 insertions(+), 78 deletions(-) diff --git a/Dockerfile b/Dockerfile index d50c96ebcf0..1b5ae54e942 100644 --- a/Dockerfile +++ b/Dockerfile @@ -27,57 +27,6 @@ COPY bin/packer /bin/packer ENTRYPOINT ["/bin/packer"] - -# Official docker image that includes binaries from releases.hashicorp.com. -# This downloads the release from releases.hashicorp.com and therefore requires that -# the release is published before building the Docker image. -FROM docker.mirror.hashicorp.services/alpine:latest as official - -# This is the release of Packer to pull in. -ARG PRODUCT_VERSION - -LABEL name="Packer" \ - maintainer="HashiCorp Packer Team " \ - vendor="HashiCorp" \ - version=$PRODUCT_VERSION \ - release=$PRODUCT_VERSION \ - summary="Packer is a tool for creating identical machine images for multiple platforms from a single source configuration." \ - description="Packer is a tool for creating identical machine images for multiple platforms from a single source configuration. Please submit issues to https://github.com/hashicorp/packer/issues" - -# This is the location of the releases. -ENV HASHICORP_RELEASES=https://releases.hashicorp.com - -RUN set -eux && \ - apk add --no-cache git bash wget openssl gnupg xorriso && \ - gpg --keyserver keyserver.ubuntu.com --recv-keys C874011F0AB405110D02105534365D9472D7468F && \ - mkdir -p /tmp/build && \ - cd /tmp/build && \ - apkArch="$(apk --print-arch)" && \ - case "${apkArch}" in \ - aarch64) packerArch='arm64' ;; \ - armhf) packerArch='arm' ;; \ - x86) packerArch='386' ;; \ - x86_64) packerArch='amd64' ;; \ - *) echo >&2 "error: unsupported architecture: ${apkArch} (see ${HASHICORP_RELEASES}/packer/${PRODUCT_VERSION}/)" && exit 1 ;; \ - esac && \ - wget ${HASHICORP_RELEASES}/packer/${PRODUCT_VERSION}/packer_${PRODUCT_VERSION}_linux_${packerArch}.zip && \ - wget ${HASHICORP_RELEASES}/packer/${PRODUCT_VERSION}/packer_${PRODUCT_VERSION}_SHA256SUMS && \ - wget ${HASHICORP_RELEASES}/packer/${PRODUCT_VERSION}/packer_${PRODUCT_VERSION}_SHA256SUMS.sig && \ - gpg --batch --verify packer_${PRODUCT_VERSION}_SHA256SUMS.sig packer_${PRODUCT_VERSION}_SHA256SUMS && \ - grep packer_${PRODUCT_VERSION}_linux_${packerArch}.zip packer_${PRODUCT_VERSION}_SHA256SUMS | sha256sum -c && \ - unzip -d /tmp/build packer_${PRODUCT_VERSION}_linux_${packerArch}.zip && \ - cp /tmp/build/packer /bin/packer && \ - cd /tmp && \ - rm -rf /tmp/build && \ - gpgconf --kill all && \ - apk del gnupg openssl && \ - rm -rf /root/.gnupg && \ - # Tiny smoke test to ensure the binary we downloaded runs - packer version - -ENTRYPOINT ["/bin/packer"] - - # Light docker image which can be used to run the binary from a container. # This image builds from the locally generated binary in ./bin/, and from CI-built binaries within CI. # To generate the local binary, run `make dev`. diff --git a/Makefile b/Makefile index 01d62f0053c..ed46303684f 100644 --- a/Makefile +++ b/Makefile @@ -71,41 +71,22 @@ dev: ## Build and install a development build # Docker build variables and targets REGISTRY_NAME?=docker.io/hashicorp IMAGE_NAME=packer -VERSION?=1.7.10 -IMAGE_TAG=$(REGISTRY_NAME)/$(IMAGE_NAME):$(VERSION) -IMAGE_TAG_DEV=$(REGISTRY_NAME)/$(IMAGE_NAME):latest-$(shell git rev-parse --short HEAD) - -docker: docker-official -docker-light: docker-official - -# Builds from the releases.hashicorp.com official binary -docker-official: - docker build \ - --tag $(IMAGE_TAG) \ - --tag hashicorp/packer:latest \ - --target=official \ - --build-arg VERSION=$(VERSION) \ - . +IMAGE_TAG_DEV=$(REGISTRY_NAME)/$(IMAGE_NAME):latest-$(GIT_COMMIT) -# Builds multiarch from the releases.hashicorp.com official binary -docker-multiarch-official: - docker buildx build \ - --tag $(IMAGE_TAG) \ - --tag hashicorp/packer:latest \ - --target=official \ - --build-arg VERSION=$(VERSION) \ - --platform linux/amd64,linux/arm64 \ - . +docker: docker-dev # Builds from the locally generated binary in ./bin/ # To generate the local binary, run `make dev` -docker-dev: export GOOS=linux -docker-dev: export GOARCH=amd64 -docker-dev: dev +docker-dev: + @GOOS=linux \ + GOARCH=amd64 \ + CGO_ENABLED=0 \ + go build -ldflags '$(GOLDFLAGS)' -o bin/packer . @docker build \ --tag $(IMAGE_TAG_DEV) \ --target=dev \ . + @rm -f bin/packer # Clean up the Linux/amd64 binary to avoid conficts on other OS/archs lint: install-lint-deps ## Lint Go code @if [ ! -z $(PKG_NAME) ]; then \ From 376f0e9991c63d742dd8c93a89a7aec5e4dd838e Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Thu, 3 Aug 2023 09:39:47 -0400 Subject: [PATCH 160/381] docker: remove trailing spaces for Docker README --- .release/docker/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.release/docker/README.md b/.release/docker/README.md index 4fdf9272958..ac1181da263 100644 --- a/.release/docker/README.md +++ b/.release/docker/README.md @@ -1,6 +1,6 @@ # Packer Docker Container -The root of this repository contains the officially supported HashiCorp Dockerfile to build the hashicorp/packer docker image. The `dev` docker image should be built for local dev and testing, while the production docker image, `release`, is built in CI and makes use of CI-built binaries. The `official` docker image is built using the official binaries from releases.hashicorp.com. +The root of this repository contains the officially supported HashiCorp Dockerfile to build the hashicorp/packer docker image. The `dev` docker image should be built for local dev and testing, while the production docker image, `release`, is built in CI and makes use of CI-built binaries. The `official` docker image is built using the official binaries from releases.hashicorp.com. ## Build @@ -17,14 +17,14 @@ development or release modes: This repository automatically builds containers for using the [`packer`](https://packer.io) command line program. It contains two distinct varieties of build, an `official` version, aka `light`, which just contains the binary. -It also contains a `dev` version, aka `full`, which compiles the binary from source +It also contains a `dev` version, aka `full`, which compiles the binary from source inside the container before exposing it for use. ##### `official` The `official` version of this container will copy the current stable version of the binary, taken from releases.hashicorp.com, into the container. It will also -set it for use as the default entrypoint. This will be the best option for most uses, +set it for use as the default entrypoint. This will be the best option for most uses, especially if you are just looking to run the binary from a container. This image is tagged as both `official` and `light`. The `latest` tag on DockerHub also points to this version. @@ -64,8 +64,8 @@ docker run \ ~> **Note**: packer init is available from Packer v1.7.0 and later -The command will mount the working directory (`pwd`) to `workspace`, which is the working directory (`-w`) inside the container. -Any plugin installed with `packer init` will be installed under the directory specified under the `PACKER_PLUGIN_PATH` environment variable. `PACKER_PLUGIN_PATH` must be set to a path inside the volume mount so that plugins can become available at `packer build`. +The command will mount the working directory (`pwd`) to `workspace`, which is the working directory (`-w`) inside the container. +Any plugin installed with `packer init` will be installed under the directory specified under the `PACKER_PLUGIN_PATH` environment variable. `PACKER_PLUGIN_PATH` must be set to a path inside the volume mount so that plugins can become available at `packer build`. Running `packer build` ```shell From 168e464ee455e91d952eca4a634b598a0c656c8d Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Thu, 3 Aug 2023 10:06:01 -0400 Subject: [PATCH 161/381] docker: add full image to docker README --- .release/docker/README.md | 43 +++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/.release/docker/README.md b/.release/docker/README.md index ac1181da263..f733efbeaf9 100644 --- a/.release/docker/README.md +++ b/.release/docker/README.md @@ -1,37 +1,46 @@ # Packer Docker Container -The root of this repository contains the officially supported HashiCorp Dockerfile to build the hashicorp/packer docker image. The `dev` docker image should be built for local dev and testing, while the production docker image, `release`, is built in CI and makes use of CI-built binaries. The `official` docker image is built using the official binaries from releases.hashicorp.com. +The root of this repository contains the officially supported HashiCorp Dockerfile to build the hashicorp/packer docker image. The `dev` docker image should be built for local dev and testing, while the production docker image, `release`, is built in CI and makes use of CI-built binaries. The `light` and `full` docker images are built using the official binaries from releases.hashicorp.com. ## Build -See the Makefile targets in the root of this repository for building Packer images in either -development or release modes: - - - `make docker-dev` - - `make docker-official` - - `make docker-multiarch-official` - - `make docker` +Refer to the Makefile of this repository, especially the `docker` and `docker-dev` targets to build a local version of the dev image based on the sources available. ### Usage This repository automatically builds containers for using the -[`packer`](https://packer.io) command line program. It contains two distinct -varieties of build, an `official` version, aka `light`, which just contains the binary. -It also contains a `dev` version, aka `full`, which compiles the binary from source +[`packer`](https://developer.hashicorp.com/packer) command line program. It contains three distinct +varieties of build: a `light` version, which just contains the binary, +a `full` build, which contains the Packer binary with pre-installed plugins, +and a `dev` version, which compiles the binary from source inside the container before exposing it for use. -##### `official` +##### `light` -The `official` version of this container will copy the current stable version of +The `light` version of this container will copy the current stable version of the binary, taken from releases.hashicorp.com, into the container. It will also set it for use as the default entrypoint. This will be the best option for most uses, -especially if you are just looking to run the binary from a container. This image -is tagged as both `official` and `light`. +especially if you are just looking to run the binary from a container. The `latest` tag on DockerHub also points to this version. You can use this version with the following: ```shell -docker run hashicorp/packer:official +docker run hashicorp/packer:light +``` + +##### `full` + +The `full` version of the container builds upon `light` and pre-installs +the plugins officially maintained by HashiCorp. + +You can use this version with the following: +```shell +docker run hashicorp/packer:full +``` + +You can view the list of pre-installed plugins with the following: +```shell +docker run hashicorp/packer:full plugins installed ``` ##### `dev` @@ -41,7 +50,7 @@ the current ref of this [repository](https://github.com/hashicorp/packer). Using official `golang` image](https://hub.docker.com/_/golang/) as a base, this container will copy the source from the current branch, build the binary, and expose it for running. Because all build artifacts are included, it should be quite a bit larger than -the `official` image. This version of the container is most useful for development or +the `light` image. This version of the container is most useful for development or debugging. You can use this version with the following: From 9ccec0d4d501d02dd6f6e521c9b0d7efd3e07872 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 7 Aug 2023 20:54:19 -0400 Subject: [PATCH 162/381] Removed repetitive statement from HCP debug logs (#12552) * Remove repetitive log statement The log being removed is duplicated each time evalContext is called, which seems like an unneeded debug log. --- hcl2template/types.packer_config.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/hcl2template/types.packer_config.go b/hcl2template/types.packer_config.go index 84d1fe8de7d..003db57753c 100644 --- a/hcl2template/types.packer_config.go +++ b/hcl2template/types.packer_config.go @@ -123,8 +123,6 @@ func (cfg *PackerConfig) EvalContext(ctx BlockContext, variables map[string]cty. iterID, ok := cfg.HCPVars["iterationID"] if ok { - log.Printf("iterationID set: %q", iterID) - ectx.Variables[packerAccessor] = cty.ObjectVal(map[string]cty.Value{ "version": cty.StringVal(cfg.CorePackerVersionString), "iterationID": iterID, From 4d0a51c1892ea91f5eb2d5f56fabe66d729b31d2 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 8 Aug 2023 09:24:53 -0400 Subject: [PATCH 163/381] go.mod: bump golang.org/x/net to v0.13.0 The version of the golang.org/x/net we used (v0.8.0), is vulnerable to a rendering issue, potentially escaping text that should not be, which can enable other attacks then. Packer itself is not vulnerable to the CVE as we don't render web pages, but security checks do point it as an issue, so we fix it by updating the dependencies. CVE refrerence: GO-2023-1988 --- go.mod | 10 +++++----- go.sum | 18 ++++++++++-------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/go.mod b/go.mod index fa48d7d58da..ab2d8edd000 100644 --- a/go.mod +++ b/go.mod @@ -45,14 +45,14 @@ require ( github.com/ulikunitz/xz v0.5.10 github.com/zclconf/go-cty v1.10.0 github.com/zclconf/go-cty-yaml v1.0.1 - golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect + golang.org/x/crypto v0.11.0 // indirect golang.org/x/mod v0.8.0 - golang.org/x/net v0.8.0 + golang.org/x/net v0.13.0 golang.org/x/oauth2 v0.1.0 golang.org/x/sync v0.1.0 - golang.org/x/sys v0.7.0 // indirect - golang.org/x/term v0.6.0 // indirect - golang.org/x/text v0.8.0 // indirect + golang.org/x/sys v0.10.0 // indirect + golang.org/x/term v0.10.0 // indirect + golang.org/x/text v0.11.0 // indirect golang.org/x/tools v0.6.0 google.golang.org/api v0.101.0 // indirect google.golang.org/grpc v1.50.1 diff --git a/go.sum b/go.sum index 96c6e63f953..81a0347bf5c 100644 --- a/go.sum +++ b/go.sum @@ -793,8 +793,9 @@ golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d h1:sK3txAijHtOK88l68nt020reeT1ZdKLIYetKl95FzVY= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= +golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= @@ -842,8 +843,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= -golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.13.0 h1:Nvo8UFsZ8X3BhAC9699Z1j7XQ3rsZnUUm7jfBEk1ueY= +golang.org/x/net v0.13.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.1.0 h1:isLCZuhj4v+tYv7eskaN4v/TM+A1begWWgyVJDdl1+Y= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= @@ -903,21 +904,22 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= +golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= -golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= +golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= +golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= From 19055df3ec612ab556aa48e8eac2cb2d401fbab5 Mon Sep 17 00:00:00 2001 From: "hashicorp-copywrite[bot]" <110428419+hashicorp-copywrite[bot]@users.noreply.github.com> Date: Thu, 10 Aug 2023 15:53:29 -0700 Subject: [PATCH 164/381] [COMPLIANCE] License changes (#12568) * Updating the license from MPL to Business Source License Going forward, this project will be licensed under the Business Source License v1.1. Please see our blog post for more details at https://hashi.co/bsl-blog, FAQ at https://hashi.co/license-faq, and details of the license at www.hashicorp.com/bsl. * Update copyright file headers to BUSL-1.1 --------- Co-authored-by: hashicorp-copywrite[bot] <110428419+hashicorp-copywrite[bot]@users.noreply.github.com> --- .github/ISSUE_TEMPLATE/config.yml | 2 +- .github/labeler-issue-triage.yml | 2 +- .golangci.yml | 2 +- .release/ci.hcl | 2 +- .release/release-metadata.hcl | 2 +- .release/security-scan.hcl | 2 +- Dockerfile | 2 +- LICENSE | 436 +++--------------- acctest/plugin/bundled_plugin_test.go | 2 +- acctest/plugin/component_acc_test.go | 2 +- acctest/plugin/plugin_acc_test.go | 2 +- acctest/testing.go | 2 +- acctest/testing_test.go | 2 +- background_check.go | 2 +- background_check_openbsd.go | 2 +- builder/file/artifact.go | 2 +- builder/file/artifact_test.go | 2 +- builder/file/builder.go | 2 +- builder/file/builder_test.go | 2 +- builder/file/config.go | 2 +- builder/file/config_test.go | 2 +- builder/file/version/version.go | 2 +- builder/null/artifact_export.go | 2 +- builder/null/artifact_export_test.go | 2 +- builder/null/builder.go | 2 +- builder/null/builder_test.go | 2 +- builder/null/config.go | 2 +- builder/null/config_test.go | 2 +- builder/null/ssh.go | 2 +- builder/null/version/version.go | 2 +- checkpoint.go | 2 +- cmd/generate-fixer-deprecations/main.go | 2 +- cmd/ssh-keygen/main.go | 2 +- command/build.go | 2 +- command/build_cancellation_test.go | 2 +- command/build_cleanup_script_test.go | 2 +- command/build_parallel_test.go | 2 +- command/build_test.go | 2 +- command/build_timeout_test.go | 2 +- command/build_windows_test.go | 2 +- command/cli.go | 2 +- command/command_test.go | 2 +- command/config_file_unix.go | 2 +- command/config_file_windows.go | 2 +- command/console.go | 2 +- command/console_test.go | 2 +- command/enumflag/flag.go | 2 +- command/exec_test.go | 2 +- command/fix.go | 2 +- command/fix_test.go | 2 +- command/flag-kv/flag.go | 2 +- command/flag-kv/flag_json.go | 2 +- command/flag-kv/flag_json_test.go | 2 +- command/flag-kv/flag_strings.go | 2 +- command/flag-kv/flag_strings_test.go | 2 +- command/flag-kv/flag_test.go | 2 +- command/flag-slice/flag.go | 2 +- command/flag-slice/flag_test.go | 2 +- command/fmt.go | 2 +- command/fmt_test.go | 2 +- command/hcl2_upgrade.go | 2 +- command/hcl2_upgrade_test.go | 2 +- command/init.go | 2 +- command/init_test.go | 2 +- command/inspect.go | 2 +- command/inspect_test.go | 2 +- command/meta.go | 2 +- command/plugins.go | 2 +- command/plugins_install.go | 2 +- command/plugins_install_test.go | 2 +- command/plugins_installed.go | 2 +- command/plugins_remove.go | 2 +- command/plugins_remove_test.go | 2 +- command/plugins_required.go | 2 +- command/signal.go | 2 +- command/test_utils.go | 2 +- command/utils.go | 2 +- command/utils_test.go | 2 +- command/validate.go | 2 +- command/validate_test.go | 2 +- command/vendored_plugins.go | 2 +- command/version.go | 2 +- command/version_test.go | 2 +- commands.go | 2 +- config.go | 2 +- config_test.go | 2 +- datasource/hcp-packer-image/data.go | 2 +- datasource/hcp-packer-iteration/data.go | 2 +- .../hcp-packer-iteration/data_acc_test.go | 2 +- datasource/http/data.go | 2 +- datasource/http/data_acc_test.go | 2 +- datasource/null/data.go | 2 +- fix/fixer.go | 2 +- fix/fixer_amazon_enhanced_networking.go | 2 +- fix/fixer_amazon_enhanced_networking_test.go | 2 +- fix/fixer_amazon_private_ip.go | 2 +- fix/fixer_amazon_private_ip_test.go | 2 +- fix/fixer_amazon_shutdown_behavior.go | 2 +- fix/fixer_amazon_shutdown_behavior_test.go | 2 +- fix/fixer_amazon_spot_price_product.go | 2 +- ...r_amazon_temporary_security_group_cidrs.go | 2 +- ...zon_temporary_security_group_cidrs_test.go | 2 +- fix/fixer_azure_exclude_from_latest.go | 2 +- fix/fixer_azure_exclude_from_latest_test.go | 2 +- fix/fixer_clean_image_name.go | 2 +- fix/fixer_clean_image_name_test.go | 2 +- fix/fixer_comm_config.go | 2 +- fix/fixer_comm_config_test.go | 2 +- fix/fixer_createtime.go | 2 +- fix/fixer_createtime_test.go | 2 +- fix/fixer_docker_email.go | 2 +- fix/fixer_galaxy_command.go | 2 +- fix/fixer_galaxy_command_test.go | 2 +- fix/fixer_hyperv_cpu_and_ram_naming.go | 2 +- fix/fixer_hyperv_deprecations.go | 2 +- fix/fixer_hyperv_deprecations_test.go | 2 +- fix/fixer_hyperv_vmxc_typo.go | 2 +- fix/fixer_hyperv_vmxc_typo_test.go | 2 +- fix/fixer_iso_checksum_type_and_url.go | 2 +- fix/fixer_iso_checksum_type_and_url_test.go | 2 +- fix/fixer_iso_md5.go | 2 +- fix/fixer_iso_md5_test.go | 2 +- fix/fixer_parallels_deprecations.go | 2 +- fix/fixer_parallels_deprecations_test.go | 2 +- fix/fixer_parallels_headless.go | 2 +- fix/fixer_parallels_headless_test.go | 2 +- fix/fixer_powershell_escapes.go | 2 +- fix/fixer_pp_docker_tag_tags.go | 2 +- fix/fixer_pp_docker_tag_tags_test.go | 2 +- fix/fixer_pp_manifest_filename.go | 2 +- fix/fixer_pp_manifest_filename_test.go | 2 +- fix/fixer_pp_vagrant_override.go | 2 +- fix/fixer_pp_vagrant_override_test.go | 2 +- fix/fixer_proxmox_type.go | 2 +- fix/fixer_proxmox_type_test.go | 2 +- fix/fixer_qemu_disk_size.go | 2 +- fix/fixer_qemu_disk_size_test.go | 2 +- fix/fixer_qemu_host_port.go | 2 +- fix/fixer_qemu_host_port_test.go | 2 +- fix/fixer_scaleway_access_key.go | 2 +- fix/fixer_scaleway_access_key_test.go | 2 +- fix/fixer_ssh_timeout.go | 2 +- fix/fixer_ssh_timeout_test.go | 2 +- fix/fixer_sshdisableagent.go | 2 +- fix/fixer_sshdisableagent_test.go | 2 +- fix/fixer_sshkeypath.go | 2 +- fix/fixer_sshkeypath_test.go | 2 +- fix/fixer_test.go | 2 +- fix/fixer_virtualbox_gaattach.go | 2 +- fix/fixer_virtualbox_gaattach_test.go | 2 +- fix/fixer_virtualbox_rename.go | 2 +- fix/fixer_virtualbox_rename_test.go | 2 +- fix/fixer_vmware_compaction.go | 2 +- fix/fixer_vmware_compaction_test.go | 2 +- fix/fixer_vmware_rename.go | 2 +- fix/fixer_vmware_rename_test.go | 2 +- fix/fixer_vsphere_network_storage.go | 2 +- fix/fixer_vsphere_network_storage_test.go | 2 +- fix/helpers.go | 2 +- hcl2template/addrs/doc.go | 2 +- hcl2template/addrs/input_variable.go | 2 +- hcl2template/addrs/parse_ref.go | 2 +- hcl2template/addrs/plugin.go | 2 +- hcl2template/addrs/plugin_test.go | 2 +- hcl2template/addrs/referenceable.go | 2 +- hcl2template/common_test.go | 2 +- hcl2template/components.go | 2 +- hcl2template/decode.go | 2 +- hcl2template/docs.go | 2 +- hcl2template/formatter.go | 2 +- hcl2template/formatter_test.go | 2 +- hcl2template/function/Consul.go | 2 +- hcl2template/function/aws_secretetkey.go | 2 +- hcl2template/function/datetime.go | 2 +- hcl2template/function/datetime_test.go | 2 +- hcl2template/function/env.go | 2 +- hcl2template/function/index.go | 2 +- hcl2template/function/index_test.go | 2 +- hcl2template/function/length.go | 2 +- hcl2template/function/length_test.go | 2 +- hcl2template/function/templatefile.go | 2 +- hcl2template/function/templatefile_test.go | 2 +- hcl2template/function/vault.go | 2 +- hcl2template/functions.go | 2 +- hcl2template/internal/mock.go | 2 +- hcl2template/parser.go | 2 +- hcl2template/plugin.go | 2 +- hcl2template/repl/format.go | 2 +- hcl2template/repl/repl.go | 2 +- hcl2template/shim/mock.go | 2 +- hcl2template/shim/values.go | 2 +- hcl2template/shim/values_test.go | 2 +- hcl2template/types.build.from.go | 2 +- hcl2template/types.build.go | 2 +- .../types.build.hcp_packer_registry.go | 2 +- .../types.build.hcp_packer_registry_test.go | 2 +- hcl2template/types.build.post-processor.go | 2 +- hcl2template/types.build.provisioners.go | 2 +- hcl2template/types.build.provisioners_test.go | 2 +- hcl2template/types.build_test.go | 2 +- hcl2template/types.datasource.go | 2 +- hcl2template/types.datasource_test.go | 2 +- hcl2template/types.hcl_post-processor.go | 2 +- hcl2template/types.hcl_provisioner.go | 2 +- hcl2template/types.hcl_ref.go | 2 +- hcl2template/types.packer_config.go | 2 +- hcl2template/types.packer_config_test.go | 2 +- hcl2template/types.required_plugins.go | 2 +- hcl2template/types.required_plugins_test.go | 2 +- hcl2template/types.source.go | 2 +- hcl2template/types.source_test.go | 2 +- hcl2template/types.variables.go | 2 +- hcl2template/types.variables_test.go | 2 +- hcl2template/utils.go | 2 +- hcl2template/version.go | 2 +- hcl2template/version_required.go | 2 +- helper/wrappedreadline/wrappedreadline.go | 2 +- .../wrappedreadline_solaris.go | 2 +- .../wrappedreadline/wrappedreadline_unix.go | 2 +- .../wrappedreadline_windows.go | 2 +- helper/wrappedstreams/streams.go | 2 +- helper/wrappedstreams/streams_other.go | 2 +- helper/wrappedstreams/streams_windows.go | 2 +- internal/hcp/api/client.go | 2 +- internal/hcp/api/client_test.go | 2 +- internal/hcp/api/errors.go | 2 +- internal/hcp/api/mock_service.go | 2 +- internal/hcp/api/service.go | 2 +- internal/hcp/env/env.go | 2 +- internal/hcp/env/env_test.go | 2 +- internal/hcp/env/variables.go | 2 +- internal/hcp/registry/artifact.go | 2 +- internal/hcp/registry/errors.go | 2 +- internal/hcp/registry/hcl.go | 2 +- internal/hcp/registry/hcp.go | 2 +- internal/hcp/registry/json.go | 2 +- internal/hcp/registry/null_registry.go | 2 +- internal/hcp/registry/registry.go | 2 +- internal/hcp/registry/types.bucket.go | 2 +- .../hcp/registry/types.bucket_service_test.go | 2 +- internal/hcp/registry/types.bucket_test.go | 2 +- internal/hcp/registry/types.builds.go | 2 +- internal/hcp/registry/types.iterations.go | 2 +- .../hcp/registry/types.iterations_test.go | 2 +- log.go | 2 +- main.go | 2 +- main_test.go | 2 +- packer/build.go | 2 +- packer/build_test.go | 2 +- packer/builder_test.go | 2 +- packer/client_test.go | 2 +- packer/cmd_builder.go | 2 +- packer/cmd_builder_test.go | 2 +- packer/cmd_datasource.go | 2 +- packer/cmd_datasource_test.go | 2 +- packer/cmd_hook.go | 2 +- packer/cmd_hook_test.go | 2 +- packer/cmd_post_processor.go | 2 +- packer/cmd_post_processor_test.go | 2 +- packer/cmd_provisioner.go | 2 +- packer/cmd_provisioner_test.go | 2 +- packer/core.go | 2 +- packer/core_test.go | 2 +- packer/maps.go | 2 +- packer/packer_test.go | 2 +- packer/plugin-getter/checksum.go | 2 +- packer/plugin-getter/docs.go | 2 +- packer/plugin-getter/github/docs.go | 2 +- packer/plugin-getter/github/getter.go | 2 +- packer/plugin-getter/plugins.go | 2 +- packer/plugin-getter/plugins_test.go | 2 +- packer/plugin.go | 2 +- packer/plugin_client.go | 2 +- packer/plugin_discover_test.go | 2 +- packer/plugin_folders.go | 2 +- packer/plugin_test.go | 2 +- packer/post_processor_mock.go | 2 +- packer/progressbar.go | 2 +- packer/progressbar_solaris.go | 2 +- packer/progressbar_test.go | 2 +- packer/provisioner.go | 2 +- packer/provisioner_test.go | 2 +- packer/provisioner_timeout.go | 2 +- packer/run_interfaces.go | 2 +- packer/telemetry.go | 2 +- packer/telemetry_test.go | 2 +- packer/testing.go | 2 +- packer/ui.go | 2 +- packer/ui_test.go | 2 +- panic.go | 2 +- post-processor/artifice/artifact.go | 2 +- post-processor/artifice/post-processor.go | 2 +- post-processor/artifice/version/version.go | 2 +- post-processor/checksum/artifact.go | 2 +- post-processor/checksum/post-processor.go | 2 +- .../checksum/post-processor_test.go | 2 +- post-processor/checksum/version/version.go | 2 +- post-processor/compress/artifact.go | 2 +- post-processor/compress/artifact_test.go | 2 +- post-processor/compress/benchmark.go | 2 +- post-processor/compress/post-processor.go | 2 +- .../compress/post-processor_test.go | 2 +- post-processor/compress/tar_fix.go | 2 +- post-processor/compress/tar_fix_go110.go | 2 +- post-processor/compress/version/version.go | 2 +- post-processor/manifest/artifact.go | 2 +- post-processor/manifest/post-processor.go | 2 +- post-processor/manifest/version/version.go | 2 +- post-processor/shell-local/post-processor.go | 2 +- .../shell-local/post-processor_test.go | 2 +- post-processor/shell-local/version/version.go | 2 +- provisioner/breakpoint/provisioner.go | 2 +- provisioner/breakpoint/version/version.go | 2 +- provisioner/file/provisioner.go | 2 +- provisioner/file/provisioner_test.go | 2 +- provisioner/file/version/version.go | 2 +- provisioner/powershell/execution_policy.go | 2 +- .../powershell/execution_policy_test.go | 2 +- provisioner/powershell/provisioner.go | 2 +- .../powershell/provisioner_acc_test.go | 2 +- provisioner/powershell/provisioner_test.go | 2 +- provisioner/powershell/version/version.go | 2 +- provisioner/shell-local/provisioner.go | 2 +- .../shell-local/provisioner_acc_test.go | 2 +- provisioner/shell-local/provisioner_test.go | 2 +- provisioner/shell-local/version/version.go | 2 +- provisioner/shell/provisioner.go | 2 +- provisioner/shell/provisioner_acc_test.go | 2 +- provisioner/shell/provisioner_test.go | 2 +- provisioner/shell/unix_reader.go | 2 +- provisioner/shell/unix_reader_test.go | 2 +- provisioner/shell/version/version.go | 2 +- provisioner/sleep/provisioner.go | 2 +- provisioner/sleep/provisioner_test.go | 2 +- provisioner/sleep/version/version.go | 2 +- provisioner/windows-restart/provisioner.go | 2 +- .../windows-restart/provisioner_test.go | 2 +- .../windows-restart/version/version.go | 2 +- provisioner/windows-shell/provisioner.go | 2 +- provisioner/windows-shell/provisioner_test.go | 2 +- provisioner/windows-shell/version/version.go | 2 +- scripts/build.ps1 | 2 +- scripts/build.sh | 2 +- scripts/codesign_example.sh | 2 +- scripts/dist.sh | 2 +- scripts/generate-plugins.go | 2 +- scripts/off_gopath.sh | 2 +- scripts/prepare_changelog.sh | 2 +- scripts/sign.sh | 2 +- scripts/sort-md-list.py | 2 +- scripts/upgrade_plugins.sh | 2 +- scripts/vagrant-freebsd-priv-config.sh | 2 +- scripts/vagrant-freebsd-unpriv-bootstrap.sh | 2 +- scripts/vagrant-linux-priv-config.sh | 2 +- scripts/vagrant-linux-priv-go.sh | 2 +- scripts/vagrant-linux-unpriv-bootstrap.sh | 2 +- tty.go | 2 +- tty_solaris.go | 2 +- version/version.go | 2 +- 359 files changed, 419 insertions(+), 733 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index eae8012b936..b79897d5954 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,5 @@ # Copyright (c) HashiCorp, Inc. -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: BUSL-1.1 blank_issues_enabled: false contact_links: diff --git a/.github/labeler-issue-triage.yml b/.github/labeler-issue-triage.yml index 1737a33b92c..6d9ef6d547c 100644 --- a/.github/labeler-issue-triage.yml +++ b/.github/labeler-issue-triage.yml @@ -1,5 +1,5 @@ # Copyright (c) HashiCorp, Inc. -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: BUSL-1.1 bug: - 'panic:' diff --git a/.golangci.yml b/.golangci.yml index ccd990c0040..656b0373ac5 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,5 +1,5 @@ # Copyright (c) HashiCorp, Inc. -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: BUSL-1.1 issues: # List of regexps of issue texts to exclude, empty list by default. diff --git a/.release/ci.hcl b/.release/ci.hcl index 6ca7eb0de23..14dab1591d9 100644 --- a/.release/ci.hcl +++ b/.release/ci.hcl @@ -1,5 +1,5 @@ # Copyright (c) HashiCorp, Inc. -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: BUSL-1.1 schema = "1" diff --git a/.release/release-metadata.hcl b/.release/release-metadata.hcl index 0fb2456679e..05d0b9f3a81 100644 --- a/.release/release-metadata.hcl +++ b/.release/release-metadata.hcl @@ -1,5 +1,5 @@ # Copyright (c) HashiCorp, Inc. -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: BUSL-1.1 url_docker_registry_dockerhub = "https://hub.docker.com/r/hashicorp/packer" url_docker_registry_ecr = "https://gallery.ecr.aws/hashicorp/packer" diff --git a/.release/security-scan.hcl b/.release/security-scan.hcl index 7d3258126bc..12ef1d53388 100644 --- a/.release/security-scan.hcl +++ b/.release/security-scan.hcl @@ -1,5 +1,5 @@ # Copyright (c) HashiCorp, Inc. -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: BUSL-1.1 container { dependencies = false diff --git a/Dockerfile b/Dockerfile index 1b5ae54e942..12c38fde6af 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # Copyright (c) HashiCorp, Inc. -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: BUSL-1.1 # ======================================================================== # diff --git a/LICENSE b/LICENSE index c96665ef71f..2ecf202e305 100644 --- a/LICENSE +++ b/LICENSE @@ -1,375 +1,61 @@ -Copyright (c) 2013 HashiCorp, Inc. - -Mozilla Public License Version 2.0 -================================== - -1. Definitions --------------- - -1.1. "Contributor" - means each individual or legal entity that creates, contributes to - the creation of, or owns Covered Software. - -1.2. "Contributor Version" - means the combination of the Contributions of others (if any) used - by a Contributor and that particular Contributor's Contribution. - -1.3. "Contribution" - means Covered Software of a particular Contributor. - -1.4. "Covered Software" - means Source Code Form to which the initial Contributor has attached - the notice in Exhibit A, the Executable Form of such Source Code - Form, and Modifications of such Source Code Form, in each case - including portions thereof. - -1.5. "Incompatible With Secondary Licenses" - means - - (a) that the initial Contributor has attached the notice described - in Exhibit B to the Covered Software; or - - (b) that the Covered Software was made available under the terms of - version 1.1 or earlier of the License, but not also under the - terms of a Secondary License. - -1.6. "Executable Form" - means any form of the work other than Source Code Form. - -1.7. "Larger Work" - means a work that combines Covered Software with other material, in - a separate file or files, that is not Covered Software. - -1.8. "License" - means this document. - -1.9. "Licensable" - means having the right to grant, to the maximum extent possible, - whether at the time of the initial grant or subsequently, any and - all of the rights conveyed by this License. - -1.10. "Modifications" - means any of the following: - - (a) any file in Source Code Form that results from an addition to, - deletion from, or modification of the contents of Covered - Software; or - - (b) any new file in Source Code Form that contains any Covered - Software. - -1.11. "Patent Claims" of a Contributor - means any patent claim(s), including without limitation, method, - process, and apparatus claims, in any patent Licensable by such - Contributor that would be infringed, but for the grant of the - License, by the making, using, selling, offering for sale, having - made, import, or transfer of either its Contributions or its - Contributor Version. - -1.12. "Secondary License" - means either the GNU General Public License, Version 2.0, the GNU - Lesser General Public License, Version 2.1, the GNU Affero General - Public License, Version 3.0, or any later versions of those - licenses. - -1.13. "Source Code Form" - means the form of the work preferred for making modifications. - -1.14. "You" (or "Your") - means an individual or a legal entity exercising rights under this - License. For legal entities, "You" includes any entity that - controls, is controlled by, or is under common control with You. For - purposes of this definition, "control" means (a) the power, direct - or indirect, to cause the direction or management of such entity, - whether by contract or otherwise, or (b) ownership of more than - fifty percent (50%) of the outstanding shares or beneficial - ownership of such entity. - -2. License Grants and Conditions --------------------------------- - -2.1. Grants - -Each Contributor hereby grants You a world-wide, royalty-free, -non-exclusive license: - -(a) under intellectual property rights (other than patent or trademark) - Licensable by such Contributor to use, reproduce, make available, - modify, display, perform, distribute, and otherwise exploit its - Contributions, either on an unmodified basis, with Modifications, or - as part of a Larger Work; and - -(b) under Patent Claims of such Contributor to make, use, sell, offer - for sale, have made, import, and otherwise transfer either its - Contributions or its Contributor Version. - -2.2. Effective Date - -The licenses granted in Section 2.1 with respect to any Contribution -become effective for each Contribution on the date the Contributor first -distributes such Contribution. - -2.3. Limitations on Grant Scope - -The licenses granted in this Section 2 are the only rights granted under -this License. No additional rights or licenses will be implied from the -distribution or licensing of Covered Software under this License. -Notwithstanding Section 2.1(b) above, no patent license is granted by a -Contributor: - -(a) for any code that a Contributor has removed from Covered Software; - or - -(b) for infringements caused by: (i) Your and any other third party's - modifications of Covered Software, or (ii) the combination of its - Contributions with other software (except as part of its Contributor - Version); or - -(c) under Patent Claims infringed by Covered Software in the absence of - its Contributions. - -This License does not grant any rights in the trademarks, service marks, -or logos of any Contributor (except as may be necessary to comply with -the notice requirements in Section 3.4). - -2.4. Subsequent Licenses - -No Contributor makes additional grants as a result of Your choice to -distribute the Covered Software under a subsequent version of this -License (see Section 10.2) or under the terms of a Secondary License (if -permitted under the terms of Section 3.3). - -2.5. Representation - -Each Contributor represents that the Contributor believes its -Contributions are its original creation(s) or it has sufficient rights -to grant the rights to its Contributions conveyed by this License. - -2.6. Fair Use - -This License is not intended to limit any rights You have under -applicable copyright doctrines of fair use, fair dealing, or other -equivalents. - -2.7. Conditions - -Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted -in Section 2.1. - -3. Responsibilities -------------------- - -3.1. Distribution of Source Form - -All distribution of Covered Software in Source Code Form, including any -Modifications that You create or to which You contribute, must be under -the terms of this License. You must inform recipients that the Source -Code Form of the Covered Software is governed by the terms of this -License, and how they can obtain a copy of this License. You may not -attempt to alter or restrict the recipients' rights in the Source Code -Form. - -3.2. Distribution of Executable Form - -If You distribute Covered Software in Executable Form then: - -(a) such Covered Software must also be made available in Source Code - Form, as described in Section 3.1, and You must inform recipients of - the Executable Form how they can obtain a copy of such Source Code - Form by reasonable means in a timely manner, at a charge no more - than the cost of distribution to the recipient; and - -(b) You may distribute such Executable Form under the terms of this - License, or sublicense it under different terms, provided that the - license for the Executable Form does not attempt to limit or alter - the recipients' rights in the Source Code Form under this License. - -3.3. Distribution of a Larger Work - -You may create and distribute a Larger Work under terms of Your choice, -provided that You also comply with the requirements of this License for -the Covered Software. If the Larger Work is a combination of Covered -Software with a work governed by one or more Secondary Licenses, and the -Covered Software is not Incompatible With Secondary Licenses, this -License permits You to additionally distribute such Covered Software -under the terms of such Secondary License(s), so that the recipient of -the Larger Work may, at their option, further distribute the Covered -Software under the terms of either this License or such Secondary -License(s). - -3.4. Notices - -You may not remove or alter the substance of any license notices -(including copyright notices, patent notices, disclaimers of warranty, -or limitations of liability) contained within the Source Code Form of -the Covered Software, except that You may alter any license notices to -the extent required to remedy known factual inaccuracies. - -3.5. Application of Additional Terms - -You may choose to offer, and to charge a fee for, warranty, support, -indemnity or liability obligations to one or more recipients of Covered -Software. However, You may do so only on Your own behalf, and not on -behalf of any Contributor. You must make it absolutely clear that any -such warranty, support, indemnity, or liability obligation is offered by -You alone, and You hereby agree to indemnify every Contributor for any -liability incurred by such Contributor as a result of warranty, support, -indemnity or liability terms You offer. You may include additional -disclaimers of warranty and limitations of liability specific to any -jurisdiction. - -4. Inability to Comply Due to Statute or Regulation ---------------------------------------------------- - -If it is impossible for You to comply with any of the terms of this -License with respect to some or all of the Covered Software due to -statute, judicial order, or regulation then You must: (a) comply with -the terms of this License to the maximum extent possible; and (b) -describe the limitations and the code they affect. Such description must -be placed in a text file included with all distributions of the Covered -Software under this License. Except to the extent prohibited by statute -or regulation, such description must be sufficiently detailed for a -recipient of ordinary skill to be able to understand it. - -5. Termination --------------- - -5.1. The rights granted under this License will terminate automatically -if You fail to comply with any of its terms. However, if You become -compliant, then the rights granted under this License from a particular -Contributor are reinstated (a) provisionally, unless and until such -Contributor explicitly and finally terminates Your grants, and (b) on an -ongoing basis, if such Contributor fails to notify You of the -non-compliance by some reasonable means prior to 60 days after You have -come back into compliance. Moreover, Your grants from a particular -Contributor are reinstated on an ongoing basis if such Contributor -notifies You of the non-compliance by some reasonable means, this is the -first time You have received notice of non-compliance with this License -from such Contributor, and You become compliant prior to 30 days after -Your receipt of the notice. - -5.2. If You initiate litigation against any entity by asserting a patent -infringement claim (excluding declaratory judgment actions, -counter-claims, and cross-claims) alleging that a Contributor Version -directly or indirectly infringes any patent, then the rights granted to -You by any and all Contributors for the Covered Software under Section -2.1 of this License shall terminate. - -5.3. In the event of termination under Sections 5.1 or 5.2 above, all -end user license agreements (excluding distributors and resellers) which -have been validly granted by You or Your distributors under this License -prior to termination shall survive termination. - -************************************************************************ -* * -* 6. Disclaimer of Warranty * -* ------------------------- * -* * -* Covered Software is provided under this License on an "as is" * -* basis, without warranty of any kind, either expressed, implied, or * -* statutory, including, without limitation, warranties that the * -* Covered Software is free of defects, merchantable, fit for a * -* particular purpose or non-infringing. The entire risk as to the * -* quality and performance of the Covered Software is with You. * -* Should any Covered Software prove defective in any respect, You * -* (not any Contributor) assume the cost of any necessary servicing, * -* repair, or correction. This disclaimer of warranty constitutes an * -* essential part of this License. No use of any Covered Software is * -* authorized under this License except under this disclaimer. * -* * -************************************************************************ - -************************************************************************ -* * -* 7. Limitation of Liability * -* -------------------------- * -* * -* Under no circumstances and under no legal theory, whether tort * -* (including negligence), contract, or otherwise, shall any * -* Contributor, or anyone who distributes Covered Software as * -* permitted above, be liable to You for any direct, indirect, * -* special, incidental, or consequential damages of any character * -* including, without limitation, damages for lost profits, loss of * -* goodwill, work stoppage, computer failure or malfunction, or any * -* and all other commercial damages or losses, even if such party * -* shall have been informed of the possibility of such damages. This * -* limitation of liability shall not apply to liability for death or * -* personal injury resulting from such party's negligence to the * -* extent applicable law prohibits such limitation. Some * -* jurisdictions do not allow the exclusion or limitation of * -* incidental or consequential damages, so this exclusion and * -* limitation may not apply to You. * -* * -************************************************************************ - -8. Litigation -------------- - -Any litigation relating to this License may be brought only in the -courts of a jurisdiction where the defendant maintains its principal -place of business and such litigation shall be governed by laws of that -jurisdiction, without reference to its conflict-of-law provisions. -Nothing in this Section shall prevent a party's ability to bring -cross-claims or counter-claims. - -9. Miscellaneous ----------------- - -This License represents the complete agreement concerning the subject -matter hereof. If any provision of this License is held to be -unenforceable, such provision shall be reformed only to the extent -necessary to make it enforceable. Any law or regulation which provides -that the language of a contract shall be construed against the drafter -shall not be used to construe this License against a Contributor. - -10. Versions of the License ---------------------------- - -10.1. New Versions - -Mozilla Foundation is the license steward. Except as provided in Section -10.3, no one other than the license steward has the right to modify or -publish new versions of this License. Each version will be given a -distinguishing version number. - -10.2. Effect of New Versions - -You may distribute the Covered Software under the terms of the version -of the License under which You originally received the Covered Software, -or under the terms of any subsequent version published by the license -steward. - -10.3. Modified Versions - -If you create software not governed by this License, and you want to -create a new license for such software, you may create and use a -modified version of this License if you rename the license and remove -any references to the name of the license steward (except to note that -such modified license differs from this License). - -10.4. Distributing Source Code Form that is Incompatible With Secondary -Licenses - -If You choose to distribute Source Code Form that is Incompatible With -Secondary Licenses under the terms of this version of the License, the -notice described in Exhibit B of this License must be attached. - -Exhibit A - Source Code Form License Notice -------------------------------------------- - - This Source Code Form is subject to the terms of the Mozilla Public - License, v. 2.0. If a copy of the MPL was not distributed with this - file, You can obtain one at http://mozilla.org/MPL/2.0/. - -If it is not possible or desirable to put the notice in a particular -file, then You may include the notice in a location (such as a LICENSE -file in a relevant directory) where a recipient would be likely to look -for such a notice. - -You may add additional accurate notices of copyright ownership. - -Exhibit B - "Incompatible With Secondary Licenses" Notice ---------------------------------------------------------- - - This Source Code Form is "Incompatible With Secondary Licenses", as - defined by the Mozilla Public License, v. 2.0. +License text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved. +“Business Source License” is a trademark of MariaDB Corporation Ab. + +Parameters + +Licensor: HashiCorp, Inc. +Licensed Work: The Licensed Work is (c) 2023 HashiCorp, Inc. +Additional Use Grant: You may make production use of the Licensed Work, + provided such use does not include offering the Licensed Work + to third parties on a hosted or embedded basis which is + competitive with HashiCorp's products. +Change Date: Four years from the date the Licensed Work is published. +Change License: MPL 2.0 + +For information about alternative licensing arrangements for the Licensed Work, +please contact licensing@hashicorp.com. + +Notice + +Business Source License 1.1 + +Terms + +The Licensor hereby grants you the right to copy, modify, create derivative +works, redistribute, and make non-production use of the Licensed Work. The +Licensor may make an Additional Use Grant, above, permitting limited production use. + +Effective on the Change Date, or the fourth anniversary of the first publicly +available distribution of a specific version of the Licensed Work under this +License, whichever comes first, the Licensor hereby grants you rights under +the terms of the Change License, and the rights granted in the paragraph +above terminate. + +If your use of the Licensed Work does not comply with the requirements +currently in effect as described in this License, you must purchase a +commercial license from the Licensor, its affiliated entities, or authorized +resellers, or you must refrain from using the Licensed Work. + +All copies of the original and modified Licensed Work, and derivative works +of the Licensed Work, are subject to this License. This License applies +separately for each version of the Licensed Work and the Change Date may vary +for each version of the Licensed Work released by Licensor. + +You must conspicuously display this License on each original or modified copy +of the Licensed Work. If you receive the Licensed Work in original or +modified form from a third party, the terms and conditions set forth in this +License apply to your use of that work. + +Any use of the Licensed Work in violation of this License will automatically +terminate your rights under this License for the current and all other +versions of the Licensed Work. + +This License does not grant you any right in any trademark or logo of +Licensor or its affiliates (provided that you may use a trademark or logo of +Licensor as expressly required by this License). + +TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON +AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, +EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND +TITLE. diff --git a/acctest/plugin/bundled_plugin_test.go b/acctest/plugin/bundled_plugin_test.go index 9f21dfac626..c6652610955 100644 --- a/acctest/plugin/bundled_plugin_test.go +++ b/acctest/plugin/bundled_plugin_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package plugin diff --git a/acctest/plugin/component_acc_test.go b/acctest/plugin/component_acc_test.go index ff77adf636f..110d8d3765a 100644 --- a/acctest/plugin/component_acc_test.go +++ b/acctest/plugin/component_acc_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 // component_acc_test.go should contain acceptance tests for plugin components // to make sure all component types can be discovered and started. diff --git a/acctest/plugin/plugin_acc_test.go b/acctest/plugin/plugin_acc_test.go index 9e69afe3774..137fb394db4 100644 --- a/acctest/plugin/plugin_acc_test.go +++ b/acctest/plugin/plugin_acc_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 // plugin_acc_test.go should contain acceptance tests for features related to // installing, discovering and running plugins. diff --git a/acctest/testing.go b/acctest/testing.go index e716ec97b39..dbd877fb3d3 100644 --- a/acctest/testing.go +++ b/acctest/testing.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package acctest diff --git a/acctest/testing_test.go b/acctest/testing_test.go index 71247d4cef7..85364bd1154 100644 --- a/acctest/testing_test.go +++ b/acctest/testing_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package acctest diff --git a/background_check.go b/background_check.go index 3eaf7ee2348..30a0a65e2d5 100644 --- a/background_check.go +++ b/background_check.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:build !openbsd // +build !openbsd diff --git a/background_check_openbsd.go b/background_check_openbsd.go index ff2ef4b0ef2..0fc5574ba9c 100644 --- a/background_check_openbsd.go +++ b/background_check_openbsd.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package main diff --git a/builder/file/artifact.go b/builder/file/artifact.go index 9b9ed8ef949..4c33f6d45a3 100644 --- a/builder/file/artifact.go +++ b/builder/file/artifact.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package file diff --git a/builder/file/artifact_test.go b/builder/file/artifact_test.go index ea799e12f5f..02df6c2ae4e 100644 --- a/builder/file/artifact_test.go +++ b/builder/file/artifact_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package file diff --git a/builder/file/builder.go b/builder/file/builder.go index e6df9b54008..e9d9d8f9ebd 100644 --- a/builder/file/builder.go +++ b/builder/file/builder.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package file diff --git a/builder/file/builder_test.go b/builder/file/builder_test.go index dfa87277e2b..80fc326bdf4 100644 --- a/builder/file/builder_test.go +++ b/builder/file/builder_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package file diff --git a/builder/file/config.go b/builder/file/config.go index 017355ee6c7..244490a36da 100644 --- a/builder/file/config.go +++ b/builder/file/config.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:generate packer-sdc mapstructure-to-hcl2 -type Config diff --git a/builder/file/config_test.go b/builder/file/config_test.go index 60d3553a1f9..b6692495b9d 100644 --- a/builder/file/config_test.go +++ b/builder/file/config_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package file diff --git a/builder/file/version/version.go b/builder/file/version/version.go index 3cb6b9ec19e..2136829ae88 100644 --- a/builder/file/version/version.go +++ b/builder/file/version/version.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package version diff --git a/builder/null/artifact_export.go b/builder/null/artifact_export.go index ae6e46f2756..8b12610f81b 100644 --- a/builder/null/artifact_export.go +++ b/builder/null/artifact_export.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package null diff --git a/builder/null/artifact_export_test.go b/builder/null/artifact_export_test.go index ffa668865ec..265b8d36781 100644 --- a/builder/null/artifact_export_test.go +++ b/builder/null/artifact_export_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package null diff --git a/builder/null/builder.go b/builder/null/builder.go index 9b660bd24f9..a9a53dbd7e8 100644 --- a/builder/null/builder.go +++ b/builder/null/builder.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package null diff --git a/builder/null/builder_test.go b/builder/null/builder_test.go index b50d1484ff9..fdb52031d7a 100644 --- a/builder/null/builder_test.go +++ b/builder/null/builder_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package null diff --git a/builder/null/config.go b/builder/null/config.go index b240d57d98d..24ee61ed6fb 100644 --- a/builder/null/config.go +++ b/builder/null/config.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:generate packer-sdc mapstructure-to-hcl2 -type Config diff --git a/builder/null/config_test.go b/builder/null/config_test.go index 1123d470e09..67d35f66972 100644 --- a/builder/null/config_test.go +++ b/builder/null/config_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package null diff --git a/builder/null/ssh.go b/builder/null/ssh.go index f79bdd1eed4..fbffbb13a3c 100644 --- a/builder/null/ssh.go +++ b/builder/null/ssh.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package null diff --git a/builder/null/version/version.go b/builder/null/version/version.go index f3b8cb444e1..27e53e312d1 100644 --- a/builder/null/version/version.go +++ b/builder/null/version/version.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package version diff --git a/checkpoint.go b/checkpoint.go index 5ca534ea8d4..380cdd6bf29 100644 --- a/checkpoint.go +++ b/checkpoint.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package main diff --git a/cmd/generate-fixer-deprecations/main.go b/cmd/generate-fixer-deprecations/main.go index a3e76547428..4316a1605a0 100644 --- a/cmd/generate-fixer-deprecations/main.go +++ b/cmd/generate-fixer-deprecations/main.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package main diff --git a/cmd/ssh-keygen/main.go b/cmd/ssh-keygen/main.go index a15797ea811..f47eca5791f 100644 --- a/cmd/ssh-keygen/main.go +++ b/cmd/ssh-keygen/main.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package main diff --git a/command/build.go b/command/build.go index 842938adcb9..c77687c3586 100644 --- a/command/build.go +++ b/command/build.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/build_cancellation_test.go b/command/build_cancellation_test.go index 348b1d9180e..0ada639074a 100644 --- a/command/build_cancellation_test.go +++ b/command/build_cancellation_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/build_cleanup_script_test.go b/command/build_cleanup_script_test.go index 82f7fdd94e4..35639a4f4a9 100644 --- a/command/build_cleanup_script_test.go +++ b/command/build_cleanup_script_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/build_parallel_test.go b/command/build_parallel_test.go index 959134fd539..4758505241b 100644 --- a/command/build_parallel_test.go +++ b/command/build_parallel_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/build_test.go b/command/build_test.go index 8dac9b8e0aa..00685e98dc7 100644 --- a/command/build_test.go +++ b/command/build_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/build_timeout_test.go b/command/build_timeout_test.go index 9896894ec2b..d97485b3490 100644 --- a/command/build_timeout_test.go +++ b/command/build_timeout_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/build_windows_test.go b/command/build_windows_test.go index 5c99cd95786..b18f4e3153a 100644 --- a/command/build_windows_test.go +++ b/command/build_windows_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/cli.go b/command/cli.go index de47a735c22..4ad80440f0e 100644 --- a/command/cli.go +++ b/command/cli.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/command_test.go b/command/command_test.go index 4666a4109b8..fcbec5fb0a7 100644 --- a/command/command_test.go +++ b/command/command_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/config_file_unix.go b/command/config_file_unix.go index 31a8db0ee44..ec3932f9e0b 100644 --- a/command/config_file_unix.go +++ b/command/config_file_unix.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:build darwin || freebsd || linux || netbsd || openbsd || solaris // +build darwin freebsd linux netbsd openbsd solaris diff --git a/command/config_file_windows.go b/command/config_file_windows.go index 52cdf420c7c..ede0a618687 100644 --- a/command/config_file_windows.go +++ b/command/config_file_windows.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:build windows // +build windows diff --git a/command/console.go b/command/console.go index 54281fdd6ed..f942ec4bd4f 100644 --- a/command/console.go +++ b/command/console.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/console_test.go b/command/console_test.go index b8c4989ff99..7b4bbc7d7b8 100644 --- a/command/console_test.go +++ b/command/console_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/enumflag/flag.go b/command/enumflag/flag.go index cbb58769190..c50e70b0714 100644 --- a/command/enumflag/flag.go +++ b/command/enumflag/flag.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package enumflag diff --git a/command/exec_test.go b/command/exec_test.go index cfdbda66c3a..c4bf24ab157 100644 --- a/command/exec_test.go +++ b/command/exec_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/fix.go b/command/fix.go index 893c788ef8d..708be59717d 100644 --- a/command/fix.go +++ b/command/fix.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/fix_test.go b/command/fix_test.go index d092a8091c4..1c916b56b2a 100644 --- a/command/fix_test.go +++ b/command/fix_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/flag-kv/flag.go b/command/flag-kv/flag.go index 96cda3120ce..4361545ab2f 100644 --- a/command/flag-kv/flag.go +++ b/command/flag-kv/flag.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package kvflag diff --git a/command/flag-kv/flag_json.go b/command/flag-kv/flag_json.go index 25d34ef5de5..290bb4aa837 100644 --- a/command/flag-kv/flag_json.go +++ b/command/flag-kv/flag_json.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package kvflag diff --git a/command/flag-kv/flag_json_test.go b/command/flag-kv/flag_json_test.go index ab8a67e0ba3..d22f3545fd5 100644 --- a/command/flag-kv/flag_json_test.go +++ b/command/flag-kv/flag_json_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package kvflag diff --git a/command/flag-kv/flag_strings.go b/command/flag-kv/flag_strings.go index d639bde6abb..f99122ec971 100644 --- a/command/flag-kv/flag_strings.go +++ b/command/flag-kv/flag_strings.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package kvflag diff --git a/command/flag-kv/flag_strings_test.go b/command/flag-kv/flag_strings_test.go index 070e95c0d48..721265d1e52 100644 --- a/command/flag-kv/flag_strings_test.go +++ b/command/flag-kv/flag_strings_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package kvflag diff --git a/command/flag-kv/flag_test.go b/command/flag-kv/flag_test.go index 28644119578..5aed4ef33db 100644 --- a/command/flag-kv/flag_test.go +++ b/command/flag-kv/flag_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package kvflag diff --git a/command/flag-slice/flag.go b/command/flag-slice/flag.go index b75580ec227..7f8b9db269c 100644 --- a/command/flag-slice/flag.go +++ b/command/flag-slice/flag.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package sliceflag diff --git a/command/flag-slice/flag_test.go b/command/flag-slice/flag_test.go index d70b270b53b..fd225889284 100644 --- a/command/flag-slice/flag_test.go +++ b/command/flag-slice/flag_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package sliceflag diff --git a/command/fmt.go b/command/fmt.go index 9cfaa46b8d4..095a6fc8c69 100644 --- a/command/fmt.go +++ b/command/fmt.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/fmt_test.go b/command/fmt_test.go index b642cdef5ad..8fd058b379b 100644 --- a/command/fmt_test.go +++ b/command/fmt_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/hcl2_upgrade.go b/command/hcl2_upgrade.go index 08b7d2ad745..7802d409875 100644 --- a/command/hcl2_upgrade.go +++ b/command/hcl2_upgrade.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/hcl2_upgrade_test.go b/command/hcl2_upgrade_test.go index afa8575aa8e..f0ffc7676f2 100644 --- a/command/hcl2_upgrade_test.go +++ b/command/hcl2_upgrade_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/init.go b/command/init.go index b95eb86992b..5a066d96276 100644 --- a/command/init.go +++ b/command/init.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/init_test.go b/command/init_test.go index 8a10cbb0c73..07246d50081 100644 --- a/command/init_test.go +++ b/command/init_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:build amd64 && (darwin || windows || linux) diff --git a/command/inspect.go b/command/inspect.go index 827d61f70b1..7a77ab76bb8 100644 --- a/command/inspect.go +++ b/command/inspect.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/inspect_test.go b/command/inspect_test.go index 0d87ee71a71..f417b4cdc09 100644 --- a/command/inspect_test.go +++ b/command/inspect_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/meta.go b/command/meta.go index fb3d9efb2a7..1989027499b 100644 --- a/command/meta.go +++ b/command/meta.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/plugins.go b/command/plugins.go index 0b415d8f5c0..6bc286dd19c 100644 --- a/command/plugins.go +++ b/command/plugins.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/plugins_install.go b/command/plugins_install.go index d40bb46bd80..7082f134a8f 100644 --- a/command/plugins_install.go +++ b/command/plugins_install.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/plugins_install_test.go b/command/plugins_install_test.go index 7f34cb5dddd..105b9b00067 100644 --- a/command/plugins_install_test.go +++ b/command/plugins_install_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:build amd64 && (darwin || windows || linux) diff --git a/command/plugins_installed.go b/command/plugins_installed.go index 58b4381a985..114c25b55a9 100644 --- a/command/plugins_installed.go +++ b/command/plugins_installed.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/plugins_remove.go b/command/plugins_remove.go index 32d77749c08..ac8c0882b8f 100644 --- a/command/plugins_remove.go +++ b/command/plugins_remove.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/plugins_remove_test.go b/command/plugins_remove_test.go index 83b2463bc02..61273487632 100644 --- a/command/plugins_remove_test.go +++ b/command/plugins_remove_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:build amd64 && (darwin || windows || linux) diff --git a/command/plugins_required.go b/command/plugins_required.go index d484322291c..04f86b3628c 100644 --- a/command/plugins_required.go +++ b/command/plugins_required.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/signal.go b/command/signal.go index 5980192baf4..a47ac58aa22 100644 --- a/command/signal.go +++ b/command/signal.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/test_utils.go b/command/test_utils.go index 41e02dbcb7b..852343085cc 100644 --- a/command/test_utils.go +++ b/command/test_utils.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/utils.go b/command/utils.go index 9fee02d419c..359a96b9726 100644 --- a/command/utils.go +++ b/command/utils.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/utils_test.go b/command/utils_test.go index 426ea653eea..6af1f2c4881 100644 --- a/command/utils_test.go +++ b/command/utils_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/validate.go b/command/validate.go index 2b7e2107b0d..60199bdbf71 100644 --- a/command/validate.go +++ b/command/validate.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/validate_test.go b/command/validate_test.go index 5b51f378158..5b9da04d78b 100644 --- a/command/validate_test.go +++ b/command/validate_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/vendored_plugins.go b/command/vendored_plugins.go index d6e5f836338..d412db98bf6 100644 --- a/command/vendored_plugins.go +++ b/command/vendored_plugins.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/version.go b/command/version.go index 3a6db86d712..976221efed5 100644 --- a/command/version.go +++ b/command/version.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/command/version_test.go b/command/version_test.go index cd2b67e5c6d..60f97f4f38e 100644 --- a/command/version_test.go +++ b/command/version_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package command diff --git a/commands.go b/commands.go index 01e3bf56e73..9b2d3ebdf35 100644 --- a/commands.go +++ b/commands.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package main diff --git a/config.go b/config.go index af679dd8e0b..6688d6a74a5 100644 --- a/config.go +++ b/config.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package main diff --git a/config_test.go b/config_test.go index 772fea4fe3b..1a583a8c3a7 100644 --- a/config_test.go +++ b/config_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package main diff --git a/datasource/hcp-packer-image/data.go b/datasource/hcp-packer-image/data.go index 3e473e145e4..aba7a6d19bf 100644 --- a/datasource/hcp-packer-image/data.go +++ b/datasource/hcp-packer-image/data.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:generate packer-sdc struct-markdown //go:generate packer-sdc mapstructure-to-hcl2 -type DatasourceOutput,Config diff --git a/datasource/hcp-packer-iteration/data.go b/datasource/hcp-packer-iteration/data.go index 7a7be3e4979..ff0bbd46f34 100644 --- a/datasource/hcp-packer-iteration/data.go +++ b/datasource/hcp-packer-iteration/data.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:generate packer-sdc struct-markdown //go:generate packer-sdc mapstructure-to-hcl2 -type DatasourceOutput,Config diff --git a/datasource/hcp-packer-iteration/data_acc_test.go b/datasource/hcp-packer-iteration/data_acc_test.go index bf91e870d7e..82e3b78e5f7 100644 --- a/datasource/hcp-packer-iteration/data_acc_test.go +++ b/datasource/hcp-packer-iteration/data_acc_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcp_packer_iteration diff --git a/datasource/http/data.go b/datasource/http/data.go index ec7a1b3e55c..ef77adca2ba 100644 --- a/datasource/http/data.go +++ b/datasource/http/data.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:generate packer-sdc struct-markdown //go:generate packer-sdc mapstructure-to-hcl2 -type DatasourceOutput,Config diff --git a/datasource/http/data_acc_test.go b/datasource/http/data_acc_test.go index ffad0219048..c5a92718e67 100644 --- a/datasource/http/data_acc_test.go +++ b/datasource/http/data_acc_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package http diff --git a/datasource/null/data.go b/datasource/null/data.go index 308e06217d7..90c8064aefd 100644 --- a/datasource/null/data.go +++ b/datasource/null/data.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:generate packer-sdc struct-markdown //go:generate packer-sdc mapstructure-to-hcl2 -type DatasourceOutput,Config diff --git a/fix/fixer.go b/fix/fixer.go index 3de4bc1f814..3fd30cacf11 100644 --- a/fix/fixer.go +++ b/fix/fixer.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_amazon_enhanced_networking.go b/fix/fixer_amazon_enhanced_networking.go index 708d2f5bc30..f5c0aa15ed0 100644 --- a/fix/fixer_amazon_enhanced_networking.go +++ b/fix/fixer_amazon_enhanced_networking.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_amazon_enhanced_networking_test.go b/fix/fixer_amazon_enhanced_networking_test.go index 4abdcc5f4d1..c92293d96dd 100644 --- a/fix/fixer_amazon_enhanced_networking_test.go +++ b/fix/fixer_amazon_enhanced_networking_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_amazon_private_ip.go b/fix/fixer_amazon_private_ip.go index ee18770b40a..f2ca9a26948 100644 --- a/fix/fixer_amazon_private_ip.go +++ b/fix/fixer_amazon_private_ip.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_amazon_private_ip_test.go b/fix/fixer_amazon_private_ip_test.go index 554e2e7ee3b..7d78e396b7b 100644 --- a/fix/fixer_amazon_private_ip_test.go +++ b/fix/fixer_amazon_private_ip_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_amazon_shutdown_behavior.go b/fix/fixer_amazon_shutdown_behavior.go index c7e2db0d315..b779fc10766 100644 --- a/fix/fixer_amazon_shutdown_behavior.go +++ b/fix/fixer_amazon_shutdown_behavior.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_amazon_shutdown_behavior_test.go b/fix/fixer_amazon_shutdown_behavior_test.go index 87058ea9054..5af1f59c5cd 100644 --- a/fix/fixer_amazon_shutdown_behavior_test.go +++ b/fix/fixer_amazon_shutdown_behavior_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_amazon_spot_price_product.go b/fix/fixer_amazon_spot_price_product.go index b701e1d9f59..7c49afeb9ce 100644 --- a/fix/fixer_amazon_spot_price_product.go +++ b/fix/fixer_amazon_spot_price_product.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_amazon_temporary_security_group_cidrs.go b/fix/fixer_amazon_temporary_security_group_cidrs.go index ffd75eb364d..bd9a9b019b8 100644 --- a/fix/fixer_amazon_temporary_security_group_cidrs.go +++ b/fix/fixer_amazon_temporary_security_group_cidrs.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_amazon_temporary_security_group_cidrs_test.go b/fix/fixer_amazon_temporary_security_group_cidrs_test.go index 2ed9f4bb261..28dac694904 100644 --- a/fix/fixer_amazon_temporary_security_group_cidrs_test.go +++ b/fix/fixer_amazon_temporary_security_group_cidrs_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_azure_exclude_from_latest.go b/fix/fixer_azure_exclude_from_latest.go index 210b59f46ac..b85f1da6d67 100644 --- a/fix/fixer_azure_exclude_from_latest.go +++ b/fix/fixer_azure_exclude_from_latest.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_azure_exclude_from_latest_test.go b/fix/fixer_azure_exclude_from_latest_test.go index a3cd70d538d..e7e16e9bde8 100644 --- a/fix/fixer_azure_exclude_from_latest_test.go +++ b/fix/fixer_azure_exclude_from_latest_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_clean_image_name.go b/fix/fixer_clean_image_name.go index 423d2e34035..981e2e36f41 100644 --- a/fix/fixer_clean_image_name.go +++ b/fix/fixer_clean_image_name.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_clean_image_name_test.go b/fix/fixer_clean_image_name_test.go index 385e6f113df..7a95ac2a0f1 100644 --- a/fix/fixer_clean_image_name_test.go +++ b/fix/fixer_clean_image_name_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_comm_config.go b/fix/fixer_comm_config.go index 6f2c49af8e7..3d02fcdac33 100644 --- a/fix/fixer_comm_config.go +++ b/fix/fixer_comm_config.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_comm_config_test.go b/fix/fixer_comm_config_test.go index 52beb052de1..c0e22bb7e06 100644 --- a/fix/fixer_comm_config_test.go +++ b/fix/fixer_comm_config_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_createtime.go b/fix/fixer_createtime.go index 0412c4d9afb..345ec750242 100644 --- a/fix/fixer_createtime.go +++ b/fix/fixer_createtime.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_createtime_test.go b/fix/fixer_createtime_test.go index a7350966812..9c78b525ac0 100644 --- a/fix/fixer_createtime_test.go +++ b/fix/fixer_createtime_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_docker_email.go b/fix/fixer_docker_email.go index 3a5883f2b9b..6a644210cef 100644 --- a/fix/fixer_docker_email.go +++ b/fix/fixer_docker_email.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_galaxy_command.go b/fix/fixer_galaxy_command.go index f5988d9bc27..df36558275b 100644 --- a/fix/fixer_galaxy_command.go +++ b/fix/fixer_galaxy_command.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_galaxy_command_test.go b/fix/fixer_galaxy_command_test.go index ee067b174fa..125039240c8 100644 --- a/fix/fixer_galaxy_command_test.go +++ b/fix/fixer_galaxy_command_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_hyperv_cpu_and_ram_naming.go b/fix/fixer_hyperv_cpu_and_ram_naming.go index 4983b5cb4fc..3c655bb2ecd 100644 --- a/fix/fixer_hyperv_cpu_and_ram_naming.go +++ b/fix/fixer_hyperv_cpu_and_ram_naming.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_hyperv_deprecations.go b/fix/fixer_hyperv_deprecations.go index 12714d9d71b..191a8f0d8df 100644 --- a/fix/fixer_hyperv_deprecations.go +++ b/fix/fixer_hyperv_deprecations.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_hyperv_deprecations_test.go b/fix/fixer_hyperv_deprecations_test.go index 00154e2b9a4..1f9672d42ed 100644 --- a/fix/fixer_hyperv_deprecations_test.go +++ b/fix/fixer_hyperv_deprecations_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_hyperv_vmxc_typo.go b/fix/fixer_hyperv_vmxc_typo.go index f9c5d63d969..c2c57fe8071 100644 --- a/fix/fixer_hyperv_vmxc_typo.go +++ b/fix/fixer_hyperv_vmxc_typo.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_hyperv_vmxc_typo_test.go b/fix/fixer_hyperv_vmxc_typo_test.go index 1f7ac625a0b..c88a1d40d8b 100644 --- a/fix/fixer_hyperv_vmxc_typo_test.go +++ b/fix/fixer_hyperv_vmxc_typo_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_iso_checksum_type_and_url.go b/fix/fixer_iso_checksum_type_and_url.go index fc50055ac7e..df61844fa61 100644 --- a/fix/fixer_iso_checksum_type_and_url.go +++ b/fix/fixer_iso_checksum_type_and_url.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_iso_checksum_type_and_url_test.go b/fix/fixer_iso_checksum_type_and_url_test.go index f3492dc50cb..556ab966391 100644 --- a/fix/fixer_iso_checksum_type_and_url_test.go +++ b/fix/fixer_iso_checksum_type_and_url_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_iso_md5.go b/fix/fixer_iso_md5.go index 074a0b2bab3..3d6acb86aa5 100644 --- a/fix/fixer_iso_md5.go +++ b/fix/fixer_iso_md5.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_iso_md5_test.go b/fix/fixer_iso_md5_test.go index fc396507977..106fff6096c 100644 --- a/fix/fixer_iso_md5_test.go +++ b/fix/fixer_iso_md5_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_parallels_deprecations.go b/fix/fixer_parallels_deprecations.go index 36ad9a708eb..b287f58f003 100644 --- a/fix/fixer_parallels_deprecations.go +++ b/fix/fixer_parallels_deprecations.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_parallels_deprecations_test.go b/fix/fixer_parallels_deprecations_test.go index a5fd425385d..584129693d5 100644 --- a/fix/fixer_parallels_deprecations_test.go +++ b/fix/fixer_parallels_deprecations_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_parallels_headless.go b/fix/fixer_parallels_headless.go index 164deff3ea0..cd645df1181 100644 --- a/fix/fixer_parallels_headless.go +++ b/fix/fixer_parallels_headless.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_parallels_headless_test.go b/fix/fixer_parallels_headless_test.go index bc3efbcc0e7..62f5654bb27 100644 --- a/fix/fixer_parallels_headless_test.go +++ b/fix/fixer_parallels_headless_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_powershell_escapes.go b/fix/fixer_powershell_escapes.go index d33d046d628..a96bc35fd99 100644 --- a/fix/fixer_powershell_escapes.go +++ b/fix/fixer_powershell_escapes.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_pp_docker_tag_tags.go b/fix/fixer_pp_docker_tag_tags.go index 49e33ebee91..e21a9c26dfb 100644 --- a/fix/fixer_pp_docker_tag_tags.go +++ b/fix/fixer_pp_docker_tag_tags.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_pp_docker_tag_tags_test.go b/fix/fixer_pp_docker_tag_tags_test.go index 908c0768efb..97b600bbc3a 100644 --- a/fix/fixer_pp_docker_tag_tags_test.go +++ b/fix/fixer_pp_docker_tag_tags_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_pp_manifest_filename.go b/fix/fixer_pp_manifest_filename.go index 9f66bc7ad2e..a9447d74050 100644 --- a/fix/fixer_pp_manifest_filename.go +++ b/fix/fixer_pp_manifest_filename.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_pp_manifest_filename_test.go b/fix/fixer_pp_manifest_filename_test.go index ab86324e906..95eaeae68a3 100644 --- a/fix/fixer_pp_manifest_filename_test.go +++ b/fix/fixer_pp_manifest_filename_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_pp_vagrant_override.go b/fix/fixer_pp_vagrant_override.go index eee262212c8..c70ab1f5929 100644 --- a/fix/fixer_pp_vagrant_override.go +++ b/fix/fixer_pp_vagrant_override.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_pp_vagrant_override_test.go b/fix/fixer_pp_vagrant_override_test.go index 1ba56eb6821..29f7edba658 100644 --- a/fix/fixer_pp_vagrant_override_test.go +++ b/fix/fixer_pp_vagrant_override_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_proxmox_type.go b/fix/fixer_proxmox_type.go index 602e82a9435..5c08a35631b 100644 --- a/fix/fixer_proxmox_type.go +++ b/fix/fixer_proxmox_type.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_proxmox_type_test.go b/fix/fixer_proxmox_type_test.go index e0ea378d572..53b9d855c8e 100644 --- a/fix/fixer_proxmox_type_test.go +++ b/fix/fixer_proxmox_type_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_qemu_disk_size.go b/fix/fixer_qemu_disk_size.go index 7cd53800393..5fd4184e571 100644 --- a/fix/fixer_qemu_disk_size.go +++ b/fix/fixer_qemu_disk_size.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_qemu_disk_size_test.go b/fix/fixer_qemu_disk_size_test.go index 3d141a5195c..a05e6f75239 100644 --- a/fix/fixer_qemu_disk_size_test.go +++ b/fix/fixer_qemu_disk_size_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_qemu_host_port.go b/fix/fixer_qemu_host_port.go index 4cd96b53ac1..1b92b04b316 100644 --- a/fix/fixer_qemu_host_port.go +++ b/fix/fixer_qemu_host_port.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_qemu_host_port_test.go b/fix/fixer_qemu_host_port_test.go index 64aaeddcbb7..7a9bf529c00 100644 --- a/fix/fixer_qemu_host_port_test.go +++ b/fix/fixer_qemu_host_port_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_scaleway_access_key.go b/fix/fixer_scaleway_access_key.go index c7e45484fab..cf9e173928a 100644 --- a/fix/fixer_scaleway_access_key.go +++ b/fix/fixer_scaleway_access_key.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_scaleway_access_key_test.go b/fix/fixer_scaleway_access_key_test.go index 365bb467533..a91f1886cad 100644 --- a/fix/fixer_scaleway_access_key_test.go +++ b/fix/fixer_scaleway_access_key_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_ssh_timeout.go b/fix/fixer_ssh_timeout.go index fc675199912..d73b47d66e8 100644 --- a/fix/fixer_ssh_timeout.go +++ b/fix/fixer_ssh_timeout.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_ssh_timeout_test.go b/fix/fixer_ssh_timeout_test.go index 558a94d9e23..0c89b7cf7b3 100644 --- a/fix/fixer_ssh_timeout_test.go +++ b/fix/fixer_ssh_timeout_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_sshdisableagent.go b/fix/fixer_sshdisableagent.go index 1ed262f225c..aa36504f010 100644 --- a/fix/fixer_sshdisableagent.go +++ b/fix/fixer_sshdisableagent.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_sshdisableagent_test.go b/fix/fixer_sshdisableagent_test.go index 9fc67bd763e..1c5ecc38c87 100644 --- a/fix/fixer_sshdisableagent_test.go +++ b/fix/fixer_sshdisableagent_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_sshkeypath.go b/fix/fixer_sshkeypath.go index 48bc8eee198..6c2f8ee0367 100644 --- a/fix/fixer_sshkeypath.go +++ b/fix/fixer_sshkeypath.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_sshkeypath_test.go b/fix/fixer_sshkeypath_test.go index c95917902a1..561db0ef788 100644 --- a/fix/fixer_sshkeypath_test.go +++ b/fix/fixer_sshkeypath_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_test.go b/fix/fixer_test.go index 091084ac794..2b09611521b 100644 --- a/fix/fixer_test.go +++ b/fix/fixer_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_virtualbox_gaattach.go b/fix/fixer_virtualbox_gaattach.go index 23e8c7fdff2..5fc0834c72b 100644 --- a/fix/fixer_virtualbox_gaattach.go +++ b/fix/fixer_virtualbox_gaattach.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_virtualbox_gaattach_test.go b/fix/fixer_virtualbox_gaattach_test.go index 83fa00b59e7..62aa5b159a8 100644 --- a/fix/fixer_virtualbox_gaattach_test.go +++ b/fix/fixer_virtualbox_gaattach_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_virtualbox_rename.go b/fix/fixer_virtualbox_rename.go index a3723f2ed27..86d53fd1ff4 100644 --- a/fix/fixer_virtualbox_rename.go +++ b/fix/fixer_virtualbox_rename.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_virtualbox_rename_test.go b/fix/fixer_virtualbox_rename_test.go index fc570f3095b..932975bd0a6 100644 --- a/fix/fixer_virtualbox_rename_test.go +++ b/fix/fixer_virtualbox_rename_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_vmware_compaction.go b/fix/fixer_vmware_compaction.go index 906ff4d197d..cc833186dd1 100644 --- a/fix/fixer_vmware_compaction.go +++ b/fix/fixer_vmware_compaction.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_vmware_compaction_test.go b/fix/fixer_vmware_compaction_test.go index bd107705544..eb5494a3159 100644 --- a/fix/fixer_vmware_compaction_test.go +++ b/fix/fixer_vmware_compaction_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_vmware_rename.go b/fix/fixer_vmware_rename.go index 5e7db8a6ed8..c81e01b8577 100644 --- a/fix/fixer_vmware_rename.go +++ b/fix/fixer_vmware_rename.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_vmware_rename_test.go b/fix/fixer_vmware_rename_test.go index 6d8710cfb74..4c2cb095dc3 100644 --- a/fix/fixer_vmware_rename_test.go +++ b/fix/fixer_vmware_rename_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_vsphere_network_storage.go b/fix/fixer_vsphere_network_storage.go index 87723a9e9fc..f82bc20463e 100644 --- a/fix/fixer_vsphere_network_storage.go +++ b/fix/fixer_vsphere_network_storage.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/fixer_vsphere_network_storage_test.go b/fix/fixer_vsphere_network_storage_test.go index 54ebb8015e1..59e4bbf1c62 100644 --- a/fix/fixer_vsphere_network_storage_test.go +++ b/fix/fixer_vsphere_network_storage_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/fix/helpers.go b/fix/helpers.go index f3812674e3c..d4d01b22123 100644 --- a/fix/helpers.go +++ b/fix/helpers.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package fix diff --git a/hcl2template/addrs/doc.go b/hcl2template/addrs/doc.go index 9768f453d12..783284822ba 100644 --- a/hcl2template/addrs/doc.go +++ b/hcl2template/addrs/doc.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 // Package addrs contains types that represent "addresses", which are // references to specific objects within a Packer configuration. diff --git a/hcl2template/addrs/input_variable.go b/hcl2template/addrs/input_variable.go index e2821e7e5b1..9ffbf6fb0a4 100644 --- a/hcl2template/addrs/input_variable.go +++ b/hcl2template/addrs/input_variable.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package addrs diff --git a/hcl2template/addrs/parse_ref.go b/hcl2template/addrs/parse_ref.go index 866ced8f459..3f6c7320179 100644 --- a/hcl2template/addrs/parse_ref.go +++ b/hcl2template/addrs/parse_ref.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package addrs diff --git a/hcl2template/addrs/plugin.go b/hcl2template/addrs/plugin.go index 8b4891044fc..9db29b31717 100644 --- a/hcl2template/addrs/plugin.go +++ b/hcl2template/addrs/plugin.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package addrs diff --git a/hcl2template/addrs/plugin_test.go b/hcl2template/addrs/plugin_test.go index 491d2221a1c..e99a72416b8 100644 --- a/hcl2template/addrs/plugin_test.go +++ b/hcl2template/addrs/plugin_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package addrs diff --git a/hcl2template/addrs/referenceable.go b/hcl2template/addrs/referenceable.go index 9b54c5bac49..2b11d6008bc 100644 --- a/hcl2template/addrs/referenceable.go +++ b/hcl2template/addrs/referenceable.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package addrs diff --git a/hcl2template/common_test.go b/hcl2template/common_test.go index cb37a7bf996..831ce5d3596 100644 --- a/hcl2template/common_test.go +++ b/hcl2template/common_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/components.go b/hcl2template/components.go index 956a753f38b..e83f8b3768d 100644 --- a/hcl2template/components.go +++ b/hcl2template/components.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/decode.go b/hcl2template/decode.go index 137e54eec05..1dcd34c55ce 100644 --- a/hcl2template/decode.go +++ b/hcl2template/decode.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/docs.go b/hcl2template/docs.go index 2b19f42b029..cf970f2e8e1 100644 --- a/hcl2template/docs.go +++ b/hcl2template/docs.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 // Package hcl2template defines code to parse hcl2 template files. // diff --git a/hcl2template/formatter.go b/hcl2template/formatter.go index 7e1cab56aa3..5505cde4052 100644 --- a/hcl2template/formatter.go +++ b/hcl2template/formatter.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/formatter_test.go b/hcl2template/formatter_test.go index 42051c0a8d3..07febb6f439 100644 --- a/hcl2template/formatter_test.go +++ b/hcl2template/formatter_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/function/Consul.go b/hcl2template/function/Consul.go index 4f51ca41d15..e1e51b2299b 100644 --- a/hcl2template/function/Consul.go +++ b/hcl2template/function/Consul.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package function diff --git a/hcl2template/function/aws_secretetkey.go b/hcl2template/function/aws_secretetkey.go index 50b4fe9ee53..4684c9bf2d2 100644 --- a/hcl2template/function/aws_secretetkey.go +++ b/hcl2template/function/aws_secretetkey.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package function diff --git a/hcl2template/function/datetime.go b/hcl2template/function/datetime.go index 1d807e407d3..066db18db39 100644 --- a/hcl2template/function/datetime.go +++ b/hcl2template/function/datetime.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package function diff --git a/hcl2template/function/datetime_test.go b/hcl2template/function/datetime_test.go index 686564803cc..416b6fa23f3 100644 --- a/hcl2template/function/datetime_test.go +++ b/hcl2template/function/datetime_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package function diff --git a/hcl2template/function/env.go b/hcl2template/function/env.go index aeb632aba75..34c09a8b921 100644 --- a/hcl2template/function/env.go +++ b/hcl2template/function/env.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package function diff --git a/hcl2template/function/index.go b/hcl2template/function/index.go index 3c5f73ccda9..cb4f0c51921 100644 --- a/hcl2template/function/index.go +++ b/hcl2template/function/index.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package function diff --git a/hcl2template/function/index_test.go b/hcl2template/function/index_test.go index d70511ad516..0a46da34ce8 100644 --- a/hcl2template/function/index_test.go +++ b/hcl2template/function/index_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package function diff --git a/hcl2template/function/length.go b/hcl2template/function/length.go index 90ab7997ec9..23b5969af10 100644 --- a/hcl2template/function/length.go +++ b/hcl2template/function/length.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package function diff --git a/hcl2template/function/length_test.go b/hcl2template/function/length_test.go index 2c6f10c49d6..0a68c126c51 100644 --- a/hcl2template/function/length_test.go +++ b/hcl2template/function/length_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package function diff --git a/hcl2template/function/templatefile.go b/hcl2template/function/templatefile.go index eee0092197c..0b927cf834a 100644 --- a/hcl2template/function/templatefile.go +++ b/hcl2template/function/templatefile.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package function diff --git a/hcl2template/function/templatefile_test.go b/hcl2template/function/templatefile_test.go index a4536b59ca5..f12967dd3c5 100644 --- a/hcl2template/function/templatefile_test.go +++ b/hcl2template/function/templatefile_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package function diff --git a/hcl2template/function/vault.go b/hcl2template/function/vault.go index 4aa49da6753..3b9c092442e 100644 --- a/hcl2template/function/vault.go +++ b/hcl2template/function/vault.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package function diff --git a/hcl2template/functions.go b/hcl2template/functions.go index cc144940cf6..c74754bdf90 100644 --- a/hcl2template/functions.go +++ b/hcl2template/functions.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/internal/mock.go b/hcl2template/internal/mock.go index 86d5b0e0e06..4d3adb14ae5 100644 --- a/hcl2template/internal/mock.go +++ b/hcl2template/internal/mock.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:generate packer-sdc mapstructure-to-hcl2 -type MockConfig,NestedMockConfig,MockTag diff --git a/hcl2template/parser.go b/hcl2template/parser.go index a724bb807bd..43b43bcd6f0 100644 --- a/hcl2template/parser.go +++ b/hcl2template/parser.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/plugin.go b/hcl2template/plugin.go index 4a5c0186647..92b9cf2f30b 100644 --- a/hcl2template/plugin.go +++ b/hcl2template/plugin.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/repl/format.go b/hcl2template/repl/format.go index 8e596e4be9d..8d99a4392d0 100644 --- a/hcl2template/repl/format.go +++ b/hcl2template/repl/format.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package repl diff --git a/hcl2template/repl/repl.go b/hcl2template/repl/repl.go index 7a698f87f5b..eb13353eed0 100644 --- a/hcl2template/repl/repl.go +++ b/hcl2template/repl/repl.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 // Package repl provides the structs and functions necessary to run REPL for // HCL2. The REPL allows experimentation of HCL2 interpolations without having diff --git a/hcl2template/shim/mock.go b/hcl2template/shim/mock.go index adeda84dd39..40fdbca4d32 100644 --- a/hcl2template/shim/mock.go +++ b/hcl2template/shim/mock.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:generate packer-sdc mapstructure-to-hcl2 -type MockConfig,NestedMockConfig,MockTag diff --git a/hcl2template/shim/values.go b/hcl2template/shim/values.go index 88580f1f2c1..096c8c23d56 100644 --- a/hcl2template/shim/values.go +++ b/hcl2template/shim/values.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2shim diff --git a/hcl2template/shim/values_test.go b/hcl2template/shim/values_test.go index 46e154002cd..4449e711bc9 100644 --- a/hcl2template/shim/values_test.go +++ b/hcl2template/shim/values_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2shim diff --git a/hcl2template/types.build.from.go b/hcl2template/types.build.from.go index 9661fa167b0..fb1544ef53a 100644 --- a/hcl2template/types.build.from.go +++ b/hcl2template/types.build.from.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/types.build.go b/hcl2template/types.build.go index 2ab6aa718fe..648305ee202 100644 --- a/hcl2template/types.build.go +++ b/hcl2template/types.build.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/types.build.hcp_packer_registry.go b/hcl2template/types.build.hcp_packer_registry.go index 6d1b99f2ec9..b64b3ff4e55 100644 --- a/hcl2template/types.build.hcp_packer_registry.go +++ b/hcl2template/types.build.hcp_packer_registry.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/types.build.hcp_packer_registry_test.go b/hcl2template/types.build.hcp_packer_registry_test.go index 18c8ca3fa34..3ada389c29d 100644 --- a/hcl2template/types.build.hcp_packer_registry_test.go +++ b/hcl2template/types.build.hcp_packer_registry_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/types.build.post-processor.go b/hcl2template/types.build.post-processor.go index 1216f32ebfd..8844eadff11 100644 --- a/hcl2template/types.build.post-processor.go +++ b/hcl2template/types.build.post-processor.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/types.build.provisioners.go b/hcl2template/types.build.provisioners.go index 8459f1be921..b08eca59f63 100644 --- a/hcl2template/types.build.provisioners.go +++ b/hcl2template/types.build.provisioners.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/types.build.provisioners_test.go b/hcl2template/types.build.provisioners_test.go index e19570dff29..284651f2cbd 100644 --- a/hcl2template/types.build.provisioners_test.go +++ b/hcl2template/types.build.provisioners_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/types.build_test.go b/hcl2template/types.build_test.go index 376646c6376..8647821dd18 100644 --- a/hcl2template/types.build_test.go +++ b/hcl2template/types.build_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/types.datasource.go b/hcl2template/types.datasource.go index 9ae5e995ecc..8ac2c160827 100644 --- a/hcl2template/types.datasource.go +++ b/hcl2template/types.datasource.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/types.datasource_test.go b/hcl2template/types.datasource_test.go index b22f438d64b..d12fcafd076 100644 --- a/hcl2template/types.datasource_test.go +++ b/hcl2template/types.datasource_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/types.hcl_post-processor.go b/hcl2template/types.hcl_post-processor.go index 26974aacedf..b9d200758de 100644 --- a/hcl2template/types.hcl_post-processor.go +++ b/hcl2template/types.hcl_post-processor.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/types.hcl_provisioner.go b/hcl2template/types.hcl_provisioner.go index 022a2fd58d1..b607a0092a2 100644 --- a/hcl2template/types.hcl_provisioner.go +++ b/hcl2template/types.hcl_provisioner.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/types.hcl_ref.go b/hcl2template/types.hcl_ref.go index 091a2043610..f3e6176dbf1 100644 --- a/hcl2template/types.hcl_ref.go +++ b/hcl2template/types.hcl_ref.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/types.packer_config.go b/hcl2template/types.packer_config.go index 003db57753c..819107e86b3 100644 --- a/hcl2template/types.packer_config.go +++ b/hcl2template/types.packer_config.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/types.packer_config_test.go b/hcl2template/types.packer_config_test.go index d8881c18415..5eae6a2f21f 100644 --- a/hcl2template/types.packer_config_test.go +++ b/hcl2template/types.packer_config_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/types.required_plugins.go b/hcl2template/types.required_plugins.go index 01c090428f8..94dfd4669b3 100644 --- a/hcl2template/types.required_plugins.go +++ b/hcl2template/types.required_plugins.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/types.required_plugins_test.go b/hcl2template/types.required_plugins_test.go index 3a1fabd4bf7..5e2b4a90c96 100644 --- a/hcl2template/types.required_plugins_test.go +++ b/hcl2template/types.required_plugins_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/types.source.go b/hcl2template/types.source.go index 1ea939d015f..46b9caac98e 100644 --- a/hcl2template/types.source.go +++ b/hcl2template/types.source.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/types.source_test.go b/hcl2template/types.source_test.go index efdddea5abe..47caeec5a75 100644 --- a/hcl2template/types.source_test.go +++ b/hcl2template/types.source_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/types.variables.go b/hcl2template/types.variables.go index 9111ced9a44..33df28a84ee 100644 --- a/hcl2template/types.variables.go +++ b/hcl2template/types.variables.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/types.variables_test.go b/hcl2template/types.variables_test.go index d0691a0910c..a19b80bd990 100644 --- a/hcl2template/types.variables_test.go +++ b/hcl2template/types.variables_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/utils.go b/hcl2template/utils.go index b74093b23fe..dc2399a1034 100644 --- a/hcl2template/utils.go +++ b/hcl2template/utils.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/version.go b/hcl2template/version.go index 920cff51031..f6f584a69a5 100644 --- a/hcl2template/version.go +++ b/hcl2template/version.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/hcl2template/version_required.go b/hcl2template/version_required.go index c418eda550a..f8c67228bfb 100644 --- a/hcl2template/version_required.go +++ b/hcl2template/version_required.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package hcl2template diff --git a/helper/wrappedreadline/wrappedreadline.go b/helper/wrappedreadline/wrappedreadline.go index 6641cb8960b..9d4bd7fcf25 100644 --- a/helper/wrappedreadline/wrappedreadline.go +++ b/helper/wrappedreadline/wrappedreadline.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 // STOLEN SHAMELESSLY FROM THE TERRAFORM REPO BECAUSE VENDORING OUT // WRAPPEDREADLINE AND WRAPPEDSTREAMS FELT LIKE TOO MUCH WORK. diff --git a/helper/wrappedreadline/wrappedreadline_solaris.go b/helper/wrappedreadline/wrappedreadline_solaris.go index fb2a9388e00..55eac364548 100644 --- a/helper/wrappedreadline/wrappedreadline_solaris.go +++ b/helper/wrappedreadline/wrappedreadline_solaris.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package wrappedreadline diff --git a/helper/wrappedreadline/wrappedreadline_unix.go b/helper/wrappedreadline/wrappedreadline_unix.go index ff621e7da9e..7d01bb3a99e 100644 --- a/helper/wrappedreadline/wrappedreadline_unix.go +++ b/helper/wrappedreadline/wrappedreadline_unix.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:build darwin || dragonfly || freebsd || (linux && !appengine) || netbsd || openbsd // +build darwin dragonfly freebsd linux,!appengine netbsd openbsd diff --git a/helper/wrappedreadline/wrappedreadline_windows.go b/helper/wrappedreadline/wrappedreadline_windows.go index d3d361579f1..88d04a06ab8 100644 --- a/helper/wrappedreadline/wrappedreadline_windows.go +++ b/helper/wrappedreadline/wrappedreadline_windows.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:build windows // +build windows diff --git a/helper/wrappedstreams/streams.go b/helper/wrappedstreams/streams.go index 80d1e66b259..1b18abf1958 100644 --- a/helper/wrappedstreams/streams.go +++ b/helper/wrappedstreams/streams.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 // STOLEN SHAMELESSLY FROM THE TERRAFORM REPO BECAUSE VENDORING OUT // WRAPPEDREADLINE AND WRAPPEDSTREAMS FELT LIKE TOO MUCH WORK. diff --git a/helper/wrappedstreams/streams_other.go b/helper/wrappedstreams/streams_other.go index 34ecf76d06a..98045b535da 100644 --- a/helper/wrappedstreams/streams_other.go +++ b/helper/wrappedstreams/streams_other.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:build !windows // +build !windows diff --git a/helper/wrappedstreams/streams_windows.go b/helper/wrappedstreams/streams_windows.go index 18489fdc268..5a0d01de4fc 100644 --- a/helper/wrappedstreams/streams_windows.go +++ b/helper/wrappedstreams/streams_windows.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:build windows // +build windows diff --git a/internal/hcp/api/client.go b/internal/hcp/api/client.go index f28999d57b6..5c8c851ae40 100644 --- a/internal/hcp/api/client.go +++ b/internal/hcp/api/client.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 // Package api provides access to the HCP Packer Registry API. package api diff --git a/internal/hcp/api/client_test.go b/internal/hcp/api/client_test.go index 16d321beb77..bb952375bf9 100644 --- a/internal/hcp/api/client_test.go +++ b/internal/hcp/api/client_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package api diff --git a/internal/hcp/api/errors.go b/internal/hcp/api/errors.go index 32a5708cc14..cff55fc9e09 100644 --- a/internal/hcp/api/errors.go +++ b/internal/hcp/api/errors.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package api diff --git a/internal/hcp/api/mock_service.go b/internal/hcp/api/mock_service.go index 9a126346e06..f9b427cbf29 100644 --- a/internal/hcp/api/mock_service.go +++ b/internal/hcp/api/mock_service.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package api diff --git a/internal/hcp/api/service.go b/internal/hcp/api/service.go index a0ee9f8ce4c..df56bdbd58c 100644 --- a/internal/hcp/api/service.go +++ b/internal/hcp/api/service.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package api diff --git a/internal/hcp/env/env.go b/internal/hcp/env/env.go index 0186be1671f..972fd68f77e 100644 --- a/internal/hcp/env/env.go +++ b/internal/hcp/env/env.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 // Package env provides HCP Packer environment variables. package env diff --git a/internal/hcp/env/env_test.go b/internal/hcp/env/env_test.go index 1de73f5913d..a773b41c928 100644 --- a/internal/hcp/env/env_test.go +++ b/internal/hcp/env/env_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package env diff --git a/internal/hcp/env/variables.go b/internal/hcp/env/variables.go index 8c74b600d47..a8c1a493e13 100644 --- a/internal/hcp/env/variables.go +++ b/internal/hcp/env/variables.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package env diff --git a/internal/hcp/registry/artifact.go b/internal/hcp/registry/artifact.go index a0b0049cc9f..7257d302f3d 100644 --- a/internal/hcp/registry/artifact.go +++ b/internal/hcp/registry/artifact.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package registry diff --git a/internal/hcp/registry/errors.go b/internal/hcp/registry/errors.go index a93f960f996..8bc458d241b 100644 --- a/internal/hcp/registry/errors.go +++ b/internal/hcp/registry/errors.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package registry diff --git a/internal/hcp/registry/hcl.go b/internal/hcp/registry/hcl.go index 64c57a51761..531fd648c7e 100644 --- a/internal/hcp/registry/hcl.go +++ b/internal/hcp/registry/hcl.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package registry diff --git a/internal/hcp/registry/hcp.go b/internal/hcp/registry/hcp.go index 838350b7641..c0d12726e2d 100644 --- a/internal/hcp/registry/hcp.go +++ b/internal/hcp/registry/hcp.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package registry diff --git a/internal/hcp/registry/json.go b/internal/hcp/registry/json.go index bb0bba14674..92aa6db904c 100644 --- a/internal/hcp/registry/json.go +++ b/internal/hcp/registry/json.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package registry diff --git a/internal/hcp/registry/null_registry.go b/internal/hcp/registry/null_registry.go index 5aee3e6bcd1..f7dbcdf0970 100644 --- a/internal/hcp/registry/null_registry.go +++ b/internal/hcp/registry/null_registry.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package registry diff --git a/internal/hcp/registry/registry.go b/internal/hcp/registry/registry.go index b095e14ea2f..35485a8993e 100644 --- a/internal/hcp/registry/registry.go +++ b/internal/hcp/registry/registry.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 // Package registry provides access to the HCP registry. package registry diff --git a/internal/hcp/registry/types.bucket.go b/internal/hcp/registry/types.bucket.go index 7e548643a65..d4239f45005 100644 --- a/internal/hcp/registry/types.bucket.go +++ b/internal/hcp/registry/types.bucket.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package registry diff --git a/internal/hcp/registry/types.bucket_service_test.go b/internal/hcp/registry/types.bucket_service_test.go index 5fa28ac4e93..6503b95fb02 100644 --- a/internal/hcp/registry/types.bucket_service_test.go +++ b/internal/hcp/registry/types.bucket_service_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package registry diff --git a/internal/hcp/registry/types.bucket_test.go b/internal/hcp/registry/types.bucket_test.go index 30f73dec51c..9c1467ad714 100644 --- a/internal/hcp/registry/types.bucket_test.go +++ b/internal/hcp/registry/types.bucket_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package registry diff --git a/internal/hcp/registry/types.builds.go b/internal/hcp/registry/types.builds.go index 9245a9d3141..991ef563a00 100644 --- a/internal/hcp/registry/types.builds.go +++ b/internal/hcp/registry/types.builds.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package registry diff --git a/internal/hcp/registry/types.iterations.go b/internal/hcp/registry/types.iterations.go index b9ffc232243..c186a2a256d 100644 --- a/internal/hcp/registry/types.iterations.go +++ b/internal/hcp/registry/types.iterations.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package registry diff --git a/internal/hcp/registry/types.iterations_test.go b/internal/hcp/registry/types.iterations_test.go index fe7132d6b36..27e87b5798f 100644 --- a/internal/hcp/registry/types.iterations_test.go +++ b/internal/hcp/registry/types.iterations_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package registry diff --git a/log.go b/log.go index 2c15a700a16..72744bc3dd5 100644 --- a/log.go +++ b/log.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package main diff --git a/main.go b/main.go index 728f56860af..0d39d70d579 100644 --- a/main.go +++ b/main.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 // This is the main package for the `packer` application. diff --git a/main_test.go b/main_test.go index 69be0aca87e..b71319e9dea 100644 --- a/main_test.go +++ b/main_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package main diff --git a/packer/build.go b/packer/build.go index 3309bb194d5..e51e71d00c9 100644 --- a/packer/build.go +++ b/packer/build.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/build_test.go b/packer/build_test.go index 86531d8ca4b..c15eec5b570 100644 --- a/packer/build_test.go +++ b/packer/build_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/builder_test.go b/packer/builder_test.go index 1276552788b..85b7eaf5f08 100644 --- a/packer/builder_test.go +++ b/packer/builder_test.go @@ -1,4 +1,4 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/client_test.go b/packer/client_test.go index f9a1483ff87..f0dc074e997 100644 --- a/packer/client_test.go +++ b/packer/client_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/cmd_builder.go b/packer/cmd_builder.go index 99a0bc6f913..8b472d1fb24 100644 --- a/packer/cmd_builder.go +++ b/packer/cmd_builder.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/cmd_builder_test.go b/packer/cmd_builder_test.go index dfc5d15fb99..a47bcea31b8 100644 --- a/packer/cmd_builder_test.go +++ b/packer/cmd_builder_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/cmd_datasource.go b/packer/cmd_datasource.go index 4e8b32561ed..0e2d6b79892 100644 --- a/packer/cmd_datasource.go +++ b/packer/cmd_datasource.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/cmd_datasource_test.go b/packer/cmd_datasource_test.go index c174c8ee02b..1616b218cf7 100644 --- a/packer/cmd_datasource_test.go +++ b/packer/cmd_datasource_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/cmd_hook.go b/packer/cmd_hook.go index ace3d2c032d..f3973a98a0d 100644 --- a/packer/cmd_hook.go +++ b/packer/cmd_hook.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/cmd_hook_test.go b/packer/cmd_hook_test.go index f2a1f4d9246..ed149c5af7c 100644 --- a/packer/cmd_hook_test.go +++ b/packer/cmd_hook_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/cmd_post_processor.go b/packer/cmd_post_processor.go index c686a3937ef..139c9133390 100644 --- a/packer/cmd_post_processor.go +++ b/packer/cmd_post_processor.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/cmd_post_processor_test.go b/packer/cmd_post_processor_test.go index ce70a8bf125..3c69d899f6b 100644 --- a/packer/cmd_post_processor_test.go +++ b/packer/cmd_post_processor_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/cmd_provisioner.go b/packer/cmd_provisioner.go index 965ad89587f..335b7bd97ec 100644 --- a/packer/cmd_provisioner.go +++ b/packer/cmd_provisioner.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/cmd_provisioner_test.go b/packer/cmd_provisioner_test.go index 5bb86942ace..6c2005b9354 100644 --- a/packer/cmd_provisioner_test.go +++ b/packer/cmd_provisioner_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/core.go b/packer/core.go index b711af080bc..732f026360f 100644 --- a/packer/core.go +++ b/packer/core.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/core_test.go b/packer/core_test.go index e46f62e6b0e..b1694cbf86c 100644 --- a/packer/core_test.go +++ b/packer/core_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/maps.go b/packer/maps.go index 6fec5c67950..1d99802dfef 100644 --- a/packer/maps.go +++ b/packer/maps.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/packer_test.go b/packer/packer_test.go index bc75903397b..2f52c5e76d2 100644 --- a/packer/packer_test.go +++ b/packer/packer_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/plugin-getter/checksum.go b/packer/plugin-getter/checksum.go index 507a17e6537..d7193ba3b7f 100644 --- a/packer/plugin-getter/checksum.go +++ b/packer/plugin-getter/checksum.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package plugingetter diff --git a/packer/plugin-getter/docs.go b/packer/plugin-getter/docs.go index 6c8cfba37cf..216a7781d2f 100644 --- a/packer/plugin-getter/docs.go +++ b/packer/plugin-getter/docs.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 // Package plugingetter defines means to download and install plugins. package plugingetter diff --git a/packer/plugin-getter/github/docs.go b/packer/plugin-getter/github/docs.go index 9c189dfd3a3..50fa13e30ae 100644 --- a/packer/plugin-getter/github/docs.go +++ b/packer/plugin-getter/github/docs.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 // Package github defines a Github getter. diff --git a/packer/plugin-getter/github/getter.go b/packer/plugin-getter/github/getter.go index c094a33e332..bde61e51641 100644 --- a/packer/plugin-getter/github/getter.go +++ b/packer/plugin-getter/github/getter.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package github diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index 09acf7052c8..b16edcfade0 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package plugingetter diff --git a/packer/plugin-getter/plugins_test.go b/packer/plugin-getter/plugins_test.go index 3105fb1e667..7a1439de210 100644 --- a/packer/plugin-getter/plugins_test.go +++ b/packer/plugin-getter/plugins_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package plugingetter diff --git a/packer/plugin.go b/packer/plugin.go index dd3e6d31719..c88f54f86b3 100644 --- a/packer/plugin.go +++ b/packer/plugin.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/plugin_client.go b/packer/plugin_client.go index f1d127497be..b788f68f7fb 100644 --- a/packer/plugin_client.go +++ b/packer/plugin_client.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/plugin_discover_test.go b/packer/plugin_discover_test.go index fec52607d83..901c3d42f1d 100644 --- a/packer/plugin_discover_test.go +++ b/packer/plugin_discover_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/plugin_folders.go b/packer/plugin_folders.go index 52d63aac4cc..e1d4dbea4a2 100644 --- a/packer/plugin_folders.go +++ b/packer/plugin_folders.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/plugin_test.go b/packer/plugin_test.go index 099d9cf6c8a..a912ca07a38 100644 --- a/packer/plugin_test.go +++ b/packer/plugin_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/post_processor_mock.go b/packer/post_processor_mock.go index b6156e28ceb..5a9bfc85ae2 100644 --- a/packer/post_processor_mock.go +++ b/packer/post_processor_mock.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:generate packer-sdc mapstructure-to-hcl2 -type MockPostProcessor package packer diff --git a/packer/progressbar.go b/packer/progressbar.go index c7e68f7c2ba..0a9225047c3 100644 --- a/packer/progressbar.go +++ b/packer/progressbar.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:build !solaris // +build !solaris diff --git a/packer/progressbar_solaris.go b/packer/progressbar_solaris.go index cfc0266f27a..7aa199339a7 100644 --- a/packer/progressbar_solaris.go +++ b/packer/progressbar_solaris.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/progressbar_test.go b/packer/progressbar_test.go index a50049cf908..96ff65d687b 100644 --- a/packer/progressbar_test.go +++ b/packer/progressbar_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/provisioner.go b/packer/provisioner.go index 66d61d9fb98..c7761adeb5f 100644 --- a/packer/provisioner.go +++ b/packer/provisioner.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/provisioner_test.go b/packer/provisioner_test.go index d5e191038c9..bc646e5ca10 100644 --- a/packer/provisioner_test.go +++ b/packer/provisioner_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/provisioner_timeout.go b/packer/provisioner_timeout.go index c7407130cb4..f1183744cdb 100644 --- a/packer/provisioner_timeout.go +++ b/packer/provisioner_timeout.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/run_interfaces.go b/packer/run_interfaces.go index 253998c20a4..07829e629e1 100644 --- a/packer/run_interfaces.go +++ b/packer/run_interfaces.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/telemetry.go b/packer/telemetry.go index b1f0347b2ba..9a7f569139e 100644 --- a/packer/telemetry.go +++ b/packer/telemetry.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/telemetry_test.go b/packer/telemetry_test.go index 4d1dee3e7f5..ab304a55023 100644 --- a/packer/telemetry_test.go +++ b/packer/telemetry_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/testing.go b/packer/testing.go index 0b2449593c2..faa3c58283e 100644 --- a/packer/testing.go +++ b/packer/testing.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/ui.go b/packer/ui.go index dac5689205c..c01e9591a54 100644 --- a/packer/ui.go +++ b/packer/ui.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/packer/ui_test.go b/packer/ui_test.go index 1d15cb4ea0f..44fa93c7f07 100644 --- a/packer/ui_test.go +++ b/packer/ui_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package packer diff --git a/panic.go b/panic.go index 6f609645345..6fdfc59af24 100644 --- a/panic.go +++ b/panic.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package main diff --git a/post-processor/artifice/artifact.go b/post-processor/artifice/artifact.go index 4f481b2be29..859b05e6199 100644 --- a/post-processor/artifice/artifact.go +++ b/post-processor/artifice/artifact.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package artifice diff --git a/post-processor/artifice/post-processor.go b/post-processor/artifice/post-processor.go index 334d8531b6b..d1a4f422268 100644 --- a/post-processor/artifice/post-processor.go +++ b/post-processor/artifice/post-processor.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:generate packer-sdc mapstructure-to-hcl2 -type Config diff --git a/post-processor/artifice/version/version.go b/post-processor/artifice/version/version.go index b426efb501a..b329b365688 100644 --- a/post-processor/artifice/version/version.go +++ b/post-processor/artifice/version/version.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package version diff --git a/post-processor/checksum/artifact.go b/post-processor/checksum/artifact.go index eb1eeeeec26..5468460d53a 100644 --- a/post-processor/checksum/artifact.go +++ b/post-processor/checksum/artifact.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package checksum diff --git a/post-processor/checksum/post-processor.go b/post-processor/checksum/post-processor.go index 28b107cd8e6..efd51b6a169 100644 --- a/post-processor/checksum/post-processor.go +++ b/post-processor/checksum/post-processor.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:generate packer-sdc mapstructure-to-hcl2 -type Config diff --git a/post-processor/checksum/post-processor_test.go b/post-processor/checksum/post-processor_test.go index 97ab201f7f8..62c2f2ae3e1 100644 --- a/post-processor/checksum/post-processor_test.go +++ b/post-processor/checksum/post-processor_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package checksum diff --git a/post-processor/checksum/version/version.go b/post-processor/checksum/version/version.go index 74332d82388..9e1eeb239d9 100644 --- a/post-processor/checksum/version/version.go +++ b/post-processor/checksum/version/version.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package version diff --git a/post-processor/compress/artifact.go b/post-processor/compress/artifact.go index 20c7ef7d0b3..c56b2905daf 100644 --- a/post-processor/compress/artifact.go +++ b/post-processor/compress/artifact.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package compress diff --git a/post-processor/compress/artifact_test.go b/post-processor/compress/artifact_test.go index d0c1da8caeb..a30a803edf6 100644 --- a/post-processor/compress/artifact_test.go +++ b/post-processor/compress/artifact_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package compress diff --git a/post-processor/compress/benchmark.go b/post-processor/compress/benchmark.go index f853c85104f..5d06b7d6448 100644 --- a/post-processor/compress/benchmark.go +++ b/post-processor/compress/benchmark.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:build ignore // +build ignore diff --git a/post-processor/compress/post-processor.go b/post-processor/compress/post-processor.go index 9d2a32e57d5..88b345a97d8 100644 --- a/post-processor/compress/post-processor.go +++ b/post-processor/compress/post-processor.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:generate packer-sdc mapstructure-to-hcl2 -type Config diff --git a/post-processor/compress/post-processor_test.go b/post-processor/compress/post-processor_test.go index f91a1178f2f..e85b2041062 100644 --- a/post-processor/compress/post-processor_test.go +++ b/post-processor/compress/post-processor_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package compress diff --git a/post-processor/compress/tar_fix.go b/post-processor/compress/tar_fix.go index ad58cb18fa9..0402f4e7075 100644 --- a/post-processor/compress/tar_fix.go +++ b/post-processor/compress/tar_fix.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:build !go1.10 // +build !go1.10 diff --git a/post-processor/compress/tar_fix_go110.go b/post-processor/compress/tar_fix_go110.go index 5eac3dea192..2e0eba8d8cf 100644 --- a/post-processor/compress/tar_fix_go110.go +++ b/post-processor/compress/tar_fix_go110.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:build go1.10 // +build go1.10 diff --git a/post-processor/compress/version/version.go b/post-processor/compress/version/version.go index 639290a83ef..75bfb46f656 100644 --- a/post-processor/compress/version/version.go +++ b/post-processor/compress/version/version.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package version diff --git a/post-processor/manifest/artifact.go b/post-processor/manifest/artifact.go index b70c7deceb0..ceef83f8123 100644 --- a/post-processor/manifest/artifact.go +++ b/post-processor/manifest/artifact.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package manifest diff --git a/post-processor/manifest/post-processor.go b/post-processor/manifest/post-processor.go index f911f734b5c..5fb90c45577 100644 --- a/post-processor/manifest/post-processor.go +++ b/post-processor/manifest/post-processor.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:generate packer-sdc mapstructure-to-hcl2 -type Config //go:generate packer-sdc struct-markdown diff --git a/post-processor/manifest/version/version.go b/post-processor/manifest/version/version.go index 20a5523154a..86f862f89fd 100644 --- a/post-processor/manifest/version/version.go +++ b/post-processor/manifest/version/version.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package version diff --git a/post-processor/shell-local/post-processor.go b/post-processor/shell-local/post-processor.go index 334081e5927..801e8ac6567 100644 --- a/post-processor/shell-local/post-processor.go +++ b/post-processor/shell-local/post-processor.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package shell_local diff --git a/post-processor/shell-local/post-processor_test.go b/post-processor/shell-local/post-processor_test.go index eb8481772d1..39fbec25ec3 100644 --- a/post-processor/shell-local/post-processor_test.go +++ b/post-processor/shell-local/post-processor_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package shell_local diff --git a/post-processor/shell-local/version/version.go b/post-processor/shell-local/version/version.go index 1d02737909d..1f602bc5f46 100644 --- a/post-processor/shell-local/version/version.go +++ b/post-processor/shell-local/version/version.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package version diff --git a/provisioner/breakpoint/provisioner.go b/provisioner/breakpoint/provisioner.go index fc833fb47bc..9675ddff0d3 100644 --- a/provisioner/breakpoint/provisioner.go +++ b/provisioner/breakpoint/provisioner.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:generate packer-sdc mapstructure-to-hcl2 -type Config diff --git a/provisioner/breakpoint/version/version.go b/provisioner/breakpoint/version/version.go index 008af956575..2024c7e5a74 100644 --- a/provisioner/breakpoint/version/version.go +++ b/provisioner/breakpoint/version/version.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package version diff --git a/provisioner/file/provisioner.go b/provisioner/file/provisioner.go index 84e9c3744fa..586896611d9 100644 --- a/provisioner/file/provisioner.go +++ b/provisioner/file/provisioner.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:generate packer-sdc mapstructure-to-hcl2 -type Config //go:generate packer-sdc struct-markdown diff --git a/provisioner/file/provisioner_test.go b/provisioner/file/provisioner_test.go index e3ecd7294f7..17d55d75d2b 100644 --- a/provisioner/file/provisioner_test.go +++ b/provisioner/file/provisioner_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package file diff --git a/provisioner/file/version/version.go b/provisioner/file/version/version.go index e5b7923463f..8451cf03227 100644 --- a/provisioner/file/version/version.go +++ b/provisioner/file/version/version.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package version diff --git a/provisioner/powershell/execution_policy.go b/provisioner/powershell/execution_policy.go index 94463db2b24..057f60a2ec7 100644 --- a/provisioner/powershell/execution_policy.go +++ b/provisioner/powershell/execution_policy.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:generate enumer -transform snake -trimprefix ExecutionPolicy -type ExecutionPolicy diff --git a/provisioner/powershell/execution_policy_test.go b/provisioner/powershell/execution_policy_test.go index 8b82c97f270..5631b78bdd1 100644 --- a/provisioner/powershell/execution_policy_test.go +++ b/provisioner/powershell/execution_policy_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package powershell diff --git a/provisioner/powershell/provisioner.go b/provisioner/powershell/provisioner.go index 65ed16d1bf2..aae71f9fb3e 100644 --- a/provisioner/powershell/provisioner.go +++ b/provisioner/powershell/provisioner.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:generate packer-sdc mapstructure-to-hcl2 -type Config diff --git a/provisioner/powershell/provisioner_acc_test.go b/provisioner/powershell/provisioner_acc_test.go index 379b14f9b8f..8340b2a5a87 100644 --- a/provisioner/powershell/provisioner_acc_test.go +++ b/provisioner/powershell/provisioner_acc_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package powershell_test diff --git a/provisioner/powershell/provisioner_test.go b/provisioner/powershell/provisioner_test.go index d94a56fa23b..0d8b4ca35cd 100644 --- a/provisioner/powershell/provisioner_test.go +++ b/provisioner/powershell/provisioner_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package powershell diff --git a/provisioner/powershell/version/version.go b/provisioner/powershell/version/version.go index eb2cc7e0d33..b0350e51cbd 100644 --- a/provisioner/powershell/version/version.go +++ b/provisioner/powershell/version/version.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package version diff --git a/provisioner/shell-local/provisioner.go b/provisioner/shell-local/provisioner.go index d051b361239..3c62b28f9d5 100644 --- a/provisioner/shell-local/provisioner.go +++ b/provisioner/shell-local/provisioner.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package shell diff --git a/provisioner/shell-local/provisioner_acc_test.go b/provisioner/shell-local/provisioner_acc_test.go index f53990d0d2f..b7b7c051a14 100644 --- a/provisioner/shell-local/provisioner_acc_test.go +++ b/provisioner/shell-local/provisioner_acc_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package shell_test diff --git a/provisioner/shell-local/provisioner_test.go b/provisioner/shell-local/provisioner_test.go index ac7262b616a..c320ad4a1d1 100644 --- a/provisioner/shell-local/provisioner_test.go +++ b/provisioner/shell-local/provisioner_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package shell diff --git a/provisioner/shell-local/version/version.go b/provisioner/shell-local/version/version.go index 205aea7ccf0..27e57fb5c0a 100644 --- a/provisioner/shell-local/version/version.go +++ b/provisioner/shell-local/version/version.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package version diff --git a/provisioner/shell/provisioner.go b/provisioner/shell/provisioner.go index cc1e399996a..593f898caf0 100644 --- a/provisioner/shell/provisioner.go +++ b/provisioner/shell/provisioner.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:generate packer-sdc mapstructure-to-hcl2 -type Config diff --git a/provisioner/shell/provisioner_acc_test.go b/provisioner/shell/provisioner_acc_test.go index 8ffc58b8d14..4eefa19e78a 100644 --- a/provisioner/shell/provisioner_acc_test.go +++ b/provisioner/shell/provisioner_acc_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package shell_test diff --git a/provisioner/shell/provisioner_test.go b/provisioner/shell/provisioner_test.go index 73a4ac248f5..5640c92425e 100644 --- a/provisioner/shell/provisioner_test.go +++ b/provisioner/shell/provisioner_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package shell diff --git a/provisioner/shell/unix_reader.go b/provisioner/shell/unix_reader.go index dc74647b292..9e27a6de928 100644 --- a/provisioner/shell/unix_reader.go +++ b/provisioner/shell/unix_reader.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package shell diff --git a/provisioner/shell/unix_reader_test.go b/provisioner/shell/unix_reader_test.go index 96c470cc13c..869531653ad 100644 --- a/provisioner/shell/unix_reader_test.go +++ b/provisioner/shell/unix_reader_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package shell diff --git a/provisioner/shell/version/version.go b/provisioner/shell/version/version.go index f192bb373db..bb0b798efe2 100644 --- a/provisioner/shell/version/version.go +++ b/provisioner/shell/version/version.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package version diff --git a/provisioner/sleep/provisioner.go b/provisioner/sleep/provisioner.go index 8dfb4ce1f7c..7c74c74b73d 100644 --- a/provisioner/sleep/provisioner.go +++ b/provisioner/sleep/provisioner.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:generate packer-sdc mapstructure-to-hcl2 -type Provisioner diff --git a/provisioner/sleep/provisioner_test.go b/provisioner/sleep/provisioner_test.go index 315849e66dc..94acf5771ef 100644 --- a/provisioner/sleep/provisioner_test.go +++ b/provisioner/sleep/provisioner_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package sleep diff --git a/provisioner/sleep/version/version.go b/provisioner/sleep/version/version.go index bdad4975ec3..3b0c4c2bf25 100644 --- a/provisioner/sleep/version/version.go +++ b/provisioner/sleep/version/version.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package version diff --git a/provisioner/windows-restart/provisioner.go b/provisioner/windows-restart/provisioner.go index 8aaa3598ccd..4c1113a0df8 100644 --- a/provisioner/windows-restart/provisioner.go +++ b/provisioner/windows-restart/provisioner.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:generate packer-sdc mapstructure-to-hcl2 -type Config diff --git a/provisioner/windows-restart/provisioner_test.go b/provisioner/windows-restart/provisioner_test.go index bc68f167398..c2d934ed539 100644 --- a/provisioner/windows-restart/provisioner_test.go +++ b/provisioner/windows-restart/provisioner_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package restart diff --git a/provisioner/windows-restart/version/version.go b/provisioner/windows-restart/version/version.go index 5376f9e31a6..d178be5e559 100644 --- a/provisioner/windows-restart/version/version.go +++ b/provisioner/windows-restart/version/version.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package version diff --git a/provisioner/windows-shell/provisioner.go b/provisioner/windows-shell/provisioner.go index c6f22a3e778..0002d85ba06 100644 --- a/provisioner/windows-shell/provisioner.go +++ b/provisioner/windows-shell/provisioner.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:generate packer-sdc mapstructure-to-hcl2 -type Config diff --git a/provisioner/windows-shell/provisioner_test.go b/provisioner/windows-shell/provisioner_test.go index e01af9e7b06..5ef92c64ac0 100644 --- a/provisioner/windows-shell/provisioner_test.go +++ b/provisioner/windows-shell/provisioner_test.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package shell diff --git a/provisioner/windows-shell/version/version.go b/provisioner/windows-shell/version/version.go index 18ad34fe08e..71885679439 100644 --- a/provisioner/windows-shell/version/version.go +++ b/provisioner/windows-shell/version/version.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package version diff --git a/scripts/build.ps1 b/scripts/build.ps1 index 4f1abd3a1cb..3290347fe0f 100644 --- a/scripts/build.ps1 +++ b/scripts/build.ps1 @@ -1,5 +1,5 @@ # Copyright (c) HashiCorp, Inc. -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: BUSL-1.1 <# .Synopsis diff --git a/scripts/build.sh b/scripts/build.sh index 8b65f50b773..491a1bbce4f 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # Copyright (c) HashiCorp, Inc. -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: BUSL-1.1 # This script builds the application from source for multiple platforms. diff --git a/scripts/codesign_example.sh b/scripts/codesign_example.sh index 2e1a1698477..85303332049 100755 --- a/scripts/codesign_example.sh +++ b/scripts/codesign_example.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash # Copyright (c) HashiCorp, Inc. -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: BUSL-1.1 set -euo pipefail diff --git a/scripts/dist.sh b/scripts/dist.sh index 113af57ba21..999be612a05 100755 --- a/scripts/dist.sh +++ b/scripts/dist.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # Copyright (c) HashiCorp, Inc. -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: BUSL-1.1 set -e diff --git a/scripts/generate-plugins.go b/scripts/generate-plugins.go index e52c063b3fe..bd303cb29ba 100755 --- a/scripts/generate-plugins.go +++ b/scripts/generate-plugins.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 // Generate Plugins is a small program that updates the lists of plugins in // command/plugin.go so they will be compiled into the main packer binary. diff --git a/scripts/off_gopath.sh b/scripts/off_gopath.sh index beb1433e1bf..04e1ae709e5 100755 --- a/scripts/off_gopath.sh +++ b/scripts/off_gopath.sh @@ -1,6 +1,6 @@ #! /usr/bin/env bash # Copyright (c) HashiCorp, Inc. -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: BUSL-1.1 set -eu -o pipefail diff --git a/scripts/prepare_changelog.sh b/scripts/prepare_changelog.sh index 3f776034b1d..be9049eca78 100755 --- a/scripts/prepare_changelog.sh +++ b/scripts/prepare_changelog.sh @@ -1,6 +1,6 @@ #!/bin/zsh # Copyright (c) HashiCorp, Inc. -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: BUSL-1.1 LAST_RELEASE=$1 diff --git a/scripts/sign.sh b/scripts/sign.sh index f7d18acd764..494347ef677 100755 --- a/scripts/sign.sh +++ b/scripts/sign.sh @@ -1,5 +1,5 @@ # Copyright (c) HashiCorp, Inc. -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: BUSL-1.1 #!/usr/bin/env bash diff --git a/scripts/sort-md-list.py b/scripts/sort-md-list.py index 9842977752e..c84ad663da2 100755 --- a/scripts/sort-md-list.py +++ b/scripts/sort-md-list.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 # Copyright (c) HashiCorp, Inc. -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: BUSL-1.1 """ sort-md-list.py sorts markdown lists diff --git a/scripts/upgrade_plugins.sh b/scripts/upgrade_plugins.sh index 3ca2885f178..961f8ed804d 100755 --- a/scripts/upgrade_plugins.sh +++ b/scripts/upgrade_plugins.sh @@ -1,6 +1,6 @@ #!/bin/zsh # Copyright (c) HashiCorp, Inc. -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: BUSL-1.1 ## This script is to be run before a Packer release in order to update diff --git a/scripts/vagrant-freebsd-priv-config.sh b/scripts/vagrant-freebsd-priv-config.sh index 9d5f0761ed5..89915370f36 100755 --- a/scripts/vagrant-freebsd-priv-config.sh +++ b/scripts/vagrant-freebsd-priv-config.sh @@ -1,6 +1,6 @@ #!/bin/sh # Copyright (c) HashiCorp, Inc. -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: BUSL-1.1 chown vagrant:wheel \ diff --git a/scripts/vagrant-freebsd-unpriv-bootstrap.sh b/scripts/vagrant-freebsd-unpriv-bootstrap.sh index 89fc9fc87bb..809415ab6c8 100755 --- a/scripts/vagrant-freebsd-unpriv-bootstrap.sh +++ b/scripts/vagrant-freebsd-unpriv-bootstrap.sh @@ -1,6 +1,6 @@ #!/bin/sh # Copyright (c) HashiCorp, Inc. -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: BUSL-1.1 export GOPATH=/opt/gopath diff --git a/scripts/vagrant-linux-priv-config.sh b/scripts/vagrant-linux-priv-config.sh index d89e10ecb0b..b658e719179 100755 --- a/scripts/vagrant-linux-priv-config.sh +++ b/scripts/vagrant-linux-priv-config.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # Copyright (c) HashiCorp, Inc. -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: BUSL-1.1 export DEBIAN_FRONTEND=noninteractive diff --git a/scripts/vagrant-linux-priv-go.sh b/scripts/vagrant-linux-priv-go.sh index 2d99bc1517b..e59ae7e145d 100755 --- a/scripts/vagrant-linux-priv-go.sh +++ b/scripts/vagrant-linux-priv-go.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # Copyright (c) HashiCorp, Inc. -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: BUSL-1.1 function install_go() { diff --git a/scripts/vagrant-linux-unpriv-bootstrap.sh b/scripts/vagrant-linux-unpriv-bootstrap.sh index ca7f004c9eb..ff6b8f8f90f 100755 --- a/scripts/vagrant-linux-unpriv-bootstrap.sh +++ b/scripts/vagrant-linux-unpriv-bootstrap.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # Copyright (c) HashiCorp, Inc. -# SPDX-License-Identifier: MPL-2.0 +# SPDX-License-Identifier: BUSL-1.1 cd /opt/gopath/src/github.com/hashicorp/packer && make dev diff --git a/tty.go b/tty.go index a6f16d122ac..62fa5203ffd 100644 --- a/tty.go +++ b/tty.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 //go:build !solaris // +build !solaris diff --git a/tty_solaris.go b/tty_solaris.go index 257db948865..ed40b7fdb82 100644 --- a/tty_solaris.go +++ b/tty_solaris.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package main diff --git a/version/version.go b/version/version.go index c474c80d650..2df08d2d71b 100644 --- a/version/version.go +++ b/version/version.go @@ -1,5 +1,5 @@ // Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: MPL-2.0 +// SPDX-License-Identifier: BUSL-1.1 package version From 320fd8d6fbcdde6990db3efadff0f454acc48ab7 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 11 Aug 2023 15:19:13 -0400 Subject: [PATCH 165/381] Update licensing for product release pipeline (#12570) --- .copywrite.hcl | 4 ++-- .github/workflows/build.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.copywrite.hcl b/.copywrite.hcl index 2e86e1c3cc1..3cbd1daa501 100644 --- a/.copywrite.hcl +++ b/.copywrite.hcl @@ -1,6 +1,6 @@ project { - license = "MPL-2.0" - copyright_year = 2013 + license = "BUSL-1.1" + copyright_year = 2023 header_ignore = [ "*.hcl2spec.go", # generated code specs, since they'll be wiped out until we support adding the headers at generation-time "hcl2template/testdata/**", diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a756fc56013..c15c8c6acf5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -169,7 +169,7 @@ jobs: version: ${{ needs.set-product-version.outputs.product-version }} maintainer: "HashiCorp" homepage: "https://www.packer.io/docs" - license: "MPL-2.0" + license: "BUSL-1.1" binary: "dist/${{ env.REPO_NAME }}" deb_depends: "openssl" rpm_depends: "openssl" From c575946e4db49729913a78b7cc7db6091b142331 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 11 Aug 2023 15:20:50 -0400 Subject: [PATCH 166/381] Update terminology to reflect community editions of Packer (#12571) --- website/content/docs/commands/init.mdx | 2 +- website/content/docs/index.mdx | 2 +- website/content/docs/intro/index.mdx | 2 +- website/content/docs/partnerships.mdx | 2 +- website/content/guides/packer-on-cicd/trigger-tfe.mdx | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/website/content/docs/commands/init.mdx b/website/content/docs/commands/init.mdx index e6209d2c15e..7b61ecbf13f 100644 --- a/website/content/docs/commands/init.mdx +++ b/website/content/docs/commands/init.mdx @@ -70,7 +70,7 @@ packer { } ``` -HashiCorp does not officially verify third party Packer plugins, plugins not under the HashiCorp namespace `hashicorp/*`; as with all open source tools, please do your own due diligence when using a new tool. +HashiCorp does not officially verify third party Packer plugins, plugins not under the HashiCorp namespace `hashicorp/*`; as with all community tools, please do your own due diligence when using a new tool. ## Plugin Selection diff --git a/website/content/docs/index.mdx b/website/content/docs/index.mdx index ad32aa8a02c..5fd386e1dc7 100644 --- a/website/content/docs/index.mdx +++ b/website/content/docs/index.mdx @@ -6,7 +6,7 @@ page_title: Documentation # Packer Documentation -[Packer](https://www.packer.io/) is an open source tool that enables you to create identical machine images for multiple platforms from a single source template. A common use case is creating "golden images" that teams across an organization can use in cloud infrastructure. +[Packer](https://www.packer.io/) is a community tool that enables you to create identical machine images for multiple platforms from a single source template. A common use case is creating "golden images" that teams across an organization can use in cloud infrastructure. To install Packer and learn the standard Packer workflow, try the [Get Started tutorials](/packer/tutorials). diff --git a/website/content/docs/intro/index.mdx b/website/content/docs/intro/index.mdx index 99f8175943e..d6fb56902f6 100644 --- a/website/content/docs/intro/index.mdx +++ b/website/content/docs/intro/index.mdx @@ -17,7 +17,7 @@ features. ## What is Packer? -Packer is an open source tool for creating identical machine images for multiple +Packer is a community tool for creating identical machine images for multiple platforms from a single source configuration. Packer is lightweight, runs on every major operating system, and is highly performant, creating machine images for multiple platforms in parallel. Packer does not replace configuration diff --git a/website/content/docs/partnerships.mdx b/website/content/docs/partnerships.mdx index 2e87dfdb7c8..97d1ec526f6 100644 --- a/website/content/docs/partnerships.mdx +++ b/website/content/docs/partnerships.mdx @@ -15,7 +15,7 @@ This program is intended to be largely a self-service process with links and gui ### Types of Packer Integrations -Packer is an open source tool for creating identical machine images for multiple platforms from a single source configuration. +Packer is a community tool for creating identical machine images for multiple platforms from a single source configuration. Packer is lightweight, runs on every major operating system, and is highly performant, creating machine images for multiple platforms in parallel. Packer does not replace configuration management like Chef or Puppet. In fact, when building images, Packer is able to use tools like Chef or Puppet to install software onto the image. A machine image is a single static unit that contains a pre-configured operating system and installed software which is used to quickly create new running machines. Machine image formats change for each platform. Some examples include AMIs for EC2, VMDK/VMX files for VMware, OVF exports for VirtualBox, etc. To know more about use cases of Packer click ([Use Cases - Introduction | Packer by HashiCorp](/packer/docs/intro/use-cases)) diff --git a/website/content/guides/packer-on-cicd/trigger-tfe.mdx b/website/content/guides/packer-on-cicd/trigger-tfe.mdx index b43e282a6b2..14b2643bd1e 100644 --- a/website/content/guides/packer-on-cicd/trigger-tfe.mdx +++ b/website/content/guides/packer-on-cicd/trigger-tfe.mdx @@ -12,7 +12,7 @@ and used locally in development, like is often done with VirtualBox images with Vagrant. In most other cases, the new image will be used to provision new infrastructure. -[Terraform](https://www.terraform.io/) is an open source tool that is ideal for +[Terraform](https://www.terraform.io/) is a community tool that is ideal for provisioning new infrastructure with images generated by Packer, and [Terraform Enterprise](https://www.hashicorp.com/products/terraform/) is the best way to perform automated Terraform runs. From 2b32903fe388d78e9654b8362d0aafff97ad5fe3 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet <105649352+lbajolet-hashicorp@users.noreply.github.com> Date: Wed, 16 Aug 2023 11:44:32 -0400 Subject: [PATCH 167/381] Document PLSP-related environment variables Since we added support for PLSPs recently, and it will be released as part of 1.9.3, we add some documentation regarding the environment variables we added, and a note regarding their relation to PLSP support. --- website/content/docs/hcp/index.mdx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/website/content/docs/hcp/index.mdx b/website/content/docs/hcp/index.mdx index b7af158ee26..d908cca70cc 100644 --- a/website/content/docs/hcp/index.mdx +++ b/website/content/docs/hcp/index.mdx @@ -35,6 +35,12 @@ You can set these additional environment variables to control how metadata is pu - `HCP_PACKER_REGISTRY` - When set, Packer does not push image metadata to HCP Packer from an otherwise configured template. Allowed values are [0|OFF]. +- `HCP_ORGANIZATION_ID` - The ID of the HCP organization linked to your service principal. This is environment variable is not required and available for the sole purpose of keeping parity with the HCP SDK authentication options. Its use may change in a future release. + +- `HCP_PROJECT_ID` - The ID of the HCP project to use. This is useful if your service principal has access to multiple projects, as by default Packer will pick the one created first as target. + +-> **Note**: The HCP_PROJECT_ID environment variable must be set if you're authenticating with a project-level service principal, otherwise Packer will attempt to get the list of projects for an organization and error due to a lack of permissions for a project-level service principal. This is supported starting with Packer 1.9.3; older versions of Packer do not support using project-level service principals. + ### HCP Packer Registry Block The only metadata that Packer can infer from a template with the basic configuration are the build name and build fingerprint. For HCL2 templates, we recommend adding the `hcp_packer_registry` block to your template so that you can customize the metadata that Packer sends to the registry. From a961adfb7033f757a9d35124bb06e7e2a6165618 Mon Sep 17 00:00:00 2001 From: "hashicorp-copywrite[bot]" <110428419+hashicorp-copywrite[bot]@users.noreply.github.com> Date: Wed, 16 Aug 2023 12:44:09 -0400 Subject: [PATCH 168/381] Update BUSL LICENSE to include licensed product and version. (#12575) Co-authored-by: hashicorp-copywrite[bot] <110428419+hashicorp-copywrite[bot]@users.noreply.github.com> --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 2ecf202e305..73957dc7d75 100644 --- a/LICENSE +++ b/LICENSE @@ -4,7 +4,7 @@ License text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved. Parameters Licensor: HashiCorp, Inc. -Licensed Work: The Licensed Work is (c) 2023 HashiCorp, Inc. +Licensed Work: Packer 1.10.0. The Licensed Work is (c) 2023 HashiCorp, Inc. Additional Use Grant: You may make production use of the Licensed Work, provided such use does not include offering the Licensed Work to third parties on a hosted or embedded basis which is From 50e8f507ca3198eadf4d28105f5d22f7cef95496 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 16 Aug 2023 19:18:27 +0000 Subject: [PATCH 169/381] Update CHANGELOG for 1.9.3 --- CHANGELOG.md | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9c693c7fd3e..67394c78ee2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,38 @@ -## 1.9.3 (Upcoming) +## 1.9.3 (August 17, 2023) + +### NOTES: +* **New Docker Image**: As part of the bundled plugin removal effort, a new + Docker target called `release-full` has been added to the Packer release + artifacts. The release-full image includes Packer and all the official + plugins pre-installed in its environment. This image is being offered as an + alternative option for those users who may still be relying on the plugin + versions bundled into the Packer binary. + [GH-12532](https://github.com/hashicorp/packer/pull/12532) + +### IMPROVEMENTS: +* core/docs: Clarify the expected usage of the `packer init` command for HCL2 + template builds.[GH-12535](https://github.com/hashicorp/packer/pull/12535) +* core/hcp: Add support for project-level service principals. A user connecting + with a project level service principals must provide a valid HCP_PROJECT_ID + in order to connect. + [GH-12520](https://github.com/hashicorp/packer/pull/12520) + [GH-12576](https://github.com/hashicorp/packer/pull/12576) +* core: A new Docker image `packer:release-full` has been added for all + supported architectures. The release-full image includes Packer and all the + official plugins pre-installed in its environment. + [GH-12532](https://github.com/hashicorp/packer/pull/12532) +* core: Add enhanced support to Packer telemetry for bundle plugins usage. + [GH-12536](https://github.com/hashicorp/packer/pull/12536) + +### BUG FIXES: + +* core: Bump golang.org/x/net to v0.13.0 to address CVE GO-2023-1988. Packer + itself is not vulnerable to the CVE as we don't render web pages, but + security checks do point it as an issue that needs to be addressed. + [GH-12561](https://github.com/hashicorp/packer/pull/12561) +* core: Fix custom plugin loading in current working directory regression. + [GH-12544](https://github.com/hashicorp/packer/pull/12544) + ## 1.9.2 (July 19, 2023) From 999d751793324d368755000694ba82a5cecea509 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 17 Aug 2023 11:10:19 -0400 Subject: [PATCH 170/381] Rename duplicate ami name to fix failing test --- .../test-fixtures/basic_amazon_with_required_plugins.pkr.hcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/acctest/plugin/test-fixtures/basic_amazon_with_required_plugins.pkr.hcl b/acctest/plugin/test-fixtures/basic_amazon_with_required_plugins.pkr.hcl index f9ba5a55b2c..a30f85fa49e 100644 --- a/acctest/plugin/test-fixtures/basic_amazon_with_required_plugins.pkr.hcl +++ b/acctest/plugin/test-fixtures/basic_amazon_with_required_plugins.pkr.hcl @@ -12,7 +12,7 @@ source "amazon-ebs" "basic-test" { instance_type = "m3.medium" source_ami = "ami-76b2a71e" ssh_username = "ubuntu" - ami_name = "packer-plugin-bundled-amazon-ebs-test" + ami_name = "packer-plugin-external-amazon-ebs-test" } build { From f961715161804650cb82fb701ff2c001c146a6ed Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 17 Aug 2023 17:08:04 +0000 Subject: [PATCH 171/381] Prepare for 1.9.4 dev mode --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67394c78ee2..f040eba0233 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +## 1.9.4 (Upcoming) + ## 1.9.3 (August 17, 2023) ### NOTES: From eb9e1a479537f3786b9f5ad48a414fce6aa9cb2c Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 9 Aug 2023 14:42:38 -0400 Subject: [PATCH 172/381] packer: remove implicit required plugins Since this feature is no longer something we plan to activate later, as it contradicts with our efforts to remove bundled plugins, and encouraging users to move to either manually installing plugins, or managing them through `packer init', we clean-up the code for this feature. --- command/init.go | 48 +---- command/plugins_install.go | 1 - command/plugins_installed.go | 1 - command/plugins_remove.go | 1 - hcl2template/parser.go | 18 +- hcl2template/plugin.go | 1 - hcl2template/types.required_plugins.go | 138 ------------- hcl2template/types.required_plugins_test.go | 218 +------------------- main.go | 66 ------ packer/plugin-getter/plugins.go | 3 - packer/plugin.go | 17 -- website/content/docs/commands/init.mdx | 12 -- 12 files changed, 8 insertions(+), 516 deletions(-) diff --git a/command/init.go b/command/init.go index 5a066d96276..ad9a7bcdd98 100644 --- a/command/init.go +++ b/command/init.go @@ -124,55 +124,13 @@ func (c *InitCommand) RunContext(buildCtx context.Context, cla *InitArgs) int { Getters: getters, }) if err != nil { - if pluginRequirement.Implicit { - msg := fmt.Sprintf(` -Warning! At least one component used in your config file(s) has moved out of -Packer into the %q plugin. -For that reason, Packer init tried to install the latest version of the %s -plugin. Unfortunately, this failed : -%s`, - pluginRequirement.Identifier, - pluginRequirement.Identifier.Type, - err) - c.Ui.Say(msg) - } else { - c.Ui.Error(fmt.Sprintf("Failed getting the %q plugin:", pluginRequirement.Identifier)) - c.Ui.Error(err.Error()) - ret = 1 - } + c.Ui.Error(fmt.Sprintf("Failed getting the %q plugin:", pluginRequirement.Identifier)) + c.Ui.Error(err.Error()) + ret = 1 } if newInstall != nil { - if pluginRequirement.Implicit { - msg := fmt.Sprintf("Installed implicitly required plugin %s %s in %q", pluginRequirement.Identifier, newInstall.Version, newInstall.BinaryPath) - ui.Say(msg) - - warn := fmt.Sprintf(` -Warning, at least one component used in your config file(s) has moved out of -Packer into the %[2]q plugin and is now being implicitly required. -For more details on implicitly required plugins see https://packer.io/docs/commands/init#implicit-required-plugin - -To avoid any backward incompatible changes with your -config file you may want to lock the plugin version by pasting the following to your config: - -packer { - required_plugins { - %[1]s = { - source = "%[2]s" - version = "~> %[3]s" - } - } -} -`, - pluginRequirement.Identifier.Type, - pluginRequirement.Identifier, - newInstall.Version, - ) - ui.Error(warn) - continue - } msg := fmt.Sprintf("Installed plugin %s %s in %q", pluginRequirement.Identifier, newInstall.Version, newInstall.BinaryPath) ui.Say(msg) - } } return ret diff --git a/command/plugins_install.go b/command/plugins_install.go index 7082f134a8f..3037c0959d0 100644 --- a/command/plugins_install.go +++ b/command/plugins_install.go @@ -77,7 +77,6 @@ func (c *PluginsInstallCommand) RunContext(buildCtx context.Context, args []stri // a plugin requirement that matches them all pluginRequirement := plugingetter.Requirement{ Identifier: plugin, - Implicit: false, } if len(args) > 1 { diff --git a/command/plugins_installed.go b/command/plugins_installed.go index 114c25b55a9..b19be4e5c33 100644 --- a/command/plugins_installed.go +++ b/command/plugins_installed.go @@ -64,7 +64,6 @@ func (c *PluginsInstalledCommand) RunContext(buildCtx context.Context) int { Accessor: "", VersionConstraints: nil, Identifier: nil, - Implicit: false, } installations, err := allPlugins.ListInstallations(opts) diff --git a/command/plugins_remove.go b/command/plugins_remove.go index ac8c0882b8f..07993f21a4e 100644 --- a/command/plugins_remove.go +++ b/command/plugins_remove.go @@ -74,7 +74,6 @@ func (c *PluginsRemoveCommand) RunContext(buildCtx context.Context, args []strin // a plugin requirement that matches them all pluginRequirement := plugingetter.Requirement{ Identifier: plugin, - Implicit: false, } if len(args) > 1 { diff --git a/hcl2template/parser.go b/hcl2template/parser.go index 43b43bcd6f0..fc9182bf04f 100644 --- a/hcl2template/parser.go +++ b/hcl2template/parser.go @@ -163,28 +163,14 @@ func (p *Parser) Parse(filename string, varFiles []string, argVars map[string]st return cfg, diags } - // Decode required_plugins blocks and create implicit required_plugins - // blocks. Implicit required_plugins blocks happen when a builder or another - // plugin cannot be found, for example if one uses : - // source "amazon-ebs" "example" { ... } - // And no `amazon-ebs` builder can be found. This will then be the - // equivalent of having : - // packer { - // required_plugins { - // amazon = { - // version = "latest" - // source = "github.com/hashicorp/amazon" - // } - // } + // Decode required_plugins blocks. + // // Note: using `latest` ( or actually an empty string ) in a config file // does not work and packer will ask you to pick a version { for _, file := range files { diags = append(diags, cfg.decodeRequiredPluginsBlock(file)...) } - for _, file := range files { - diags = append(diags, cfg.decodeImplicitRequiredPluginsBlocks(file)...) - } } // Decode variable blocks so that they are available later on. Here locals diff --git a/hcl2template/plugin.go b/hcl2template/plugin.go index 92b9cf2f30b..323263596f8 100644 --- a/hcl2template/plugin.go +++ b/hcl2template/plugin.go @@ -45,7 +45,6 @@ func (cfg *PackerConfig) PluginRequirements() (plugingetter.Requirements, hcl.Di Accessor: name, Identifier: block.Type, VersionConstraints: block.Requirement.Required, - Implicit: block.PluginDependencyReason == PluginDependencyImplicit, }) uniq[name] = block } diff --git a/hcl2template/types.required_plugins.go b/hcl2template/types.required_plugins.go index 94dfd4669b3..d5e010345ea 100644 --- a/hcl2template/types.required_plugins.go +++ b/hcl2template/types.required_plugins.go @@ -9,7 +9,6 @@ import ( "github.com/hashicorp/go-version" "github.com/hashicorp/hcl/v2" "github.com/hashicorp/packer/hcl2template/addrs" - "github.com/hashicorp/packer/packer" "github.com/zclconf/go-cty/cty" ) @@ -44,127 +43,6 @@ func (cfg *PackerConfig) decodeRequiredPluginsBlock(f *hcl.File) hcl.Diagnostics return diags } -func (cfg *PackerConfig) decodeImplicitRequiredPluginsBlocks(f *hcl.File) hcl.Diagnostics { - // when a plugin is used but not available it should be 'implicitly - // required'. Here we read common configuration blocks to try to guess - // plugin usages. - - // decodeRequiredPluginsBlock needs to be called before - // decodeImplicitRequiredPluginsBlocks; otherwise all required plugins will - // be implicitly required too. - - var diags hcl.Diagnostics - - content, moreDiags := f.Body.Content(configSchema) - diags = append(diags, moreDiags...) - - for _, block := range content.Blocks { - - switch block.Type { - case sourceLabel: - diags = append(diags, cfg.decodeImplicitRequiredPluginsBlock(Builder, block)...) - case dataSourceLabel: - diags = append(diags, cfg.decodeImplicitRequiredPluginsBlock(Datasource, block)...) - case buildLabel: - content, _, moreDiags := block.Body.PartialContent(buildSchema) - diags = append(diags, moreDiags...) - for _, block := range content.Blocks { - - switch block.Type { - case buildProvisionerLabel: - diags = append(diags, cfg.decodeImplicitRequiredPluginsBlock(Provisioner, block)...) - case buildPostProcessorLabel: - diags = append(diags, cfg.decodeImplicitRequiredPluginsBlock(PostProcessor, block)...) - case buildPostProcessorsLabel: - content, _, moreDiags := block.Body.PartialContent(postProcessorsSchema) - diags = append(diags, moreDiags...) - for _, block := range content.Blocks { - - switch block.Type { - case buildPostProcessorLabel: - diags = append(diags, cfg.decodeImplicitRequiredPluginsBlock(PostProcessor, block)...) - } - } - } - } - - } - } - return diags -} - -func (cfg *PackerConfig) decodeImplicitRequiredPluginsBlock(k ComponentKind, block *hcl.Block) hcl.Diagnostics { - if len(block.Labels) == 0 { - // malformed block ? Let's not panic :) - return nil - } - // Currently all block types are `type "component-kind" ["name"] {` - // this makes this simple. - componentName := block.Labels[0] - - store := map[ComponentKind]packer.BasicStore{ - Builder: cfg.parser.PluginConfig.Builders, - PostProcessor: cfg.parser.PluginConfig.PostProcessors, - Provisioner: cfg.parser.PluginConfig.Provisioners, - Datasource: cfg.parser.PluginConfig.DataSources, - }[k] - if store.Has(componentName) { - // If any core or pre-loaded plugin defines the `happycloud-uploader` - // pp, skip. This happens for core and manually installed plugins, as - // they will be listed in the PluginConfig before parsing any HCL. - return nil - } - - redirect := map[ComponentKind]map[string]string{ - Builder: cfg.parser.PluginConfig.BuilderRedirects, - PostProcessor: cfg.parser.PluginConfig.PostProcessorRedirects, - Provisioner: cfg.parser.PluginConfig.ProvisionerRedirects, - Datasource: cfg.parser.PluginConfig.DatasourceRedirects, - }[k][componentName] - - if redirect == "" { - // no known redirect for this component - return nil - } - - redirectAddr, diags := addrs.ParsePluginSourceString(redirect) - if diags.HasErrors() { - // This should never happen, since the map is manually filled. - return diags - } - - for _, req := range cfg.Packer.RequiredPlugins { - if _, found := req.RequiredPlugins[redirectAddr.Type]; found { - // This could happen if a plugin was forked. For example, I forked - // the github.com/hashicorp/happycloud plugin into - // github.com/azr/happycloud that is required in my config file; and - // am using the `happycloud-uploader` pp component from it. In that - // case - and to avoid miss-requires - we won't implicitly import - // any other `happycloud` plugin. - return nil - } - } - - cfg.implicitlyRequirePlugin(redirectAddr) - return nil -} - -func (cfg *PackerConfig) implicitlyRequirePlugin(plugin *addrs.Plugin) { - cfg.Packer.RequiredPlugins = append(cfg.Packer.RequiredPlugins, &RequiredPlugins{ - RequiredPlugins: map[string]*RequiredPlugin{ - plugin.Type: { - Name: plugin.Type, - Source: plugin.String(), - Type: plugin, - Requirement: VersionConstraint{ - Required: nil, // means latest - }, - PluginDependencyReason: PluginDependencyImplicit, - }, - }, - }) -} - // RequiredPlugin represents a declaration of a dependency on a particular // Plugin version or source. type RequiredPlugin struct { @@ -177,24 +55,8 @@ type RequiredPlugin struct { Type *addrs.Plugin Requirement VersionConstraint DeclRange hcl.Range - PluginDependencyReason } -// PluginDependencyReason is an enumeration of reasons why a dependency might be -// present. -type PluginDependencyReason int - -const ( - // PluginDependencyExplicit means that there is an explicit - // "required_plugin" block in the configuration. - PluginDependencyExplicit PluginDependencyReason = iota - - // PluginDependencyImplicit means that there is no explicit - // "required_plugin" block but there is at least one resource that uses this - // plugin. - PluginDependencyImplicit -) - type RequiredPlugins struct { RequiredPlugins map[string]*RequiredPlugin DeclRange hcl.Range diff --git a/hcl2template/types.required_plugins_test.go b/hcl2template/types.required_plugins_test.go index 5e2b4a90c96..0329d1505ff 100644 --- a/hcl2template/types.required_plugins_test.go +++ b/hcl2template/types.required_plugins_test.go @@ -46,7 +46,6 @@ func TestPackerConfig_required_plugin_parse(t *testing.T) { Requirement: VersionConstraint{ Required: mustVersionConstraints(version.NewConstraint("~> v1.2.3")), }, - PluginDependencyReason: PluginDependencyExplicit, }, }}, }, @@ -77,19 +76,13 @@ func TestPackerConfig_required_plugin_parse(t *testing.T) { Requirement: VersionConstraint{ Required: mustVersionConstraints(version.NewConstraint("~> v1.2.3")), }, - PluginDependencyReason: PluginDependencyExplicit, }, }}, }, }, }}, {"required_plugin_forked", PackerConfig{ - parser: getBasicParser(func(p *Parser) { - p.PluginConfig.BuilderRedirects = map[string]string{ - "amazon-chroot": "github.com/hashicorp/amazon", - } - }, - )}, ` + parser: getBasicParser(func(p *Parser) {})}, ` packer { required_plugins { amazon = { @@ -114,19 +107,13 @@ func TestPackerConfig_required_plugin_parse(t *testing.T) { Requirement: VersionConstraint{ Required: mustVersionConstraints(version.NewConstraint("~> v1.2.3")), }, - PluginDependencyReason: PluginDependencyExplicit, }, }}, }, }, }}, {"missing-required-plugin-for-pre-defined-builder", PackerConfig{ - parser: getBasicParser(func(p *Parser) { - p.PluginConfig.BuilderRedirects = map[string]string{ - "amazon-ebs": "github.com/hashicorp/amazon", - } - }, - )}, + parser: getBasicParser(func(p *Parser) {})}, ` packer { }`, ` @@ -143,202 +130,6 @@ func TestPackerConfig_required_plugin_parse(t *testing.T) { RequiredPlugins: nil, }, }}, - {"missing-required-plugin-for-builder", PackerConfig{ - parser: getBasicParser(func(p *Parser) { - p.PluginConfig.BuilderRedirects = map[string]string{ - "amazon-chroot": "github.com/hashicorp/amazon", - } - }, - )}, - ` - packer { - }`, ` - source "amazon-chroot" "example" { - } - `, - false, - PackerConfig{ - Packer: struct { - VersionConstraints []VersionConstraint - RequiredPlugins []*RequiredPlugins - }{ - RequiredPlugins: []*RequiredPlugins{ - {RequiredPlugins: map[string]*RequiredPlugin{ - "amazon": { - Name: "amazon", - Source: "github.com/hashicorp/amazon", - Type: &addrs.Plugin{Hostname: "github.com", Namespace: "hashicorp", Type: "amazon"}, - Requirement: VersionConstraint{ - Required: nil, - }, - PluginDependencyReason: PluginDependencyImplicit, - }, - }}, - }, - }, - }}, - {"missing-required-plugin-for-provisioner", PackerConfig{ - parser: getBasicParser(func(p *Parser) { - p.PluginConfig.ProvisionerRedirects = map[string]string{ - "ansible-local": "github.com/ansible/ansible", - } - }, - )}, - ` - packer { - }`, ` - build { - provisioner "ansible-local" {} - } - `, - false, - PackerConfig{ - Packer: struct { - VersionConstraints []VersionConstraint - RequiredPlugins []*RequiredPlugins - }{ - RequiredPlugins: []*RequiredPlugins{ - {RequiredPlugins: map[string]*RequiredPlugin{ - "ansible": { - Name: "ansible", - Source: "github.com/ansible/ansible", - Type: &addrs.Plugin{Hostname: "github.com", Namespace: "ansible", Type: "ansible"}, - Requirement: VersionConstraint{ - Required: nil, - }, - PluginDependencyReason: PluginDependencyImplicit, - }, - }}, - }, - }, - }}, - {"missing-required-plugin-for-post-processor", PackerConfig{ - parser: getBasicParser(func(p *Parser) { - p.PluginConfig.PostProcessorRedirects = map[string]string{ - "docker-push": "github.com/hashicorp/docker", - } - }, - )}, - ` - packer { - }`, ` - build { - post-processor "docker-push" {} - } - `, - false, - PackerConfig{ - Packer: struct { - VersionConstraints []VersionConstraint - RequiredPlugins []*RequiredPlugins - }{ - RequiredPlugins: []*RequiredPlugins{ - {RequiredPlugins: map[string]*RequiredPlugin{ - "docker": { - Name: "docker", - Source: "github.com/hashicorp/docker", - Type: &addrs.Plugin{Hostname: "github.com", Namespace: "hashicorp", Type: "docker"}, - Requirement: VersionConstraint{ - Required: nil, - }, - PluginDependencyReason: PluginDependencyImplicit, - }, - }}, - }, - }, - }}, - {"missing-required-plugin-for-nested-post-processor", PackerConfig{ - parser: getBasicParser(func(p *Parser) { - p.PluginConfig.PostProcessorRedirects = map[string]string{ - "docker-push": "github.com/hashicorp/docker", - } - }, - )}, - ` - packer { - }`, ` - build { - post-processors { - post-processor "docker-push" { - } - } - } - `, - false, - PackerConfig{ - Packer: struct { - VersionConstraints []VersionConstraint - RequiredPlugins []*RequiredPlugins - }{ - RequiredPlugins: []*RequiredPlugins{ - {RequiredPlugins: map[string]*RequiredPlugin{ - "docker": { - Name: "docker", - Source: "github.com/hashicorp/docker", - Type: &addrs.Plugin{Hostname: "github.com", Namespace: "hashicorp", Type: "docker"}, - Requirement: VersionConstraint{ - Required: nil, - }, - PluginDependencyReason: PluginDependencyImplicit, - }, - }}, - }, - }, - }}, - - {"required-plugin-renamed", PackerConfig{ - parser: getBasicParser(func(p *Parser) { - p.PluginConfig.BuilderRedirects = map[string]string{ - "amazon-chroot": "github.com/hashicorp/amazon", - } - }, - )}, - ` - packer { - required_plugins { - amazon-v1 = { - source = "github.com/hashicorp/amazon" - version = "~> v1.0" - } - } - }`, ` - source "amazon-v1-chroot" "example" { - } - source "amazon-chroot" "example" { - } - `, - false, - PackerConfig{ - Packer: struct { - VersionConstraints []VersionConstraint - RequiredPlugins []*RequiredPlugins - }{ - RequiredPlugins: []*RequiredPlugins{ - {RequiredPlugins: map[string]*RequiredPlugin{ - "amazon-v1": { - Name: "amazon-v1", - Source: "github.com/hashicorp/amazon", - Type: &addrs.Plugin{Hostname: "github.com", Namespace: "hashicorp", Type: "amazon"}, - Requirement: VersionConstraint{ - Required: mustVersionConstraints(version.NewConstraint("~> v1.0")), - }, - PluginDependencyReason: PluginDependencyExplicit, - }, - }}, - {RequiredPlugins: map[string]*RequiredPlugin{ - "amazon": { - Name: "amazon", - Source: "github.com/hashicorp/amazon", - Type: &addrs.Plugin{Hostname: "github.com", Namespace: "hashicorp", Type: "amazon"}, - Requirement: VersionConstraint{ - Required: nil, - }, - PluginDependencyReason: PluginDependencyImplicit, - }, - }}, - }, - }, - }}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { @@ -351,13 +142,10 @@ func TestPackerConfig_required_plugin_parse(t *testing.T) { t.Fatal(diags) } - rest, diags := cfg.parser.ParseHCL([]byte(tt.restOfTemplate), "rest.pkr.hcl") + _, diags = cfg.parser.ParseHCL([]byte(tt.restOfTemplate), "rest.pkr.hcl") if len(diags) > 0 { t.Fatal(diags) } - if gotDiags := cfg.decodeImplicitRequiredPluginsBlocks(rest); (len(gotDiags) > 0) != tt.wantDiags { - t.Fatal(gotDiags) - } if diff := cmp.Diff(tt.wantConfig, cfg, cmpOpts...); diff != "" { t.Errorf("PackerConfig.inferImplicitRequiredPluginFromBlocks() unexpected PackerConfig: %v", diff) } diff --git a/main.go b/main.go index 0d39d70d579..972f7170c68 100644 --- a/main.go +++ b/main.go @@ -325,72 +325,6 @@ func loadConfig() (*config, error) { PluginMinPort: 10000, PluginMaxPort: 25000, KnownPluginFolders: packer.PluginFolders("."), - - // BuilderRedirects - BuilderRedirects: map[string]string{ - - //"amazon-chroot": "github.com/hashicorp/amazon", - //"amazon-ebs": "github.com/hashicorp/amazon", - //"amazon-ebssurrogate": "github.com/hashicorp/amazon", - //"amazon-ebsvolume": "github.com/hashicorp/amazon", - //"amazon-instance": "github.com/hashicorp/amazon", - - //"azure-arm": "github.com/hashicorp/azure", - //"azure-chroot": "github.com/hashicorp/azure", - //"azure-dtl": "github.com/hashicorp/azure", - - //"docker": "github.com/hashicorp/docker", - - //"exoscale": "github.com/exoscale/exoscale", - - //"googlecompute": "github.com/hashicorp/googlecompute", - - //"parallels-iso": "github.com/hashicorp/parallels", - //"parallels-pvm": "github.com/hashicorp/parallels", - - //"qemu": "github.com/hashicorp/qemu", - - //"vagrant": "github.com/hashicorp/vagrant", - - //"virtualbox-iso": "github.com/hashicorp/virtualbox", - //"virtualbox-ovf": "github.com/hashicorp/virtualbox", - //"virtualbox-vm": "github.com/hashicorp/virtualbox", - - //"vmware-iso": "github.com/hashicorp/vmware", - //"vmware-vmx": "github.com/hashicorp/vmware", - - //"vsphere-iso": "github.com/hashicorp/vsphere", - //"vsphere-clone": "github.com/hashicorp/vsphere", - }, - DatasourceRedirects: map[string]string{ - //"amazon-ami": "github.com/hashicorp/amazon", - //"amazon-secretsmanager": "github.com/hashicorp/amazon", - }, - ProvisionerRedirects: map[string]string{ - //"ansible": "github.com/hashicorp/ansible", - //"ansible-local": "github.com/hashicorp/ansible", - - //"azure-dtlartifact": "github.com/hashicorp/azure", - }, - PostProcessorRedirects: map[string]string{ - //"amazon-import": "github.com/hashicorp/amazon", - - //"docker-import": "github.com/hashicorp/docker", - //"docker-push": "github.com/hashicorp/docker", - //"docker-save": "github.com/hashicorp/docker", - //"docker-tag": "github.com/hashicorp/docker", - - //"googlecompute-export": "github.com/hashicorp/googlecompute", - //"googlecompute-import": "github.com/hashicorp/googlecompute", - - //"exoscale-import": "github.com/exoscale/exoscale", - - //"vagrant": "github.com/hashicorp/vagrant", - //"vagrant-cloud": "github.com/hashicorp/vagrant", - - //"vsphere": "github.com/hashicorp/vsphere", - //"vsphere-template": "github.com/hashicorp/vsphere", - }, } if err := config.Plugins.Discover(); err != nil { return nil, err diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index b16edcfade0..92f7e28a8e7 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -43,9 +43,6 @@ type Requirement struct { // VersionConstraints as defined by user. Empty ( to be avoided ) means // highest found version. VersionConstraints version.Constraints - - // was this require implicitly guessed ? - Implicit bool } type BinaryInstallationOptions struct { diff --git a/packer/plugin.go b/packer/plugin.go index c88f54f86b3..313ef2db31e 100644 --- a/packer/plugin.go +++ b/packer/plugin.go @@ -34,23 +34,6 @@ type PluginConfig struct { Provisioners ProvisionerSet PostProcessors PostProcessorSet DataSources DatasourceSet - - // Redirects are only set when a plugin was completely moved out; they allow - // telling where a plugin has moved by checking if a known component of this - // plugin is used. For example implicitly require the - // github.com/hashicorp/amazon plugin if it was moved out and the - // "amazon-ebs" plugin is used, but not found. - // - // Redirects will be bypassed if the redirected components are already found - // in their corresponding sets (Builders, Provisioners, PostProcessors, - // DataSources). That is, for example, if you manually put a single - // component plugin in the plugins folder. - // - // Example BuilderRedirects: "amazon-ebs" => "github.com/hashicorp/amazon" - BuilderRedirects map[string]string - DatasourceRedirects map[string]string - ProvisionerRedirects map[string]string - PostProcessorRedirects map[string]string } // PACKERSPACE is used to represent the spaces that separate args for a command diff --git a/website/content/docs/commands/init.mdx b/website/content/docs/commands/init.mdx index 7b61ecbf13f..940751c5b67 100644 --- a/website/content/docs/commands/init.mdx +++ b/website/content/docs/commands/init.mdx @@ -87,18 +87,6 @@ Directory](/packer/docs/configure#packer-s-plugin-directory). See [Installing Plugins](/packer/docs/plugins#installing-plugins) for more information on how plugin installation works. -### Implicit required plugin - -This is part of a set of breaking changes made to decouple Packer releases from -plugin releases. To make the transition easier, we will tag components of these -plugins as "moved out". If one of the components of a moved out plugin is used -in a config file, but there is no mention of that plugin in the -"required_plugin" block, then Packer init will automatically download and -install that plugin. Packer will then display a warning and suggest that you -add the plugin to your required_plugin block. We recommend you use the -required_plugin block even if you are only using official plugins, because it -allows you to set the plugin version to avoid surprises in the future. - ## Options - `-upgrade` - On top of installing missing plugins, update installed plugins to From f8ebf69c0de67c0a297d2d5c64dd962989ad59fd Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 18 Aug 2023 06:26:08 -0400 Subject: [PATCH 173/381] telemetry: Add nil check in SetBundledUsage Invoking Packer with the CHECKPOINT_DISABLE env. variable the telemetry reporter is left uninitialized in order to disable telemetry reporting. Any method calls on the nil reporter is expected to check if the reporter is active or in NOOP mode. This change fixes a crash when calling SetBundledUsage() on a nil CheckpointTelemetry type that occurs when using a bundled plugin with CHECKPOINT_DISABLE=1. --- packer/telemetry.go | 3 +++ packer/telemetry_test.go | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/packer/telemetry.go b/packer/telemetry.go index 9a7f569139e..c3d0573ef5e 100644 --- a/packer/telemetry.go +++ b/packer/telemetry.go @@ -132,6 +132,9 @@ func (c *CheckpointTelemetry) SetTemplateType(t PackerTemplateType) { // SetBundledUsage marks the template as using bundled plugins func (c *CheckpointTelemetry) SetBundledUsage() { + if c == nil { + return + } c.useBundled = true } diff --git a/packer/telemetry_test.go b/packer/telemetry_test.go index ab304a55023..7abc600cda1 100644 --- a/packer/telemetry_test.go +++ b/packer/telemetry_test.go @@ -4,6 +4,7 @@ package packer import ( + "errors" "testing" "github.com/stretchr/testify/assert" @@ -33,3 +34,24 @@ func TestFlattenConfigKeys_nested(t *testing.T) { "Input didn't flatten correctly.", ) } + +func TestCheckpointTelemetry(t *testing.T) { + defer func() { + if r := recover(); r != nil { + t.Error("a noop CheckpointTelemetry should not to panic but it did\n", r) + } + }() + + // A null CheckpointTelemetry obtained in Packer when the CHECKPOINT_DISABLE env var is set results in a NOOP reporter + // The null reporter can be executable as a configured reporter but does not report any telemetry data. + var c *CheckpointTelemetry + c.SetTemplateType(HCL2Template) + c.SetBundledUsage() + c.AddSpan("mockprovisioner", "provisioner", nil) + if err := c.ReportPanic("Bogus Panic"); err != nil { + t.Errorf("calling ReportPanic on a nil checkpoint reporter should not error") + } + if err := c.Finalize("test", 1, errors.New("Bogus Error")); err != nil { + t.Errorf("calling Finalize on a nil checkpoint reporter should not error") + } +} From 42da69e2bd93881bf23a2e5600791c7edd00f7f9 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 18 Aug 2023 10:32:43 -0400 Subject: [PATCH 174/381] CHANGELOG: cut 1.9.4 release --- CHANGELOG.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f040eba0233..1f484095466 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,13 @@ -## 1.9.4 (Upcoming) +## 1.9.4 (August 18, 2023) + +### BUG FIXES: + +* core: When invoking Packer with the CHECKPOINT_DISABLE environment variable the telemetry + reporter is left uninitialized in order to disable telemetry reporting. + Any method calls on the nil reporter is expected to check if the reporter is active or in + NOOP mode. The SetBundledUsage function, introduced in Packer 1.9.2, failed to perform a nil + check before attempting to modify an attribute, causing Packer to fail when telemetry is + disabled. This release fixes this issue by introducing such a check. ## 1.9.3 (August 17, 2023) From a0cb19927c3f1ac4c98e0770bcad1efdfbbb4475 Mon Sep 17 00:00:00 2001 From: Jamie Finnigan Date: Fri, 18 Aug 2023 10:18:53 -0700 Subject: [PATCH 175/381] .go-version: bump version of Go to 1.20.7 --- .go-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.go-version b/.go-version index 0bd54efd316..8909929f6e7 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.20.4 +1.20.7 From 3c6e3f52ceee74232fb3b65007443586cb616214 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 18 Aug 2023 15:24:28 -0400 Subject: [PATCH 176/381] CHANGELOG: preparing for 1.9.5 --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f484095466..5810f01c34d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +## 1.9.5 (Upcoming) + ## 1.9.4 (August 18, 2023) ### BUG FIXES: From ebdee64c643ae5ad22c4853ec6c64731bae5f310 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 18 Aug 2023 15:48:22 -0400 Subject: [PATCH 177/381] Bump backport assistant to latest version --- .github/workflows/backport.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml index bb6e5b88158..8e4ebf5e0b2 100644 --- a/.github/workflows/backport.yml +++ b/.github/workflows/backport.yml @@ -16,7 +16,7 @@ jobs: contents: none if: github.event.pull_request.merged runs-on: ubuntu-latest - container: hashicorpdev/backport-assistant:0.2.3 + container: hashicorpdev/backport-assistant:0.3.4 steps: - name: Backport changes to stable-website run: | From fa663b47bfaac0eef5d836db407c6ca848a331ab Mon Sep 17 00:00:00 2001 From: cjlapao Date: Fri, 25 Aug 2023 10:31:06 +0100 Subject: [PATCH 178/381] Updating Community Tools webpage Adding Parallels Packer Example --- website/content/docs/community-tools.mdx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/website/content/docs/community-tools.mdx b/website/content/docs/community-tools.mdx index ea75ef3df23..3a222f17a75 100644 --- a/website/content/docs/community-tools.mdx +++ b/website/content/docs/community-tools.mdx @@ -65,6 +65,9 @@ contribution here! to automate the creation of virtual machine images and their guest operating systems on VMware vSphere using HashiCorp Packer and the Packer Plugin for VMware vSphere (vsphere-iso). +- [Parallels/packer-examples](https://github.com/parallels/packer-examples) - Examples in how to use Packer with Parallels Desktop + to automate the creation of virtual machine images and their guest operating systems on macOS, windows and linux. + ## Wrappers - [packer-config](https://github.com/ianchesal/packer-config) - a Ruby model that lets you build Packer configurations in Ruby From 2325c7e9c7da938cd7b0c57fb30447fbcf0e1f67 Mon Sep 17 00:00:00 2001 From: Ilya Voronin Date: Fri, 18 Aug 2023 16:48:33 +0500 Subject: [PATCH 179/381] Set ivoronin/packer-plugin-sshkey version to 'latest' --- website/data/plugins-manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/data/plugins-manifest.json b/website/data/plugins-manifest.json index 675c8e7271d..2647475cb9e 100644 --- a/website/data/plugins-manifest.json +++ b/website/data/plugins-manifest.json @@ -287,7 +287,7 @@ "path": "sshkey", "repo": "ivoronin/packer-plugin-sshkey", "pluginTier": "community", - "version": "v1.0.1" + "version": "latest" }, { "title": "Tart", From 48e8c3e680549e4bce8a106ddc1c4c5d825aad6e Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 11 Aug 2023 14:46:03 +0000 Subject: [PATCH 180/381] Update version output for `-v` and `--version` flags The flags -v and --version are handled by the CLI runner, which outputs the raw version string. This change shortcuts the handling of the flags to force Packer to run the version subcommand. Closes: #12565 --- main.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/main.go b/main.go index 972f7170c68..834d040409a 100644 --- a/main.go +++ b/main.go @@ -252,6 +252,16 @@ func wrappedMain() int { Ui: ui, } + //versionCLIHelper shortcuts "--version" and "-v" to just show the version + versionCLIHelper := &cli.CLI{ + Args: args, + Version: version.Version, + } + if versionCLIHelper.IsVersion() && versionCLIHelper.Version != "" { + // by default version flags ignore all other args so there is no need to persist the original args. + args = []string{"version"} + } + cli := &cli.CLI{ Args: args, Autocomplete: true, From 318529f373e76b314b962874c3b6324e1238b7d1 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 6 Sep 2023 11:07:35 -0400 Subject: [PATCH 181/381] hcl2template: remove value validation for locals Local variables can't have a validation block in their definition, so this step in not useful and should be removed. Besides, since the validation was done on the local variables before evaluation, it did nothing at all, as the PackerConfig.LocalVariables collection gets populated during evaluation, so this is essentially a no-op, and can be safely removed. --- hcl2template/parser.go | 1 - 1 file changed, 1 deletion(-) diff --git a/hcl2template/parser.go b/hcl2template/parser.go index fc9182bf04f..c372a7733a9 100644 --- a/hcl2template/parser.go +++ b/hcl2template/parser.go @@ -295,7 +295,6 @@ func filterVarsFromLogs(inputOrLocal Variables) { func (cfg *PackerConfig) Initialize(opts packer.InitializeOptions) hcl.Diagnostics { diags := cfg.InputVariables.ValidateValues() - diags = append(diags, cfg.LocalVariables.ValidateValues()...) diags = append(diags, cfg.evaluateDatasources(opts.SkipDatasourcesExecution)...) diags = append(diags, checkForDuplicateLocalDefinition(cfg.LocalBlocks)...) diags = append(diags, cfg.evaluateLocalVariables(cfg.LocalBlocks)...) From 6fa0d25c5107b19c33e8e87a3314397def5b633f Mon Sep 17 00:00:00 2001 From: "Sk.Lv" Date: Fri, 4 Aug 2023 10:52:38 +0800 Subject: [PATCH 182/381] website: register ksyun docuement --- website/data/plugins-manifest.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/website/data/plugins-manifest.json b/website/data/plugins-manifest.json index 2647475cb9e..ae900b68e70 100644 --- a/website/data/plugins-manifest.json +++ b/website/data/plugins-manifest.json @@ -373,5 +373,12 @@ "repo": "hashicorp/packer-plugin-yandex", "version": "latest", "pluginTier": "community" + }, + { + "title": "Ksyun", + "path": "ksyun", + "repo": "kingsoftcloud/packer-plugin-ksyun", + "pluginTier": "community", + "version": "latest" } ] From 7f7567f68626a8a9752c77c04fcb4ec1b0b1bd83 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 15 Sep 2023 08:55:44 -0400 Subject: [PATCH 183/381] Remove plugins on the integration framework The active plugins that resided in a HashiCorp repository have been migrated to the integrations framework and no longer need to be listed within the plugins-manifest file. --- website/data/plugins-manifest.json | 234 ----------------------------- 1 file changed, 234 deletions(-) diff --git a/website/data/plugins-manifest.json b/website/data/plugins-manifest.json index ae900b68e70..63d9d26998b 100644 --- a/website/data/plugins-manifest.json +++ b/website/data/plugins-manifest.json @@ -1,18 +1,4 @@ [ - { - "title": "1&1", - "path": "oneandone", - "repo": "hashicorp/packer-plugin-oneandone", - "pluginTier": "community", - "version": "latest" - }, - { - "title": "Alibaba Cloud", - "path": "alicloud", - "repo": "hashicorp/packer-plugin-alicloud", - "pluginTier": "community", - "version": "latest" - }, { "title": "Anka", "path": "anka", @@ -21,49 +7,6 @@ "sourceBranch": "master", "version": "latest" }, - { - "title": "Ansible", - "path": "ansible", - "repo": "hashicorp/packer-plugin-ansible", - "version": "latest" - }, - { - "title": "Amazon EC2", - "path": "amazon", - "repo": "hashicorp/packer-plugin-amazon", - "version": "latest", - "isHcpPackerReady": true - }, - { - "title": "Azure", - "path": "azure", - "repo": "hashicorp/packer-plugin-azure", - "version": "latest", - "isHcpPackerReady": true - }, - { - "title": "Chef", - "path": "chef", - "repo": "hashicorp/packer-plugin-chef", - "pluginTier": "community", - "version": "latest", - "archived": true - }, - { - "title": "CloudStack", - "path": "cloudstack", - "repo": "hashicorp/packer-plugin-cloudstack", - "pluginTier": "community", - "version": "latest" - }, - { - "title": "Converge", - "path": "converge", - "repo": "hashicorp/packer-plugin-converge", - "pluginTier": "community", - "version": "latest", - "archived": true - }, { "title": "DigitalOcean", "path": "digitalocean", @@ -72,13 +15,6 @@ "version": "latest", "isHcpPackerReady": true }, - { - "title": "Docker", - "path": "docker", - "repo": "hashicorp/packer-plugin-docker", - "version": "latest", - "isHcpPackerReady": true - }, { "title": "External", "path": "external", @@ -93,13 +29,6 @@ "version": "latest", "sourceBranch": "main" }, - { - "title": "Google Cloud Platform", - "path": "googlecompute", - "repo": "hashicorp/packer-plugin-googlecompute", - "version": "latest", - "isHcpPackerReady": true - }, { "title": "Gridscale", "path": "gridscale", @@ -108,49 +37,6 @@ "pluginTier": "verified", "isHcpPackerReady": false }, - { - "title": "HashiCups", - "path": "hashicups", - "repo": "hashicorp/packer-plugin-hashicups", - "version": "latest", - "isHcpPackerReady": false - }, - { - "title": "Hetzner Cloud", - "path": "hetzner-cloud", - "repo": "hashicorp/packer-plugin-hcloud", - "version": "latest", - "pluginTier": "community" - }, - { - "title": "HyperOne", - "path": "hyperone", - "repo": "hashicorp/packer-plugin-hyperone", - "version": "latest", - "pluginTier": "community" - }, - { - "title": "Hyper-V", - "path": "hyperv", - "repo": "hashicorp/packer-plugin-hyperv", - "version": "latest", - "pluginTier": "community" - }, - { - "title": "InSpec", - "path": "inspec", - "repo": "hashicorp/packer-plugin-inspec", - "pluginTier": "community", - "version": "latest", - "archived": true - }, - { - "title": "JD Cloud", - "path": "jdcloud", - "repo": "hashicorp/packer-plugin-jdcloud", - "pluginTier": "community", - "version": "latest" - }, { "title": "Kamatera", "path": "kamatera", @@ -173,20 +59,6 @@ "pluginTier": "community", "version": "latest" }, - { - "title": "LXC", - "path": "lxc", - "repo": "hashicorp/packer-plugin-lxc", - "pluginTier": "community", - "version": "latest" - }, - { - "title": "LXD", - "path": "lxd", - "repo": "hashicorp/packer-plugin-lxd", - "pluginTier": "community", - "version": "latest" - }, { "title": "Mondoo", "path": "mondoo", @@ -194,13 +66,6 @@ "pluginTier": "verified", "version": "latest" }, - { - "title": "Naver Cloud", - "path": "ncloud", - "repo": "hashicorp/packer-plugin-ncloud", - "pluginTier": "community", - "version": "latest" - }, { "title": "Nutanix", "path": "nutanix", @@ -209,21 +74,6 @@ "pluginTier": "verified", "sourceBranch": "main" }, - { - "title": "OpenStack", - "path": "openstack", - "repo": "hashicorp/packer-plugin-openstack", - "pluginTier": "community", - "version": "latest" - }, - { - "title": "Oracle", - "path": "oracle", - "repo": "hashicorp/packer-plugin-oracle", - "pluginTier": "community", - "version": "latest", - "isHcpPackerReady": true - }, { "title": "Outscale", "path": "outscale", @@ -239,42 +89,6 @@ "version": "latest", "pluginTier": "verified" }, - { - "title": "Profitbricks", - "path": "profitbricks", - "repo": "hashicorp/packer-plugin-profitbricks", - "pluginTier": "community", - "version": "latest" - }, - { - "title": "Proxmox", - "path": "proxmox", - "repo": "hashicorp/packer-plugin-proxmox", - "pluginTier": "community", - "version": "latest" - }, - { - "title": "Puppet", - "path": "puppet", - "repo": "hashicorp/packer-plugin-puppet", - "version": "latest", - "pluginTier": "community", - "archived": true - }, - { - "title": "QEMU", - "path": "qemu", - "repo": "hashicorp/packer-plugin-qemu", - "version": "latest" - }, - { - "title": "Salt", - "path": "salt", - "repo": "hashicorp/packer-plugin-salt", - "pluginTier": "community", - "version": "latest", - "archived": true - }, { "title": "Scaleway", "path": "scaleway", @@ -296,20 +110,6 @@ "pluginTier": "community", "version": "latest" }, - { - "title": "Tencent Cloud", - "path": "tencentcloud", - "repo": "hashicorp/packer-plugin-tencentcloud", - "pluginTier": "community", - "version": "latest" - }, - { - "title": "Triton", - "path": "triton", - "repo": "hashicorp/packer-plugin-triton", - "pluginTier": "community", - "version": "latest" - }, { "title": "UCloud", "path": "ucloud", @@ -326,20 +126,6 @@ "sourceBranch": "master", "isHcpPackerReady": true }, - { - "title": "Vagrant", - "path": "vagrant", - "repo": "hashicorp/packer-plugin-vagrant", - "pluginTier": "official", - "version": "latest" - }, - { - "title": "VirtualBox", - "path": "virtualbox", - "repo": "hashicorp/packer-plugin-virtualbox", - "pluginTier": "official", - "version": "latest" - }, { "title": "Volcengine", "path": "volcengine", @@ -347,19 +133,6 @@ "pluginTier": "community", "version": "latest" }, - { - "title": "VMware vSphere", - "path": "vsphere", - "repo": "hashicorp/packer-plugin-vsphere", - "version": "latest", - "isHcpPackerReady": true - }, - { - "title": "VMware", - "path": "vmware", - "repo": "hashicorp/packer-plugin-vmware", - "version": "latest" - }, { "title": "Vultr", "path": "vultr", @@ -367,13 +140,6 @@ "pluginTier": "community", "version": "latest" }, - { - "title": "Yandex", - "path": "yandex", - "repo": "hashicorp/packer-plugin-yandex", - "version": "latest", - "pluginTier": "community" - }, { "title": "Ksyun", "path": "ksyun", From 324e628b86ef850bd12994586c1e2c850d986694 Mon Sep 17 00:00:00 2001 From: guoguangwu Date: Thu, 21 Sep 2023 13:14:19 +0800 Subject: [PATCH 184/381] chore: unnecessary use of fmt.Sprintf Signed-off-by: guoguangwu --- builder/null/artifact_export.go | 4 +--- command/build_parallel_test.go | 7 +++---- hcl2template/types.datasource.go | 4 ++-- provisioner/breakpoint/provisioner.go | 3 +-- 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/builder/null/artifact_export.go b/builder/null/artifact_export.go index 8b12610f81b..5a685629072 100644 --- a/builder/null/artifact_export.go +++ b/builder/null/artifact_export.go @@ -4,8 +4,6 @@ package null import ( - "fmt" - registryimage "github.com/hashicorp/packer-plugin-sdk/packer/registry/image" ) @@ -26,7 +24,7 @@ func (*NullArtifact) Id() string { } func (a *NullArtifact) String() string { - return fmt.Sprintf("Did not export anything. This is the null builder") + return "Did not export anything. This is the null builder" } func (a *NullArtifact) State(name string) interface{} { diff --git a/command/build_parallel_test.go b/command/build_parallel_test.go index 4758505241b..4bebc65cee8 100644 --- a/command/build_parallel_test.go +++ b/command/build_parallel_test.go @@ -6,7 +6,6 @@ package command import ( "bytes" "context" - "fmt" "path/filepath" "sync" "testing" @@ -101,7 +100,7 @@ func TestBuildParallel_1(t *testing.T) { } args := []string{ - fmt.Sprintf("-parallel-builds=10"), + "-parallel-builds=10", filepath.Join(testFixture("parallel"), "1lock-5wg.json"), } @@ -130,7 +129,7 @@ func TestBuildParallel_2(t *testing.T) { } args := []string{ - fmt.Sprintf("-parallel-builds=3"), + "-parallel-builds=3", filepath.Join(testFixture("parallel"), "2lock-4wg.json"), } @@ -159,7 +158,7 @@ func TestBuildParallel_Timeout(t *testing.T) { } args := []string{ - fmt.Sprintf("-parallel-builds=3"), + "-parallel-builds=3", filepath.Join(testFixture("parallel"), "2lock-timeout.json"), } diff --git a/hcl2template/types.datasource.go b/hcl2template/types.datasource.go index 8ac2c160827..348d06f452c 100644 --- a/hcl2template/types.datasource.go +++ b/hcl2template/types.datasource.go @@ -45,7 +45,7 @@ func (ds *Datasources) Values() (map[string]cty.Value, hcl.Diagnostics) { for ref, datasource := range *ds { if datasource.value == (cty.Value{}) { diags = append(diags, &hcl.Diagnostic{ - Summary: fmt.Sprintf("empty value"), + Summary: "empty value", Subject: &datasource.block.DefRange, Severity: hcl.DiagError, }) @@ -73,7 +73,7 @@ func (cfg *PackerConfig) startDatasource(dataSourceStore packer.DatasourceStore, diags = append(diags, &hcl.Diagnostic{ Summary: "Unknown " + dataSourceLabel + " type " + ref.Type, Subject: block.LabelRanges[0].Ptr(), - Detail: fmt.Sprintf("packer does not currently know any data source."), + Detail: "packer does not currently know any data source.", Severity: hcl.DiagError, }) return nil, diags diff --git a/provisioner/breakpoint/provisioner.go b/provisioner/breakpoint/provisioner.go index 9675ddff0d3..9ac6e340fb2 100644 --- a/provisioner/breakpoint/provisioner.go +++ b/provisioner/breakpoint/provisioner.go @@ -67,8 +67,7 @@ func (p *Provisioner) Provision(ctx context.Context, ui packersdk.Ui, comm packe ui.Say("Pausing at breakpoint provisioner.") } - message := fmt.Sprintf( - "Press enter to continue.") + message := "Press enter to continue." var g errgroup.Group result := make(chan string, 1) From 7eb6a45cd483af4236645f75ca83623aa127f929 Mon Sep 17 00:00:00 2001 From: guoguangwu Date: Fri, 22 Sep 2023 15:44:03 +0800 Subject: [PATCH 185/381] chore: remove refs to deprecated io/ioutil Signed-off-by: guoguangwu --- acctest/plugin/component_acc_test.go | 4 +-- acctest/plugin/plugin_acc_test.go | 4 +-- acctest/testing.go | 6 ++-- builder/file/builder.go | 3 +- builder/file/builder_test.go | 6 ++-- cmd/ssh-keygen/main.go | 5 ++-- command/build_test.go | 5 ++-- command/command_test.go | 4 +-- command/fmt_test.go | 3 +- command/hcl2_upgrade_test.go | 5 ++-- command/utils_test.go | 5 ++-- config_test.go | 5 ++-- datasource/http/data.go | 4 +-- datasource/http/data_acc_test.go | 4 +-- hcl2template/formatter.go | 11 ++++--- hcl2template/formatter_test.go | 9 +++--- hcl2template/utils.go | 3 +- main.go | 5 ++-- packer/client_test.go | 3 +- packer/plugin-getter/github/getter.go | 5 ++-- packer/plugin-getter/plugins.go | 3 +- packer/plugin-getter/plugins_test.go | 5 ++-- packer/plugin_client.go | 3 +- packer/progressbar_test.go | 10 +++---- packer/testing.go | 6 ++-- .../checksum/post-processor_test.go | 4 +-- .../compress/post-processor_test.go | 18 ++++++------ post-processor/manifest/post-processor.go | 5 ++-- .../shell-local/post-processor_test.go | 9 +++--- provisioner/file/provisioner_test.go | 29 +++++++++---------- .../powershell/provisioner_acc_test.go | 4 +-- provisioner/powershell/provisioner_test.go | 17 +++++------ .../shell-local/provisioner_acc_test.go | 4 +-- provisioner/shell/provisioner_acc_test.go | 4 +-- provisioner/shell/provisioner_test.go | 9 +++--- provisioner/windows-shell/provisioner_test.go | 15 +++++----- scripts/generate-plugins.go | 3 +- 37 files changed, 112 insertions(+), 135 deletions(-) diff --git a/acctest/plugin/component_acc_test.go b/acctest/plugin/component_acc_test.go index 110d8d3765a..e78c77284c0 100644 --- a/acctest/plugin/component_acc_test.go +++ b/acctest/plugin/component_acc_test.go @@ -8,7 +8,7 @@ package plugin import ( _ "embed" "fmt" - "io/ioutil" + "io" "os" "os/exec" "testing" @@ -54,7 +54,7 @@ func TestAccInitAndBuildBasicAmazonAmiDatasource(t *testing.T) { } defer logs.Close() - logsBytes, err := ioutil.ReadAll(logs) + logsBytes, err := io.ReadAll(logs) if err != nil { return fmt.Errorf("Unable to read %s", logfile) } diff --git a/acctest/plugin/plugin_acc_test.go b/acctest/plugin/plugin_acc_test.go index 137fb394db4..6549b2129a3 100644 --- a/acctest/plugin/plugin_acc_test.go +++ b/acctest/plugin/plugin_acc_test.go @@ -8,7 +8,7 @@ package plugin import ( _ "embed" "fmt" - "io/ioutil" + "io" "os" "os/exec" "path/filepath" @@ -58,7 +58,7 @@ func TestAccInitAndBuildBasicAmazonEbs(t *testing.T) { } defer logs.Close() - logsBytes, err := ioutil.ReadAll(logs) + logsBytes, err := io.ReadAll(logs) if err != nil { return fmt.Errorf("Unable to read %s", logfile) } diff --git a/acctest/testing.go b/acctest/testing.go index dbd877fb3d3..dd18be1a365 100644 --- a/acctest/testing.go +++ b/acctest/testing.go @@ -6,7 +6,7 @@ package acctest import ( "context" "fmt" - "io/ioutil" + "io" "log" "os" "strings" @@ -182,8 +182,8 @@ func Test(t TestT, c TestCase) { log.Printf("[DEBUG] Running 'test' build") ui := &packersdk.BasicUi{ Reader: os.Stdin, - Writer: ioutil.Discard, - ErrorWriter: ioutil.Discard, + Writer: io.Discard, + ErrorWriter: io.Discard, PB: &packersdk.NoopProgressTracker{}, } artifacts, err := build.Run(context.Background(), ui) diff --git a/builder/file/builder.go b/builder/file/builder.go index e9d9d8f9ebd..0f79c958fe8 100644 --- a/builder/file/builder.go +++ b/builder/file/builder.go @@ -12,7 +12,6 @@ import ( "context" "fmt" "io" - "io/ioutil" "os" "path/filepath" @@ -77,7 +76,7 @@ func (b *Builder) Run(ctx context.Context, ui packersdk.Ui, hook packersdk.Hook) } else { // We're going to write Contents; if it's empty we'll just create an // empty file. - err := ioutil.WriteFile(b.config.Target, []byte(b.config.Content), 0600) + err := os.WriteFile(b.config.Target, []byte(b.config.Content), 0600) if err != nil { return nil, err } diff --git a/builder/file/builder_test.go b/builder/file/builder_test.go index 80fc326bdf4..5248318a4dc 100644 --- a/builder/file/builder_test.go +++ b/builder/file/builder_test.go @@ -5,7 +5,7 @@ package file import ( "fmt" - "io/ioutil" + "os" "testing" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" @@ -33,7 +33,7 @@ func TestBuilderFileAcc_copy(t *testing.T) { } func checkContent(artifacts []packersdk.Artifact) error { - content, err := ioutil.ReadFile("contentTest.txt") + content, err := os.ReadFile("contentTest.txt") if err != nil { return err } @@ -45,7 +45,7 @@ func checkContent(artifacts []packersdk.Artifact) error { } func checkCopy(artifacts []packersdk.Artifact) error { - content, err := ioutil.ReadFile("copyTest.txt") + content, err := os.ReadFile("copyTest.txt") if err != nil { return err } diff --git a/cmd/ssh-keygen/main.go b/cmd/ssh-keygen/main.go index f47eca5791f..c29edf76e7e 100644 --- a/cmd/ssh-keygen/main.go +++ b/cmd/ssh-keygen/main.go @@ -5,7 +5,6 @@ package main import ( "flag" - "io/ioutil" "log" "os" "os/user" @@ -74,12 +73,12 @@ func main() { log.Fatalf("%s already exists.", cla.Filename) } log.Printf("Saving private key to %s", cla.Filename) - if err := ioutil.WriteFile(cla.Filename, keypair.Private, 0600); err != nil { + if err := os.WriteFile(cla.Filename, keypair.Private, 0600); err != nil { log.Fatal(err) } publicFilename := cla.Filename + ".pub" log.Printf("Saving public key to %s", publicFilename) - if err := ioutil.WriteFile(publicFilename, keypair.Public, 0644); err != nil { + if err := os.WriteFile(publicFilename, keypair.Public, 0644); err != nil { log.Fatal(err) } } diff --git a/command/build_test.go b/command/build_test.go index 00685e98dc7..de476fdb0c4 100644 --- a/command/build_test.go +++ b/command/build_test.go @@ -5,7 +5,6 @@ package command import ( "fmt" - "io/ioutil" "math" "os" "path/filepath" @@ -1009,9 +1008,9 @@ func (fc fileCheck) verify(t *testing.T, dir string) { } } for file, expectedContent := range fc.expectedContent { - content, err := ioutil.ReadFile(filepath.Join(dir, file)) + content, err := os.ReadFile(filepath.Join(dir, file)) if err != nil { - t.Fatalf("ioutil.ReadFile: %v", err) + t.Fatalf("os.ReadFile: %v", err) } if diff := cmp.Diff(expectedContent, string(content)); diff != "" { t.Errorf("content of %s differs: %s", file, diff) diff --git a/command/command_test.go b/command/command_test.go index fcbec5fb0a7..712e9300496 100644 --- a/command/command_test.go +++ b/command/command_test.go @@ -5,7 +5,7 @@ package command import ( "bytes" - "io/ioutil" + "os" "path/filepath" "testing" @@ -27,7 +27,7 @@ func fatalCommand(t *testing.T, m Meta) { func testFixtureContent(n ...string) string { path := filepath.Join(append([]string{fixturesDir}, n...)...) - b, err := ioutil.ReadFile(path) + b, err := os.ReadFile(path) if err != nil { panic(err) } diff --git a/command/fmt_test.go b/command/fmt_test.go index 8fd058b379b..7d9f3b11979 100644 --- a/command/fmt_test.go +++ b/command/fmt_test.go @@ -6,7 +6,6 @@ package command import ( "bytes" "fmt" - "io/ioutil" "os" "path/filepath" "strings" @@ -128,7 +127,7 @@ func TestFmt_Recursive(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - tempDirectory := mustString(ioutil.TempDir(testDir, "test-dir-*")) + tempDirectory := mustString(os.MkdirTemp(testDir, "test-dir-*")) defer os.RemoveAll(tempDirectory) createFiles(tempDirectory, tt.alreadyPresentContent) diff --git a/command/hcl2_upgrade_test.go b/command/hcl2_upgrade_test.go index f0ffc7676f2..487d99999cb 100644 --- a/command/hcl2_upgrade_test.go +++ b/command/hcl2_upgrade_test.go @@ -4,7 +4,6 @@ package command import ( - "io/ioutil" "os" "path/filepath" "testing" @@ -64,8 +63,8 @@ func Test_hcl2_upgrade(t *testing.T) { if tc.exitEarly { return } - expected := string(mustBytes(ioutil.ReadFile(expectedPath))) - actual := string(mustBytes(ioutil.ReadFile(outputPath))) + expected := string(mustBytes(os.ReadFile(expectedPath))) + actual := string(mustBytes(os.ReadFile(outputPath))) if diff := cmp.Diff(expected, actual); diff != "" { t.Fatalf("unexpected output: %s", diff) diff --git a/command/utils_test.go b/command/utils_test.go index 6af1f2c4881..cf5e2dbe3e7 100644 --- a/command/utils_test.go +++ b/command/utils_test.go @@ -4,7 +4,6 @@ package command import ( - "io/ioutil" "log" "os" "path/filepath" @@ -23,7 +22,7 @@ func createFiles(dir string, content map[string]string) { if err := os.MkdirAll(filepath.Dir(contentPath), 0777); err != nil { panic(err) } - if err := ioutil.WriteFile(contentPath, []byte(content), 0666); err != nil { + if err := os.WriteFile(contentPath, []byte(content), 0666); err != nil { panic(err) } log.Printf("created tmp file: %s", contentPath) @@ -39,7 +38,7 @@ func (c *configDirSingleton) dir(key string) string { if v, exists := c.dirs[key]; exists { return v } - c.dirs[key] = mustString(ioutil.TempDir("", "pkr-test-cfg-dir-"+key)) + c.dirs[key] = mustString(os.MkdirTemp("", "pkr-test-cfg-dir-"+key)) return c.dirs[key] } diff --git a/config_test.go b/config_test.go index 1a583a8c3a7..ac101010c3c 100644 --- a/config_test.go +++ b/config_test.go @@ -6,7 +6,6 @@ package main import ( "encoding/json" "fmt" - "io/ioutil" "os" "path/filepath" "reflect" @@ -122,7 +121,7 @@ func TestLoadExternalComponentsFromConfig_onlyProvisioner(t *testing.T) { func TestLoadSingleComponent(t *testing.T) { // .exe will work everyone for testing purpose, but mostly here to help Window's test runs. - tmpFile, err := ioutil.TempFile(".", "packer-builder-*.exe") + tmpFile, err := os.CreateTemp(".", "packer-builder-*.exe") if err != nil { t.Fatalf("failed to create test file with error: %s", err) } @@ -160,7 +159,7 @@ func TestLoadSingleComponent(t *testing.T) { } func generateFakePlugins(dirname string, pluginNames []string) (string, []string, func(), error) { - dir, err := ioutil.TempDir("", dirname) + dir, err := os.MkdirTemp("", dirname) if err != nil { return "", nil, nil, fmt.Errorf("failed to create temporary test directory: %v", err) } diff --git a/datasource/http/data.go b/datasource/http/data.go index ef77adca2ba..58dec04c35b 100644 --- a/datasource/http/data.go +++ b/datasource/http/data.go @@ -8,7 +8,7 @@ package http import ( "context" "fmt" - "io/ioutil" + "io" "mime" "net/http" "regexp" @@ -137,7 +137,7 @@ func (d *Datasource) Execute() (cty.Value, error) { fmt.Println("If the content is binary data, Packer may not properly handle the contents of the response.") } - bytes, err := ioutil.ReadAll(resp.Body) + bytes, err := io.ReadAll(resp.Body) // TODO: How to make test case for this? if err != nil { fmt.Println("Error processing response body of call") diff --git a/datasource/http/data_acc_test.go b/datasource/http/data_acc_test.go index c5a92718e67..fdf680b8298 100644 --- a/datasource/http/data_acc_test.go +++ b/datasource/http/data_acc_test.go @@ -6,7 +6,7 @@ package http import ( _ "embed" "fmt" - "io/ioutil" + "io" "os" "os/exec" "regexp" @@ -84,7 +84,7 @@ func TestHttpDataSource(t *testing.T) { } defer logs.Close() - logsBytes, err := ioutil.ReadAll(logs) + logsBytes, err := io.ReadAll(logs) if err != nil { return fmt.Errorf("Unable to read %s", logfile) } diff --git a/hcl2template/formatter.go b/hcl2template/formatter.go index 5505cde4052..c04bb114748 100644 --- a/hcl2template/formatter.go +++ b/hcl2template/formatter.go @@ -7,7 +7,6 @@ import ( "bytes" "fmt" "io" - "io/ioutil" "os" "os/exec" "path/filepath" @@ -76,7 +75,7 @@ func (f *HCL2Formatter) Format(path string) (int, hcl.Diagnostics) { return f.formatFile(path, diags, bytesModified) } - fileInfos, err := ioutil.ReadDir(path) + fileInfos, err := os.ReadDir(path) if err != nil { diag := &hcl.Diagnostic{ Severity: hcl.DiagError, @@ -129,7 +128,7 @@ func (f *HCL2Formatter) processFile(filename string) ([]byte, error) { } } - inSrc, err := ioutil.ReadAll(in) + inSrc, err := io.ReadAll(in) if err != nil { return nil, fmt.Errorf("failed to read %s: %s", filename, err) } @@ -158,7 +157,7 @@ func (f *HCL2Formatter) processFile(filename string) ([]byte, error) { if filename == "-" { _, _ = f.Output.Write(outSrc) } else { - if err := ioutil.WriteFile(filename, outSrc, 0644); err != nil { + if err := os.WriteFile(filename, outSrc, 0644); err != nil { return nil, err } } @@ -178,14 +177,14 @@ func (f *HCL2Formatter) processFile(filename string) ([]byte, error) { // bytesDiff returns the unified diff of b1 and b2 // Shamelessly copied from Terraform's fmt command. func bytesDiff(b1, b2 []byte, path string) (data []byte, err error) { - f1, err := ioutil.TempFile("", "") + f1, err := os.CreateTemp("", "") if err != nil { return } defer os.Remove(f1.Name()) defer f1.Close() - f2, err := ioutil.TempFile("", "") + f2, err := os.CreateTemp("", "") if err != nil { return } diff --git a/hcl2template/formatter_test.go b/hcl2template/formatter_test.go index 07febb6f439..8cb909292a9 100644 --- a/hcl2template/formatter_test.go +++ b/hcl2template/formatter_test.go @@ -5,7 +5,6 @@ package hcl2template import ( "bytes" - "io/ioutil" "os" "os/exec" "strings" @@ -48,12 +47,12 @@ func TestHCL2Formatter_Format_Write(t *testing.T) { f.Output = &buf f.Write = true - unformattedData, err := ioutil.ReadFile("testdata/format/unformatted.pkr.hcl") + unformattedData, err := os.ReadFile("testdata/format/unformatted.pkr.hcl") if err != nil { t.Fatalf("failed to open the unformatted fixture %s", err) } - tf, err := ioutil.TempFile("", "*.pkr.hcl") + tf, err := os.CreateTemp("", "*.pkr.hcl") if err != nil { t.Fatalf("failed to create tempfile for test %s", err) } @@ -68,12 +67,12 @@ func TestHCL2Formatter_Format_Write(t *testing.T) { } //lets re-read the tempfile which should now be formatted - data, err := ioutil.ReadFile(tf.Name()) + data, err := os.ReadFile(tf.Name()) if err != nil { t.Fatalf("failed to open the newly formatted fixture %s", err) } - formattedData, err := ioutil.ReadFile("testdata/format/formatted.pkr.hcl") + formattedData, err := os.ReadFile("testdata/format/formatted.pkr.hcl") if err != nil { t.Fatalf("failed to open the formatted fixture %s", err) } diff --git a/hcl2template/utils.go b/hcl2template/utils.go index dc2399a1034..98546a95456 100644 --- a/hcl2template/utils.go +++ b/hcl2template/utils.go @@ -5,7 +5,6 @@ package hcl2template import ( "fmt" - "io/ioutil" "os" "path/filepath" "strings" @@ -74,7 +73,7 @@ func GetHCL2Files(filename, hclSuffix, jsonSuffix string) (hclFiles, jsonFiles [ return nil, nil, diags } - fileInfos, err := ioutil.ReadDir(filename) + fileInfos, err := os.ReadDir(filename) if err != nil { diag := &hcl.Diagnostic{ Severity: hcl.DiagError, diff --git a/main.go b/main.go index 834d040409a..fe902f5bdb3 100644 --- a/main.go +++ b/main.go @@ -9,7 +9,6 @@ package main import ( "fmt" "io" - "io/ioutil" "log" "math/rand" "os" @@ -65,13 +64,13 @@ func realMain() int { return 1 } if logWriter == nil { - logWriter = ioutil.Discard + logWriter = io.Discard } packersdk.LogSecretFilter.SetOutput(logWriter) // Disable logging here - log.SetOutput(ioutil.Discard) + log.SetOutput(io.Discard) // We always send logs to a temporary file that we use in case // there is a panic. Otherwise, we delete it. diff --git a/packer/client_test.go b/packer/client_test.go index f0dc074e997..c914a3edaed 100644 --- a/packer/client_test.go +++ b/packer/client_test.go @@ -5,7 +5,6 @@ package packer import ( "bytes" - "io/ioutil" "os" "strings" "testing" @@ -102,7 +101,7 @@ func TestClient_Stderr(t *testing.T) { func TestClient_Stdin(t *testing.T) { // Overwrite stdin for this test with a temporary file - tf, err := ioutil.TempFile("", "packer") + tf, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("err: %s", err) } diff --git a/packer/plugin-getter/github/getter.go b/packer/plugin-getter/github/getter.go index bde61e51641..a4942a42163 100644 --- a/packer/plugin-getter/github/getter.go +++ b/packer/plugin-getter/github/getter.go @@ -11,7 +11,6 @@ import ( "errors" "fmt" "io" - "io/ioutil" "log" "net/http" "os" @@ -71,7 +70,7 @@ func transformChecksumStream() func(in io.ReadCloser) (io.ReadCloser, error) { } } _, _ = buffer.WriteString("]") - return ioutil.NopCloser(buffer), nil + return io.NopCloser(buffer), nil } } @@ -103,7 +102,7 @@ func transformVersionStream(in io.ReadCloser) (io.ReadCloser, error) { return nil, err } - return ioutil.NopCloser(buf), nil + return io.NopCloser(buf), nil } // HostSpecificTokenAuthTransport makes sure the http roundtripper only sets an diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index 92f7e28a8e7..f6ca5c4abfe 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -9,7 +9,6 @@ import ( "encoding/json" "fmt" "io" - "io/ioutil" "log" "os" "path/filepath" @@ -714,7 +713,7 @@ func (pr *Requirement) InstallLatest(opts InstallOptions) (*Installation, error) log.Printf("[WARNING] %v, ignoring", err) } - if err := ioutil.WriteFile(outputFileName+checksum.Checksummer.FileExt(), []byte(hex.EncodeToString(cs)), 0555); err != nil { + if err := os.WriteFile(outputFileName+checksum.Checksummer.FileExt(), []byte(hex.EncodeToString(cs)), 0555); err != nil { err := fmt.Errorf("failed to write local binary checksum file: %s", err) errs = multierror.Append(errs, err) log.Printf("[WARNING] %v, ignoring", err) diff --git a/packer/plugin-getter/plugins_test.go b/packer/plugin-getter/plugins_test.go index 7a1439de210..dfb28767067 100644 --- a/packer/plugin-getter/plugins_test.go +++ b/packer/plugin-getter/plugins_test.go @@ -10,7 +10,6 @@ import ( "encoding/json" "fmt" "io" - "io/ioutil" "log" "os" "path/filepath" @@ -754,7 +753,7 @@ func (g *mockPluginGetter) Get(what string, options GetOptions) (io.ReadCloser, panic(err) } }() - return ioutil.NopCloser(read), nil + return io.NopCloser(read), nil } func zipFile(content map[string]string) io.ReadCloser { @@ -778,7 +777,7 @@ func zipFile(content map[string]string) io.ReadCloser { if err != nil { panic(err) } - return ioutil.NopCloser(buff) + return io.NopCloser(buff) } var _ Getter = &mockPluginGetter{} diff --git a/packer/plugin_client.go b/packer/plugin_client.go index b788f68f7fb..01e899e2813 100644 --- a/packer/plugin_client.go +++ b/packer/plugin_client.go @@ -8,7 +8,6 @@ import ( "errors" "fmt" "io" - "io/ioutil" "log" "net" "os" @@ -114,7 +113,7 @@ func NewClient(config *PluginClientConfig) (c *PluginClient) { } if config.Stderr == nil { - config.Stderr = ioutil.Discard + config.Stderr = io.Discard } c = &PluginClient{config: config} diff --git a/packer/progressbar_test.go b/packer/progressbar_test.go index 96ff65d687b..20edc07c9b2 100644 --- a/packer/progressbar_test.go +++ b/packer/progressbar_test.go @@ -5,7 +5,7 @@ package packer import ( "bytes" - "io/ioutil" + "io" "testing" "golang.org/x/sync/errgroup" @@ -16,10 +16,10 @@ import ( func TestProgressTracking_open_close(t *testing.T) { var bar *UiProgressBar - tracker := bar.TrackProgress("1,", 1, 42, ioutil.NopCloser(nil)) + tracker := bar.TrackProgress("1,", 1, 42, io.NopCloser(nil)) tracker.Close() - tracker = bar.TrackProgress("2,", 1, 42, ioutil.NopCloser(nil)) + tracker = bar.TrackProgress("2,", 1, 42, io.NopCloser(nil)) tracker.Close() } @@ -29,7 +29,7 @@ func TestProgressTracking_multi_open_close(t *testing.T) { for i := 0; i < 100; i++ { g.Go(func() error { - tracker := bar.TrackProgress("file,", 1, 42, ioutil.NopCloser(nil)) + tracker := bar.TrackProgress("file,", 1, 42, io.NopCloser(nil)) return tracker.Close() }) } @@ -46,7 +46,7 @@ func TestProgressTracking_races(t *testing.T) { g.Go(func() error { txt := []byte("foobarbaz dolores") b := bytes.NewReader(txt) - tracker := bar.TrackProgress("file,", 1, 42, ioutil.NopCloser(b)) + tracker := bar.TrackProgress("file,", 1, 42, io.NopCloser(b)) for i := 0; i < 42; i++ { tracker.Read([]byte("i")) diff --git a/packer/testing.go b/packer/testing.go index faa3c58283e..b0ebc04b95f 100644 --- a/packer/testing.go +++ b/packer/testing.go @@ -5,7 +5,7 @@ package packer import ( "bytes" - "io/ioutil" + "io" "testing" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" @@ -40,8 +40,8 @@ func TestUi(t *testing.T) packersdk.Ui { var buf bytes.Buffer return &packersdk.BasicUi{ Reader: &buf, - Writer: ioutil.Discard, - ErrorWriter: ioutil.Discard, + Writer: io.Discard, + ErrorWriter: io.Discard, } } diff --git a/post-processor/checksum/post-processor_test.go b/post-processor/checksum/post-processor_test.go index 62c2f2ae3e1..6a08f029735 100644 --- a/post-processor/checksum/post-processor_test.go +++ b/post-processor/checksum/post-processor_test.go @@ -7,7 +7,7 @@ import ( "bytes" "context" "fmt" - "io/ioutil" + "io" "os" "strings" "testing" @@ -38,7 +38,7 @@ func TestChecksumSHA1(t *testing.T) { if err != nil { t.Errorf("Unable to read checksum file: %s", err) } - if buf, _ := ioutil.ReadAll(f); !bytes.Equal(buf, []byte("d3486ae9136e7856bc42212385ea797094475802\tpackage.txt\n")) { + if buf, _ := io.ReadAll(f); !bytes.Equal(buf, []byte("d3486ae9136e7856bc42212385ea797094475802\tpackage.txt\n")) { t.Errorf("Failed to compute checksum: %s\n%s", buf, "d3486ae9136e7856bc42212385ea797094475802 package.txt") } diff --git a/post-processor/compress/post-processor_test.go b/post-processor/compress/post-processor_test.go index e85b2041062..885388c79e8 100644 --- a/post-processor/compress/post-processor_test.go +++ b/post-processor/compress/post-processor_test.go @@ -9,7 +9,7 @@ import ( "compress/gzip" "context" "fmt" - "io/ioutil" + "io" "os" "strings" "testing" @@ -84,7 +84,7 @@ func TestCompressOptions(t *testing.T) { filename := "package.gz" archive, _ := os.Open(filename) gzipReader, _ := gzip.NewReader(archive) - data, _ := ioutil.ReadAll(gzipReader) + data, _ := io.ReadAll(gzipReader) if string(data) != expectedFileContents { t.Errorf("Expected:\n%s\nFound:\n%s\n", expectedFileContents, data) @@ -115,7 +115,7 @@ func TestCompressInterpolation(t *testing.T) { } gzipReader, _ := gzip.NewReader(archive) - data, _ := ioutil.ReadAll(gzipReader) + data, _ := io.ReadAll(gzipReader) if string(data) != expectedFileContents { t.Errorf("Expected:\n%s\nFound:\n%s\n", expectedFileContents, data) @@ -194,7 +194,7 @@ func TestArchive(t *testing.T) { if err != nil { return nil, err } - return ioutil.ReadAll(bzipReader) + return io.ReadAll(bzipReader) }, "zip": func(archive *os.File) ([]byte, error) { fi, _ := archive.Stat() @@ -206,7 +206,7 @@ func TestArchive(t *testing.T) { if err != nil { return nil, err } - return ioutil.ReadAll(ctt) + return io.ReadAll(ctt) }, "tar": func(archive *os.File) ([]byte, error) { tarReader := tar.NewReader(archive) @@ -214,7 +214,7 @@ func TestArchive(t *testing.T) { if err != nil { return nil, err } - return ioutil.ReadAll(tarReader) + return io.ReadAll(tarReader) }, "tar.gz": func(archive *os.File) ([]byte, error) { gzipReader, err := gzip.NewReader(archive) @@ -226,15 +226,15 @@ func TestArchive(t *testing.T) { if err != nil { return nil, err } - return ioutil.ReadAll(tarReader) + return io.ReadAll(tarReader) }, "gz": func(archive *os.File) ([]byte, error) { gzipReader, _ := gzip.NewReader(archive) - return ioutil.ReadAll(gzipReader) + return io.ReadAll(gzipReader) }, "lz4": func(archive *os.File) ([]byte, error) { lz4Reader := lz4.NewReader(archive) - return ioutil.ReadAll(lz4Reader) + return io.ReadAll(lz4Reader) }, } diff --git a/post-processor/manifest/post-processor.go b/post-processor/manifest/post-processor.go index 5fb90c45577..74f203525d9 100644 --- a/post-processor/manifest/post-processor.go +++ b/post-processor/manifest/post-processor.go @@ -10,7 +10,6 @@ import ( "context" "encoding/json" "fmt" - "io/ioutil" "log" "os" "path/filepath" @@ -143,7 +142,7 @@ func (p *PostProcessor) PostProcess(ctx context.Context, ui packersdk.Ui, source // Read the current manifest file from disk contents := []byte{} - if contents, err = ioutil.ReadFile(p.config.OutputPath); err != nil && !os.IsNotExist(err) { + if contents, err = os.ReadFile(p.config.OutputPath); err != nil && !os.IsNotExist(err) { return source, true, true, fmt.Errorf("Unable to open %s for reading: %s", p.config.OutputPath, err) } @@ -167,7 +166,7 @@ func (p *PostProcessor) PostProcess(ctx context.Context, ui packersdk.Ui, source // Write JSON to disk if out, err := json.MarshalIndent(manifestFile, "", " "); err == nil { - if err = ioutil.WriteFile(p.config.OutputPath, out, 0664); err != nil { + if err = os.WriteFile(p.config.OutputPath, out, 0664); err != nil { return source, true, true, fmt.Errorf("Unable to write %s: %s", p.config.OutputPath, err) } } else { diff --git a/post-processor/shell-local/post-processor_test.go b/post-processor/shell-local/post-processor_test.go index 39fbec25ec3..13121658af2 100644 --- a/post-processor/shell-local/post-processor_test.go +++ b/post-processor/shell-local/post-processor_test.go @@ -4,7 +4,6 @@ package shell_local import ( - "io/ioutil" "os" "runtime" "testing" @@ -95,7 +94,7 @@ func TestPostProcessorPrepare_Script(t *testing.T) { } // Test with a good one - tf, err := ioutil.TempFile("", "packer") + tf, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -163,7 +162,7 @@ func TestPostProcessorPrepare_ScriptAndInline(t *testing.T) { } // Test with both - tf, err := ioutil.TempFile("", "packer") + tf, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -182,7 +181,7 @@ func TestPostProcessorPrepare_ScriptAndScripts(t *testing.T) { raws := testConfig() // Test with both - tf, err := ioutil.TempFile("", "packer") + tf, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -208,7 +207,7 @@ func TestPostProcessorPrepare_Scripts(t *testing.T) { } // Test with a good one - tf, err := ioutil.TempFile("", "packer") + tf, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } diff --git a/provisioner/file/provisioner_test.go b/provisioner/file/provisioner_test.go index 17d55d75d2b..280afa0250a 100644 --- a/provisioner/file/provisioner_test.go +++ b/provisioner/file/provisioner_test.go @@ -6,7 +6,6 @@ package file import ( "bytes" "context" - "io/ioutil" "os" "path/filepath" "regexp" @@ -62,7 +61,7 @@ func TestProvisionerPrepare_InvalidSource(t *testing.T) { func TestProvisionerPrepare_ValidSource(t *testing.T) { var p Provisioner - tf, err := ioutil.TempFile("", "packer") + tf, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -107,7 +106,7 @@ func TestProvisionerPrepare_EmptyDestination(t *testing.T) { func TestProvisionerProvision_SendsFile(t *testing.T) { var p Provisioner - tf, err := ioutil.TempFile("", "packer") + tf, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -195,7 +194,7 @@ func TestProvisionerProvision_SendsContent(t *testing.T) { func TestProvisionerProvision_SendsFileMultipleFiles(t *testing.T) { var p Provisioner - tf1, err := ioutil.TempFile("", "packer") + tf1, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -205,7 +204,7 @@ func TestProvisionerProvision_SendsFileMultipleFiles(t *testing.T) { t.Fatalf("error writing tempfile: %s", err) } - tf2, err := ioutil.TempFile("", "packer") + tf2, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -248,13 +247,13 @@ func TestProvisionerProvision_SendsFileMultipleDirs(t *testing.T) { var p Provisioner // Prepare the first directory - td1, err := ioutil.TempDir("", "packerdir") + td1, err := os.MkdirTemp("", "packerdir") if err != nil { t.Fatalf("error temp folder 1: %s", err) } defer os.Remove(td1) - tf1, err := ioutil.TempFile(td1, "packer") + tf1, err := os.CreateTemp(td1, "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -264,13 +263,13 @@ func TestProvisionerProvision_SendsFileMultipleDirs(t *testing.T) { } // Prepare the second directory - td2, err := ioutil.TempDir("", "packerdir") + td2, err := os.MkdirTemp("", "packerdir") if err != nil { t.Fatalf("error temp folder 1: %s", err) } defer os.Remove(td2) - tf2, err := ioutil.TempFile(td2, "packer") + tf2, err := os.CreateTemp(td2, "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -317,7 +316,7 @@ func TestProvisionerProvision_SendsFileMultipleDirs(t *testing.T) { func TestProvisionerProvision_DownloadsMultipleFilesToFolder(t *testing.T) { var p Provisioner - tf1, err := ioutil.TempFile("", "packer") + tf1, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -327,7 +326,7 @@ func TestProvisionerProvision_DownloadsMultipleFilesToFolder(t *testing.T) { t.Fatalf("error writing tempfile: %s", err) } - tf2, err := ioutil.TempFile("", "packer") + tf2, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -388,7 +387,7 @@ func TestProvisionerProvision_DownloadsMultipleFilesToFolder(t *testing.T) { func TestProvisionerProvision_SendsFileMultipleFilesToFolder(t *testing.T) { var p Provisioner - tf1, err := ioutil.TempFile("", "packer") + tf1, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -398,7 +397,7 @@ func TestProvisionerProvision_SendsFileMultipleFilesToFolder(t *testing.T) { t.Fatalf("error writing tempfile: %s", err) } - tf2, err := ioutil.TempFile("", "packer") + tf2, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -454,12 +453,12 @@ func TestProvisionDownloadMkdirAll(t *testing.T) { {"path/to/dir"}, {"path/to/dir/"}, } - tmpDir, err := ioutil.TempDir("", "packer-file") + tmpDir, err := os.MkdirTemp("", "packer-file") if err != nil { t.Fatalf("error tempdir: %s", err) } defer os.RemoveAll(tmpDir) - tf, err := ioutil.TempFile(tmpDir, "packer") + tf, err := os.CreateTemp(tmpDir, "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } diff --git a/provisioner/powershell/provisioner_acc_test.go b/provisioner/powershell/provisioner_acc_test.go index 8340b2a5a87..8073d011334 100644 --- a/provisioner/powershell/provisioner_acc_test.go +++ b/provisioner/powershell/provisioner_acc_test.go @@ -5,7 +5,7 @@ package powershell_test import ( "fmt" - "io/ioutil" + "io" "os" "os/exec" "path/filepath" @@ -35,7 +35,7 @@ func LoadProvisionerFragment(templateFragmentPath string) (string, error) { } defer fragmentFile.Close() - fragmentString, err := ioutil.ReadAll(fragmentFile) + fragmentString, err := io.ReadAll(fragmentFile) if err != nil { return "", fmt.Errorf("Unable to read %s", fragmentAbsPath) } diff --git a/provisioner/powershell/provisioner_test.go b/provisioner/powershell/provisioner_test.go index 0d8b4ca35cd..024b0585fa2 100644 --- a/provisioner/powershell/provisioner_test.go +++ b/provisioner/powershell/provisioner_test.go @@ -7,7 +7,6 @@ import ( "bytes" "context" "fmt" - "io/ioutil" "os" "regexp" "strings" @@ -35,7 +34,7 @@ func TestProvisionerPrepare_extractScript(t *testing.T) { } // File contents should contain 2 lines concatenated by newlines: foo\nbar - readFile, err := ioutil.ReadFile(file) + readFile, err := os.ReadFile(file) expectedContents := "foo\nbar\n" if err != nil { t.Fatalf("Should not be error: %s", err) @@ -187,7 +186,7 @@ func TestProvisionerPrepare_Script(t *testing.T) { } // Test with a good one - tf, err := ioutil.TempFile("", "packer") + tf, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -214,7 +213,7 @@ func TestProvisionerPrepare_ScriptAndInline(t *testing.T) { } // Test with both - tf, err := ioutil.TempFile("", "packer") + tf, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -234,7 +233,7 @@ func TestProvisionerPrepare_ScriptAndScripts(t *testing.T) { config := testConfig() // Test with both - tf, err := ioutil.TempFile("", "packer") + tf, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -261,7 +260,7 @@ func TestProvisionerPrepare_Scripts(t *testing.T) { } // Test with a good one - tf, err := ioutil.TempFile("", "packer") + tf, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -512,7 +511,7 @@ func TestProvisionerProvision_Inline(t *testing.T) { } func TestProvisionerProvision_Scripts(t *testing.T) { - tempFile, _ := ioutil.TempFile("", "packer") + tempFile, _ := os.CreateTemp("", "packer") defer os.Remove(tempFile.Name()) defer tempFile.Close() @@ -542,7 +541,7 @@ func TestProvisionerProvision_Scripts(t *testing.T) { } func TestProvisionerProvision_ScriptsWithEnvVars(t *testing.T) { - tempFile, _ := ioutil.TempFile("", "packer") + tempFile, _ := os.CreateTemp("", "packer") ui := testUi() defer os.Remove(tempFile.Name()) defer tempFile.Close() @@ -579,7 +578,7 @@ func TestProvisionerProvision_ScriptsWithEnvVars(t *testing.T) { } func TestProvisionerProvision_SkipClean(t *testing.T) { - tempFile, _ := ioutil.TempFile("", "packer") + tempFile, _ := os.CreateTemp("", "packer") defer func() { tempFile.Close() os.Remove(tempFile.Name()) diff --git a/provisioner/shell-local/provisioner_acc_test.go b/provisioner/shell-local/provisioner_acc_test.go index b7b7c051a14..1f1b37a0cb8 100644 --- a/provisioner/shell-local/provisioner_acc_test.go +++ b/provisioner/shell-local/provisioner_acc_test.go @@ -5,7 +5,7 @@ package shell_test import ( "fmt" - "io/ioutil" + "io" "os" "os/exec" "path/filepath" @@ -31,7 +31,7 @@ func loadFile(templateFragmentPath string) (string, error) { } defer fragmentFile.Close() - fragmentString, err := ioutil.ReadAll(fragmentFile) + fragmentString, err := io.ReadAll(fragmentFile) if err != nil { return "", fmt.Errorf("Unable to read %s", fragmentAbsPath) } diff --git a/provisioner/shell/provisioner_acc_test.go b/provisioner/shell/provisioner_acc_test.go index 4eefa19e78a..167456d274a 100644 --- a/provisioner/shell/provisioner_acc_test.go +++ b/provisioner/shell/provisioner_acc_test.go @@ -5,7 +5,7 @@ package shell_test import ( "fmt" - "io/ioutil" + "io" "os" "os/exec" "path/filepath" @@ -31,7 +31,7 @@ func loadFile(templateFragmentPath string) (string, error) { } defer fragmentFile.Close() - fragmentString, err := ioutil.ReadAll(fragmentFile) + fragmentString, err := io.ReadAll(fragmentFile) if err != nil { return "", fmt.Errorf("Unable to read %s", fragmentAbsPath) } diff --git a/provisioner/shell/provisioner_test.go b/provisioner/shell/provisioner_test.go index 5640c92425e..40da9b5ea2b 100644 --- a/provisioner/shell/provisioner_test.go +++ b/provisioner/shell/provisioner_test.go @@ -4,7 +4,6 @@ package shell import ( - "io/ioutil" "os" "regexp" "strings" @@ -123,7 +122,7 @@ func TestProvisionerPrepare_Script(t *testing.T) { } // Test with a good one - tf, err := ioutil.TempFile("", "packer") + tf, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -149,7 +148,7 @@ func TestProvisionerPrepare_ScriptAndInline(t *testing.T) { } // Test with both - tf, err := ioutil.TempFile("", "packer") + tf, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -168,7 +167,7 @@ func TestProvisionerPrepare_ScriptAndScripts(t *testing.T) { config := testConfig() // Test with both - tf, err := ioutil.TempFile("", "packer") + tf, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -194,7 +193,7 @@ func TestProvisionerPrepare_Scripts(t *testing.T) { } // Test with a good one - tf, err := ioutil.TempFile("", "packer") + tf, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } diff --git a/provisioner/windows-shell/provisioner_test.go b/provisioner/windows-shell/provisioner_test.go index 5ef92c64ac0..08990b00ae7 100644 --- a/provisioner/windows-shell/provisioner_test.go +++ b/provisioner/windows-shell/provisioner_test.go @@ -6,7 +6,6 @@ package shell import ( "bytes" "context" - "io/ioutil" "log" "os" "strings" @@ -37,7 +36,7 @@ func TestProvisionerPrepare_extractScript(t *testing.T) { } // File contents should contain 2 lines concatenated by newlines: foo\nbar - readFile, err := ioutil.ReadFile(file) + readFile, err := os.ReadFile(file) if err != nil { t.Fatalf("Should not be error: %s", err) } @@ -102,7 +101,7 @@ func TestProvisionerPrepare_Script(t *testing.T) { } // Test with a good one - tf, err := ioutil.TempFile("", "packer") + tf, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -129,7 +128,7 @@ func TestProvisionerPrepare_ScriptAndInline(t *testing.T) { } // Test with both - tf, err := ioutil.TempFile("", "packer") + tf, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -149,7 +148,7 @@ func TestProvisionerPrepare_ScriptAndScripts(t *testing.T) { config := testConfig() // Test with both - tf, err := ioutil.TempFile("", "packer") + tf, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -176,7 +175,7 @@ func TestProvisionerPrepare_Scripts(t *testing.T) { } // Test with a good one - tf, err := ioutil.TempFile("", "packer") + tf, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -325,7 +324,7 @@ func TestProvisionerProvision_Inline(t *testing.T) { } func TestProvisionerProvision_Scripts(t *testing.T) { - tf, err := ioutil.TempFile("", "packer") + tf, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } @@ -357,7 +356,7 @@ func TestProvisionerProvision_Scripts(t *testing.T) { } func TestProvisionerProvision_ScriptsWithEnvVars(t *testing.T) { - tf, err := ioutil.TempFile("", "packer") + tf, err := os.CreateTemp("", "packer") if err != nil { t.Fatalf("error tempfile: %s", err) } diff --git a/scripts/generate-plugins.go b/scripts/generate-plugins.go index bd303cb29ba..7390fafa070 100755 --- a/scripts/generate-plugins.go +++ b/scripts/generate-plugins.go @@ -12,7 +12,6 @@ import ( "go/ast" "go/parser" "go/token" - "io/ioutil" "log" "os" "path/filepath" @@ -142,7 +141,7 @@ func makeImports(builders, provisioners, postProcessors, Datasources []plugin) s // listDirectories recursively lists directories under the specified path func listDirectories(path string) ([]string, error) { names := []string{} - items, err := ioutil.ReadDir(path) + items, err := os.ReadDir(path) if err != nil { return names, err } From d56db70a577aa7f37e3225e2ae99629231d08128 Mon Sep 17 00:00:00 2001 From: Shengjing Zhu Date: Sun, 30 Jul 2023 19:19:14 +0800 Subject: [PATCH 186/381] Bump github.com/pierrec/lz4 to v4.1.18 --- go.mod | 3 ++- go.sum | 2 ++ post-processor/compress/benchmark.go | 4 +-- post-processor/compress/post-processor.go | 25 ++++++++++++++++--- .../compress/post-processor_test.go | 2 +- 5 files changed, 29 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index ab2d8edd000..f0b2dcbaa54 100644 --- a/go.mod +++ b/go.mod @@ -38,7 +38,7 @@ require ( github.com/mitchellh/panicwrap v1.0.0 github.com/mitchellh/prefixedio v0.0.0-20151214002211-6e6954073784 github.com/packer-community/winrmcp v0.0.0-20180921211025-c76d91c1e7db // indirect - github.com/pierrec/lz4 v2.6.1+incompatible + github.com/pierrec/lz4 v2.6.1+incompatible // indirect github.com/pkg/sftp v1.13.2 // indirect github.com/posener/complete v1.2.3 github.com/stretchr/testify v1.8.2 @@ -70,6 +70,7 @@ require ( github.com/hashicorp/packer-plugin-vmware v1.0.7 github.com/hashicorp/packer-plugin-vsphere v1.1.1 github.com/oklog/ulid v1.3.1 + github.com/pierrec/lz4/v4 v4.1.18 github.com/shirou/gopsutil/v3 v3.23.4 ) diff --git a/go.sum b/go.sum index 81a0347bf5c..34f7c200dc5 100644 --- a/go.sum +++ b/go.sum @@ -643,6 +643,8 @@ github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi github.com/pierrec/lz4 v2.5.2+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= +github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= diff --git a/post-processor/compress/benchmark.go b/post-processor/compress/benchmark.go index 5d06b7d6448..e315f3bcf2d 100644 --- a/post-processor/compress/benchmark.go +++ b/post-processor/compress/benchmark.go @@ -18,7 +18,7 @@ import ( "github.com/biogo/hts/bgzf" "github.com/klauspost/pgzip" - "github.com/pierrec/lz4" + "github.com/pierrec/lz4/v4" "github.com/ulikunitz/xz" ) @@ -190,7 +190,7 @@ func (c *Compressor) BenchmarkPGZIPReader(b *testing.B) { func (c *Compressor) BenchmarkLZ4Writer(b *testing.B) { cw := lz4.NewWriter(c.w) // cw.Header.HighCompression = true - cw.Header.NoChecksum = true + cw.Apply(lz4.ChecksumOption(false)) b.ResetTimer() _, err := io.Copy(cw, c.r) diff --git a/post-processor/compress/post-processor.go b/post-processor/compress/post-processor.go index 88b345a97d8..07a74e813d0 100644 --- a/post-processor/compress/post-processor.go +++ b/post-processor/compress/post-processor.go @@ -24,7 +24,7 @@ import ( "github.com/hashicorp/packer-plugin-sdk/template/config" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" "github.com/klauspost/pgzip" - "github.com/pierrec/lz4" + "github.com/pierrec/lz4/v4" "github.com/ulikunitz/xz" ) @@ -333,8 +333,27 @@ func makeBZIP2Writer(output io.Writer, compressionLevel int) (io.WriteCloser, er func makeLZ4Writer(output io.WriteCloser, compressionLevel int) (io.WriteCloser, error) { lzwriter := lz4.NewWriter(output) - if compressionLevel > 0 { - lzwriter.Header.CompressionLevel = compressionLevel + if compressionLevel < 0 { + return lzwriter, nil + } + levels := map[int]lz4.CompressionLevel{ + 0: lz4.Fast, + 1: lz4.Level1, + 2: lz4.Level2, + 3: lz4.Level3, + 4: lz4.Level4, + 5: lz4.Level5, + 6: lz4.Level6, + 7: lz4.Level7, + 8: lz4.Level8, + 9: lz4.Level9, + } + level, ok := levels[compressionLevel] + if !ok { + return nil, ErrInvalidCompressionLevel + } + if err := lzwriter.Apply(lz4.CompressionLevelOption(level)); err != nil { + return nil, err } return lzwriter, nil } diff --git a/post-processor/compress/post-processor_test.go b/post-processor/compress/post-processor_test.go index 885388c79e8..00b8a1377ca 100644 --- a/post-processor/compress/post-processor_test.go +++ b/post-processor/compress/post-processor_test.go @@ -18,7 +18,7 @@ import ( packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template" "github.com/hashicorp/packer/builder/file" - "github.com/pierrec/lz4" + "github.com/pierrec/lz4/v4" ) func TestDetectFilename(t *testing.T) { From c0e594738be27695fba13f2ad817554497b11885 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 27 Sep 2023 10:47:34 -0400 Subject: [PATCH 187/381] init: warn if no requirements specified When users call `packer init' on a template that does not specify a `required_plugin' block, the command succeeds but does nothing, which is not helpful for users that may expect their plugins to install. To remedy that problem, we now output a message like what `packer plugins required' does on templates without such a block, so that users have an idea of what to change in order to get the command to work. --- command/init.go | 8 +++++++ command/init_test.go | 53 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/command/init.go b/command/init.go index ad9a7bcdd98..709e8ab0fdf 100644 --- a/command/init.go +++ b/command/init.go @@ -66,6 +66,14 @@ func (c *InitCommand) RunContext(buildCtx context.Context, cla *InitArgs) int { return ret } + if len(reqs) == 0 { + c.Ui.Message(` +No plugins requirement found, make sure you reference a Packer config +containing a packer.required_plugins block. See +https://www.packer.io/docs/templates/hcl_templates/blocks/packer +for more info.`) + } + opts := plugingetter.ListInstallationsOptions{ FromFolders: c.Meta.CoreConfig.Components.PluginConfig.KnownPluginFolders, BinaryInstallationOptions: plugingetter.BinaryInstallationOptions{ diff --git a/command/init_test.go b/command/init_test.go index 07246d50081..57ab1781d04 100644 --- a/command/init_test.go +++ b/command/init_test.go @@ -13,6 +13,7 @@ import ( "path/filepath" "runtime" "sort" + "strings" "testing" "github.com/google/go-cmp/cmp" @@ -414,3 +415,55 @@ func (opts initTestGoGetPlugin) fn(t *testing.T, _ testCaseInit) { t.Fatalf("get: %v", err) } } + +// TestInitCmd aims to test the init command, with output validation +func TestInitCmd(t *testing.T) { + tests := []struct { + name string + args []string + expectedCode int + outputCheck func(string, string) error + }{ + { + name: "Ensure init warns on template without required_plugin blocks", + args: []string{ + testFixture("hcl", "build-var-in-pp.pkr.hcl"), + }, + expectedCode: 0, + outputCheck: func(stdout, stderr string) error { + if !strings.Contains(stdout, "No plugins requirement found") { + return fmt.Errorf("command should warn about plugin requirements not found, but did not") + } + return nil + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + c := &InitCommand{ + Meta: TestMetaFile(t), + } + + exitCode := c.Run(tt.args) + if exitCode != tt.expectedCode { + t.Errorf("process exit code mismatch: expected %d, got %d", + tt.expectedCode, + exitCode) + } + + out, stderr := GetStdoutAndErrFromTestMeta(t, c.Meta) + err := tt.outputCheck(out, stderr) + if err != nil { + if len(out) != 0 { + t.Logf("command stdout: %q", out) + } + + if len(stderr) != 0 { + t.Logf("command stderr: %q", stderr) + } + t.Error(err.Error()) + } + }) + } +} From 8490333f557e8a23f866afef93995f91e5d0faea Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 2 Oct 2023 06:50:04 -0400 Subject: [PATCH 188/381] Fix broken acctest for Amazon data source This change updates the Ubuntu image being from 16.04 to something more recent. --- .../plugin/test-fixtures/basic-amazon-ami-datasource.pkr.hcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/acctest/plugin/test-fixtures/basic-amazon-ami-datasource.pkr.hcl b/acctest/plugin/test-fixtures/basic-amazon-ami-datasource.pkr.hcl index b3c4696024d..7ff2d3127da 100644 --- a/acctest/plugin/test-fixtures/basic-amazon-ami-datasource.pkr.hcl +++ b/acctest/plugin/test-fixtures/basic-amazon-ami-datasource.pkr.hcl @@ -9,7 +9,7 @@ packer { data "amazon-ami" "test" { filters = { - name = "ubuntu/images/*ubuntu-xenial-16.04-amd64-server-*" + name = "ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-*" root-device-type = "ebs" virtualization-type = "hvm" } From 8dcc6b9fd9af8d4f47a758fb18324858cdfd9996 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 3 Oct 2023 10:32:42 -0400 Subject: [PATCH 189/381] Bump Go tooling version to 1.20.8 --- .go-version | 2 +- go | 0 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 go diff --git a/.go-version b/.go-version index 8909929f6e7..95393fc7d4d 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.20.7 +1.20.8 diff --git a/go b/go new file mode 100644 index 00000000000..e69de29bb2d From 8438d81d4daee583e24e34819982bb89248dc211 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Thu, 24 Aug 2023 15:29:11 -0400 Subject: [PATCH 190/381] hcl2template: remove unused shouldContinue bool Not sure why this was defined and returned, but the value was set, but never used, as such this is not useful to keep in the code, so let's simplify this now. --- hcl2template/types.packer_config.go | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/hcl2template/types.packer_config.go b/hcl2template/types.packer_config.go index 819107e86b3..9ef8de242e4 100644 --- a/hcl2template/types.packer_config.go +++ b/hcl2template/types.packer_config.go @@ -380,7 +380,7 @@ func (cfg *PackerConfig) evaluateDatasources(skipExecution bool) hcl.Diagnostics // Now that most of our data sources have been started and executed, we can // try to execute the ones that depend on other data sources. for ref := range dependencies { - _, moreDiags, _ := cfg.recursivelyEvaluateDatasources(ref, dependencies, skipExecution, 0) + _, moreDiags := cfg.recursivelyEvaluateDatasources(ref, dependencies, skipExecution, 0) // Deduplicate diagnostics to prevent recursion messes. cleanedDiags := map[string]*hcl.Diagnostic{} for _, diag := range moreDiags { @@ -395,10 +395,9 @@ func (cfg *PackerConfig) evaluateDatasources(skipExecution bool) hcl.Diagnostics return diags } -func (cfg *PackerConfig) recursivelyEvaluateDatasources(ref DatasourceRef, dependencies map[DatasourceRef][]DatasourceRef, skipExecution bool, depth int) (map[DatasourceRef][]DatasourceRef, hcl.Diagnostics, bool) { +func (cfg *PackerConfig) recursivelyEvaluateDatasources(ref DatasourceRef, dependencies map[DatasourceRef][]DatasourceRef, skipExecution bool, depth int) (map[DatasourceRef][]DatasourceRef, hcl.Diagnostics) { var diags hcl.Diagnostics var moreDiags hcl.Diagnostics - shouldContinue := true if depth > 10 { // Add a comment about recursion. @@ -410,7 +409,7 @@ func (cfg *PackerConfig) recursivelyEvaluateDatasources(ref DatasourceRef, depen "other data sources, or your data sources have a cyclic " + "dependency. Please simplify your config to continue. ", }) - return dependencies, diags, false + return dependencies, diags } ds := cfg.Datasources[ref] @@ -421,11 +420,11 @@ func (cfg *PackerConfig) recursivelyEvaluateDatasources(ref DatasourceRef, depen // If this dependency is not in the map, it means we've already // launched and executed this datasource. Otherwise, it means // we still need to run it. RECURSION TIME!! - dependencies, moreDiags, shouldContinue = cfg.recursivelyEvaluateDatasources(dep, dependencies, skipExecution, depth) + dependencies, moreDiags = cfg.recursivelyEvaluateDatasources(dep, dependencies, skipExecution, depth) diags = append(diags, moreDiags...) if moreDiags.HasErrors() { diags = append(diags, moreDiags...) - return dependencies, diags, shouldContinue + return dependencies, diags } } } @@ -435,14 +434,14 @@ func (cfg *PackerConfig) recursivelyEvaluateDatasources(ref DatasourceRef, depen datasource, startDiags := cfg.startDatasource(cfg.parser.PluginConfig.DataSources, ref, true) if startDiags.HasErrors() { diags = append(diags, startDiags...) - return dependencies, diags, shouldContinue + return dependencies, diags } if skipExecution { placeholderValue := cty.UnknownVal(hcldec.ImpliedType(datasource.OutputSpec())) ds.value = placeholderValue cfg.Datasources[ref] = ds - return dependencies, diags, shouldContinue + return dependencies, diags } opts, _ := decodeHCL2Spec(ds.block.Body, cfg.EvalContext(DatasourceContext, nil), datasource) @@ -455,14 +454,14 @@ func (cfg *PackerConfig) recursivelyEvaluateDatasources(ref DatasourceRef, depen Subject: &cfg.Datasources[ref].block.DefRange, Severity: hcl.DiagError, }) - return dependencies, diags, shouldContinue + return dependencies, diags } ds.value = realValue cfg.Datasources[ref] = ds // remove ref from the dependencies map. delete(dependencies, ref) - return dependencies, diags, shouldContinue + return dependencies, diags } // getCoreBuildProvisioners takes a list of provisioner block, starts according From 2a6ccaccab0456de9f8aa88405c56690bfff3338 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Thu, 24 Aug 2023 16:09:25 -0400 Subject: [PATCH 191/381] hcl2template: simplify datasource evaluation Since datasources are recursively evaluated depending on their dependencies, we don't need to pre-execute those that depend on nothing, as the recursive traversal of the datasources will take care of that for us. --- hcl2template/types.packer_config.go | 46 ++--------------------------- 1 file changed, 3 insertions(+), 43 deletions(-) diff --git a/hcl2template/types.packer_config.go b/hcl2template/types.packer_config.go index 9ef8de242e4..39283e59075 100644 --- a/hcl2template/types.packer_config.go +++ b/hcl2template/types.packer_config.go @@ -311,8 +311,8 @@ func (cfg *PackerConfig) evaluateDatasources(skipExecution bool) hcl.Diagnostics // source in any of its input expressions. If so, skip evaluating it for // now, and add it to a list of datasources to evaluate again, later, // with the datasources in its context. - // This is essentially creating a very primitive DAG just for data - // source interdependencies. + dependencies[ref] = []DatasourceRef{} + block := ds.block body := block.Body attrs, _ := body.JustAttributes() @@ -330,51 +330,11 @@ func (cfg *PackerConfig) evaluateDatasources(skipExecution bool) hcl.Diagnostics Name: v[2].(hcl.TraverseAttr).Name, } log.Printf("The data source %#v depends on datasource %#v", ref, dependsOn) - if dependencies[ref] != nil { - dependencies[ref] = append(dependencies[ref], dependsOn) - } else { - dependencies[ref] = []DatasourceRef{dependsOn} - } + dependencies[ref] = append(dependencies[ref], dependsOn) skipFirstEval = true } } } - - // Now we have a list of data sources that depend on other data sources. - // Don't evaluate these; only evaluate data sources that we didn't - // mark as having dependencies. - if skipFirstEval { - continue - } - - datasource, startDiags := cfg.startDatasource(cfg.parser.PluginConfig.DataSources, ref, false) - diags = append(diags, startDiags...) - if diags.HasErrors() { - continue - } - - if skipExecution { - placeholderValue := cty.UnknownVal(hcldec.ImpliedType(datasource.OutputSpec())) - ds.value = placeholderValue - cfg.Datasources[ref] = ds - continue - } - - dsOpts, _ := decodeHCL2Spec(body, cfg.EvalContext(DatasourceContext, nil), datasource) - sp := packer.CheckpointReporter.AddSpan(ref.Type, "datasource", dsOpts) - realValue, err := datasource.Execute() - sp.End(err) - if err != nil { - diags = append(diags, &hcl.Diagnostic{ - Summary: err.Error(), - Subject: &cfg.Datasources[ref].block.DefRange, - Severity: hcl.DiagError, - }) - continue - } - - ds.value = realValue - cfg.Datasources[ref] = ds } // Now that most of our data sources have been started and executed, we can From 14b6ad10fe6a8aa1d69bcf676f32eb9c2af3210d Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Thu, 24 Aug 2023 16:10:51 -0400 Subject: [PATCH 192/381] hcl2template: report localtion for cycle detection When a datasource fails to be evaluated because a cycle has been detected, we point out one of the links of the chain now so that users have a better idea of what to look at. --- hcl2template/types.packer_config.go | 1 + 1 file changed, 1 insertion(+) diff --git a/hcl2template/types.packer_config.go b/hcl2template/types.packer_config.go index 39283e59075..c9beb67bd0a 100644 --- a/hcl2template/types.packer_config.go +++ b/hcl2template/types.packer_config.go @@ -368,6 +368,7 @@ func (cfg *PackerConfig) recursivelyEvaluateDatasources(ref DatasourceRef, depen "sources. Either your data source depends on more than ten " + "other data sources, or your data sources have a cyclic " + "dependency. Please simplify your config to continue. ", + Subject: &(cfg.Datasources[ref]).block.DefRange, }) return dependencies, diags } From d9259d6d12873360755f699d911ec8d0d3f680f9 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Thu, 24 Aug 2023 16:11:55 -0400 Subject: [PATCH 193/381] hcl2template: extract attr filter code from ds Datasources use their attribute's expressions to determine whether or not they depend on another datasource, in order to get the list of dependencies and execute them before executing a datasource. This code may be useful later on for figuring out the dependencies for any block, so we move this code to the utils.go file, and use this for datasources. --- hcl2template/types.packer_config.go | 31 ++++++++++------------------- hcl2template/utils.go | 20 +++++++++++++++++++ 2 files changed, 30 insertions(+), 21 deletions(-) diff --git a/hcl2template/types.packer_config.go b/hcl2template/types.packer_config.go index c9beb67bd0a..c344aa7b0b2 100644 --- a/hcl2template/types.packer_config.go +++ b/hcl2template/types.packer_config.go @@ -5,7 +5,6 @@ package hcl2template import ( "fmt" - "log" "sort" "strings" @@ -313,27 +312,17 @@ func (cfg *PackerConfig) evaluateDatasources(skipExecution bool) hcl.Diagnostics // with the datasources in its context. dependencies[ref] = []DatasourceRef{} - block := ds.block - body := block.Body - attrs, _ := body.JustAttributes() - - skipFirstEval := false - for _, attr := range attrs { - vars := attr.Expr.Variables() - for _, v := range vars { - // check whether the variable is a data source - if v.RootName() == "data" { - // construct, backwards, the data source type and name we - // need to evaluate before this one can be evaluated. - dependsOn := DatasourceRef{ - Type: v[1].(hcl.TraverseAttr).Name, - Name: v[2].(hcl.TraverseAttr).Name, - } - log.Printf("The data source %#v depends on datasource %#v", ref, dependsOn) - dependencies[ref] = append(dependencies[ref], dependsOn) - skipFirstEval = true - } + // Note: when looking at the expressions, we only need to care about + // attributes, as HCL2 expressions are not allowed in a block's labels. + vars := GetVarsByType(ds.block, "data") + for _, v := range vars { + // construct, backwards, the data source type and name we + // need to evaluate before this one can be evaluated. + dependsOn := DatasourceRef{ + Type: v[1].(hcl.TraverseAttr).Name, + Name: v[2].(hcl.TraverseAttr).Name, } + dependencies[ref] = append(dependencies[ref], dependsOn) } } diff --git a/hcl2template/utils.go b/hcl2template/utils.go index 98546a95456..a542a2467ac 100644 --- a/hcl2template/utils.go +++ b/hcl2template/utils.go @@ -186,3 +186,23 @@ func ConvertPluginConfigValueToHCLValue(v interface{}) (cty.Value, error) { } return buildValue, nil } + +func GetVarsByType(block *hcl.Block, topLevelLabels ...string) []hcl.Traversal { + attributes, _ := block.Body.JustAttributes() + + var vars []hcl.Traversal + + for _, attr := range attributes { + for _, variable := range attr.Expr.Variables() { + rootLabel := variable.RootName() + for _, label := range topLevelLabels { + if label == rootLabel { + vars = append(vars, variable) + break + } + } + } + } + + return vars +} From 51ec78622d3edace2a5ca174b4bcd690b0c8dae3 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 25 Aug 2023 14:55:26 -0400 Subject: [PATCH 194/381] hcl2template: simplify startDatasource function --- hcl2template/types.datasource.go | 17 +++++++++-------- hcl2template/types.packer_config.go | 2 +- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/hcl2template/types.datasource.go b/hcl2template/types.datasource.go index 348d06f452c..23bc7c5900f 100644 --- a/hcl2template/types.datasource.go +++ b/hcl2template/types.datasource.go @@ -10,7 +10,6 @@ import ( "github.com/hashicorp/hcl/v2/hclsyntax" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" hcl2shim "github.com/hashicorp/packer/hcl2template/shim" - "github.com/hashicorp/packer/packer" "github.com/zclconf/go-cty/cty" ) @@ -65,13 +64,15 @@ func (ds *Datasources) Values() (map[string]cty.Value, hcl.Diagnostics) { return res, diags } -func (cfg *PackerConfig) startDatasource(dataSourceStore packer.DatasourceStore, ref DatasourceRef, secondaryEvaluation bool) (packersdk.Datasource, hcl.Diagnostics) { +func (cfg *PackerConfig) startDatasource(ds DatasourceBlock) (packersdk.Datasource, hcl.Diagnostics) { var diags hcl.Diagnostics - block := cfg.Datasources[ref].block + block := ds.block + + dataSourceStore := cfg.parser.PluginConfig.DataSources if dataSourceStore == nil { diags = append(diags, &hcl.Diagnostic{ - Summary: "Unknown " + dataSourceLabel + " type " + ref.Type, + Summary: "Unknown " + dataSourceLabel + " type " + ds.Type, Subject: block.LabelRanges[0].Ptr(), Detail: "packer does not currently know any data source.", Severity: hcl.DiagError, @@ -79,9 +80,9 @@ func (cfg *PackerConfig) startDatasource(dataSourceStore packer.DatasourceStore, return nil, diags } - if !dataSourceStore.Has(ref.Type) { + if !dataSourceStore.Has(ds.Type) { diags = append(diags, &hcl.Diagnostic{ - Summary: "Unknown " + dataSourceLabel + " type " + ref.Type, + Summary: "Unknown " + dataSourceLabel + " type " + ds.Type, Subject: block.LabelRanges[0].Ptr(), Detail: fmt.Sprintf("known data sources: %v", dataSourceStore.List()), Severity: hcl.DiagError, @@ -89,7 +90,7 @@ func (cfg *PackerConfig) startDatasource(dataSourceStore packer.DatasourceStore, return nil, diags } - datasource, err := dataSourceStore.Start(ref.Type) + datasource, err := dataSourceStore.Start(ds.Type) if err != nil { diags = append(diags, &hcl.Diagnostic{ Summary: err.Error(), @@ -99,7 +100,7 @@ func (cfg *PackerConfig) startDatasource(dataSourceStore packer.DatasourceStore, } if datasource == nil { diags = append(diags, &hcl.Diagnostic{ - Summary: fmt.Sprintf("failed to start datasource plugin %q.%q", ref.Type, ref.Name), + Summary: fmt.Sprintf("failed to start datasource plugin %q.%q", ds.Type, ds.Name), Subject: &block.DefRange, Severity: hcl.DiagError, }) diff --git a/hcl2template/types.packer_config.go b/hcl2template/types.packer_config.go index c344aa7b0b2..10963226160 100644 --- a/hcl2template/types.packer_config.go +++ b/hcl2template/types.packer_config.go @@ -381,7 +381,7 @@ func (cfg *PackerConfig) recursivelyEvaluateDatasources(ref DatasourceRef, depen // If we've gotten here, then it means ref doesn't seem to have any further // dependencies we need to evaluate first. Evaluate it, with the cfg's full // data source context. - datasource, startDiags := cfg.startDatasource(cfg.parser.PluginConfig.DataSources, ref, true) + datasource, startDiags := cfg.startDatasource(ds) if startDiags.HasErrors() { diags = append(diags, startDiags...) return dependencies, diags From 434a1637f85be46c1e6ee585d9d45be7531a5d8b Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 25 Aug 2023 17:00:03 -0400 Subject: [PATCH 195/381] hcl2template: fix func to get vars from a config The previous implementation of the GetVarsByType function worked only on top-level attributes, ignoring the nested blocks in the structure. This implies that if a datasource depends on another through an expression within a nested block, we may not execute it first, and then executing this datasource before its dependent is possible, resulting in an error in the end. This commit is an attempt at making this more reliable for HCL configs, but only works on configs lifted from HCL files for now. We need to make this more reliable for later iterations. --- hcl2template/utils.go | 52 ++++++++++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 13 deletions(-) diff --git a/hcl2template/utils.go b/hcl2template/utils.go index a542a2467ac..ce9486ed676 100644 --- a/hcl2template/utils.go +++ b/hcl2template/utils.go @@ -11,6 +11,7 @@ import ( "github.com/gobwas/glob" "github.com/hashicorp/hcl/v2" + "github.com/hashicorp/hcl/v2/hclsyntax" "github.com/hashicorp/packer/hcl2template/repl" hcl2shim "github.com/hashicorp/packer/hcl2template/shim" "github.com/zclconf/go-cty/cty" @@ -187,22 +188,47 @@ func ConvertPluginConfigValueToHCLValue(v interface{}) (cty.Value, error) { return buildValue, nil } +// GetVarsByType walks through a hcl body, and gathers all the Traversals that +// have a root type matching one of the specified top-level labels. +// +// This will only work on finite, expanded, HCL bodies. func GetVarsByType(block *hcl.Block, topLevelLabels ...string) []hcl.Traversal { - attributes, _ := block.Body.JustAttributes() - - var vars []hcl.Traversal - - for _, attr := range attributes { - for _, variable := range attr.Expr.Variables() { - rootLabel := variable.RootName() - for _, label := range topLevelLabels { - if label == rootLabel { - vars = append(vars, variable) - break - } + var travs []hcl.Traversal + + switch body := block.Body.(type) { + case *hclsyntax.Body: + travs = getVarsByTypeForHCLSyntaxBody(body) + default: + attrs, _ := body.JustAttributes() + for _, attr := range attrs { + travs = append(travs, attr.Expr.Variables()...) + } + } + + var rets []hcl.Traversal + for _, t := range travs { + varRootname := t.RootName() + for _, lbl := range topLevelLabels { + if varRootname == lbl { + rets = append(rets, t) + break } } } - return vars + return rets +} + +func getVarsByTypeForHCLSyntaxBody(body *hclsyntax.Body) []hcl.Traversal { + var rets []hcl.Traversal + + for _, attr := range body.Attributes { + rets = append(rets, attr.Expr.Variables()...) + } + + for _, block := range body.Blocks { + rets = append(rets, getVarsByTypeForHCLSyntaxBody(block.Body)...) + } + + return rets } From a1722abf073a34e0b0aa47fa4ade0d2fc3f6d76f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Wed, 26 Jul 2023 23:29:26 +0200 Subject: [PATCH 196/381] website: Add community maintained IPSW data source Packer plugin --- website/data/plugins-manifest.json | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/website/data/plugins-manifest.json b/website/data/plugins-manifest.json index 63d9d26998b..5a3c0034ad6 100644 --- a/website/data/plugins-manifest.json +++ b/website/data/plugins-manifest.json @@ -37,6 +37,14 @@ "pluginTier": "verified", "isHcpPackerReady": false }, + { + "title": "IPSW", + "path": "ipsw", + "repo": "torarnv/packer-plugin-ipsw", + "version": "latest", + "sourceBranch": "main", + "pluginTier": "community" + }, { "title": "Kamatera", "path": "kamatera", From 020f18e37f7e8e7d4bcd665d419ed365cc8b3347 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 6 Oct 2023 10:48:31 -0400 Subject: [PATCH 197/381] command: remove unused FlagSetFlags enum The enumeration for FlagSetFlags, which presumably was added when the Meta structure was introduced, aims to pre-populate the flagset for a subcommand with a series of arguments. However, despite it being documented, it is actually not used, and therefore can safely be removed from the codebase. --- command/build.go | 2 +- command/console.go | 2 +- command/fix.go | 2 +- command/fmt.go | 2 +- command/hcl2_upgrade.go | 2 +- command/init.go | 2 +- command/inspect.go | 2 +- command/meta.go | 17 ++--------------- command/plugins_required.go | 2 +- command/validate.go | 2 +- 10 files changed, 11 insertions(+), 24 deletions(-) diff --git a/command/build.go b/command/build.go index c77687c3586..94361807407 100644 --- a/command/build.go +++ b/command/build.go @@ -43,7 +43,7 @@ func (c *BuildCommand) Run(args []string) int { func (c *BuildCommand) ParseArgs(args []string) (*BuildArgs, int) { var cfg BuildArgs - flags := c.Meta.FlagSet("build", FlagSetBuildFilter|FlagSetVars) + flags := c.Meta.FlagSet("build") flags.Usage = func() { c.Ui.Say(c.Help()) } cfg.AddFlagSets(flags) if err := flags.Parse(args); err != nil { diff --git a/command/console.go b/command/console.go index f942ec4bd4f..da24a06150e 100644 --- a/command/console.go +++ b/command/console.go @@ -43,7 +43,7 @@ func (c *ConsoleCommand) Run(args []string) int { func (c *ConsoleCommand) ParseArgs(args []string) (*ConsoleArgs, int) { var cfg ConsoleArgs - flags := c.Meta.FlagSet("console", FlagSetVars) + flags := c.Meta.FlagSet("console") flags.Usage = func() { c.Ui.Say(c.Help()) } cfg.AddFlagSets(flags) if err := flags.Parse(args); err != nil { diff --git a/command/fix.go b/command/fix.go index 708be59717d..07bc8021e80 100644 --- a/command/fix.go +++ b/command/fix.go @@ -36,7 +36,7 @@ func (c *FixCommand) Run(args []string) int { func (c *FixCommand) ParseArgs(args []string) (*FixArgs, int) { var cfg FixArgs - flags := c.Meta.FlagSet("fix", FlagSetNone) + flags := c.Meta.FlagSet("fix") flags.Usage = func() { c.Ui.Say(c.Help()) } cfg.AddFlagSets(flags) if err := flags.Parse(args); err != nil { diff --git a/command/fmt.go b/command/fmt.go index 095a6fc8c69..3a70bcf187d 100644 --- a/command/fmt.go +++ b/command/fmt.go @@ -28,7 +28,7 @@ func (c *FormatCommand) Run(args []string) int { func (c *FormatCommand) ParseArgs(args []string) (*FormatArgs, int) { var cfg FormatArgs - flags := c.Meta.FlagSet("format", FlagSetNone) + flags := c.Meta.FlagSet("format") flags.Usage = func() { c.Ui.Say(c.Help()) } cfg.AddFlagSets(flags) if err := flags.Parse(args); err != nil { diff --git a/command/hcl2_upgrade.go b/command/hcl2_upgrade.go index 7802d409875..8295e4e8ae0 100644 --- a/command/hcl2_upgrade.go +++ b/command/hcl2_upgrade.go @@ -47,7 +47,7 @@ func (c *HCL2UpgradeCommand) Run(args []string) int { func (c *HCL2UpgradeCommand) ParseArgs(args []string) (*HCL2UpgradeArgs, int) { var cfg HCL2UpgradeArgs - flags := c.Meta.FlagSet("hcl2_upgrade", FlagSetNone) + flags := c.Meta.FlagSet("hcl2_upgrade") flags.Usage = func() { c.Ui.Say(c.Help()) } cfg.AddFlagSets(flags) if err := flags.Parse(args); err != nil { diff --git a/command/init.go b/command/init.go index 709e8ab0fdf..71332d57d25 100644 --- a/command/init.go +++ b/command/init.go @@ -37,7 +37,7 @@ func (c *InitCommand) Run(args []string) int { func (c *InitCommand) ParseArgs(args []string) (*InitArgs, int) { var cfg InitArgs - flags := c.Meta.FlagSet("init", 0) + flags := c.Meta.FlagSet("init") flags.Usage = func() { c.Ui.Say(c.Help()) } cfg.AddFlagSets(flags) if err := flags.Parse(args); err != nil { diff --git a/command/inspect.go b/command/inspect.go index 7a77ab76bb8..7e5ed316650 100644 --- a/command/inspect.go +++ b/command/inspect.go @@ -28,7 +28,7 @@ func (c *InspectCommand) Run(args []string) int { func (c *InspectCommand) ParseArgs(args []string) (*InspectArgs, int) { var cfg InspectArgs - flags := c.Meta.FlagSet("inspect", FlagSetVars) + flags := c.Meta.FlagSet("inspect") flags.Usage = func() { c.Ui.Say(c.Help()) } cfg.AddFlagSets(flags) if err := flags.Parse(args); err != nil { diff --git a/command/meta.go b/command/meta.go index 1989027499b..87ed70b906b 100644 --- a/command/meta.go +++ b/command/meta.go @@ -22,16 +22,6 @@ import ( "github.com/hashicorp/packer/version" ) -// FlagSetFlags is an enum to define what flags are present in the -// default FlagSet returned by Meta.FlagSet -type FlagSetFlags uint - -const ( - FlagSetNone FlagSetFlags = 0 - FlagSetBuildFilter FlagSetFlags = 1 << iota - FlagSetVars -) - // Meta contains the meta-options and functionality that nearly every // Packer command inherits. type Meta struct { @@ -72,11 +62,8 @@ func (m *Meta) Core(tpl *template.Template, cla *MetaArgs) (*packer.Core, error) return core, nil } -// FlagSet returns a FlagSet with the common flags that every -// command implements. The exact behavior of FlagSet can be configured -// using the flags as the second parameter, for example to disable -// build settings on the commands that don't handle builds. -func (m *Meta) FlagSet(n string, _ FlagSetFlags) *flag.FlagSet { +// FlagSet returns a FlagSet with Packer SDK Ui support built-in +func (m *Meta) FlagSet(n string) *flag.FlagSet { f := flag.NewFlagSet(n, flag.ContinueOnError) // Create an io.Writer that writes to our Ui properly for errors. diff --git a/command/plugins_required.go b/command/plugins_required.go index 04f86b3628c..7776b19210b 100644 --- a/command/plugins_required.go +++ b/command/plugins_required.go @@ -54,7 +54,7 @@ func (c *PluginsRequiredCommand) Run(args []string) int { func (c *PluginsRequiredCommand) ParseArgs(args []string) (*PluginsRequiredArgs, int) { var cfg PluginsRequiredArgs - flags := c.Meta.FlagSet("plugins required", 0) + flags := c.Meta.FlagSet("plugins required") flags.Usage = func() { c.Ui.Say(c.Help()) } cfg.AddFlagSets(flags) if err := flags.Parse(args); err != nil { diff --git a/command/validate.go b/command/validate.go index 60199bdbf71..5e40a5f9530 100644 --- a/command/validate.go +++ b/command/validate.go @@ -31,7 +31,7 @@ func (c *ValidateCommand) Run(args []string) int { func (c *ValidateCommand) ParseArgs(args []string) (*ValidateArgs, int) { var cfg ValidateArgs - flags := c.Meta.FlagSet("validate", FlagSetBuildFilter|FlagSetVars) + flags := c.Meta.FlagSet("validate") flags.Usage = func() { c.Ui.Say(c.Help()) } cfg.AddFlagSets(flags) if err := flags.Parse(args); err != nil { From 0e5776a9afdd0892a1bc063b282cd20423edec80 Mon Sep 17 00:00:00 2001 From: Jamie Finnigan Date: Fri, 20 Oct 2023 15:01:42 -0700 Subject: [PATCH 198/381] build with Go 1.20.10 --- .go-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.go-version b/.go-version index 95393fc7d4d..acdfc7930c8 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.20.8 +1.20.10 From 193f5e1f60d115576834a9e802b43a9fb8f38895 Mon Sep 17 00:00:00 2001 From: Jamie Finnigan Date: Fri, 20 Oct 2023 15:02:04 -0700 Subject: [PATCH 199/381] go get -u golang.org/x/net && go mod tidy --- go.mod | 10 +++++----- go.sum | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index f0b2dcbaa54..c6b9dcc6823 100644 --- a/go.mod +++ b/go.mod @@ -45,14 +45,14 @@ require ( github.com/ulikunitz/xz v0.5.10 github.com/zclconf/go-cty v1.10.0 github.com/zclconf/go-cty-yaml v1.0.1 - golang.org/x/crypto v0.11.0 // indirect + golang.org/x/crypto v0.14.0 // indirect golang.org/x/mod v0.8.0 - golang.org/x/net v0.13.0 + golang.org/x/net v0.17.0 golang.org/x/oauth2 v0.1.0 golang.org/x/sync v0.1.0 - golang.org/x/sys v0.10.0 // indirect - golang.org/x/term v0.10.0 // indirect - golang.org/x/text v0.11.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/term v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect golang.org/x/tools v0.6.0 google.golang.org/api v0.101.0 // indirect google.golang.org/grpc v1.50.1 diff --git a/go.sum b/go.sum index 34f7c200dc5..5ba38f4998a 100644 --- a/go.sum +++ b/go.sum @@ -796,8 +796,8 @@ golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= -golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= @@ -845,8 +845,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.13.0 h1:Nvo8UFsZ8X3BhAC9699Z1j7XQ3rsZnUUm7jfBEk1ueY= -golang.org/x/net v0.13.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.1.0 h1:isLCZuhj4v+tYv7eskaN4v/TM+A1begWWgyVJDdl1+Y= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= @@ -907,21 +907,21 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= -golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= -golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= +golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= +golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= -golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= From 9a1d4b5219c579217d87ac136a25ab648c7560f0 Mon Sep 17 00:00:00 2001 From: Jamie Finnigan Date: Fri, 20 Oct 2023 15:02:39 -0700 Subject: [PATCH 200/381] go get -u google.golang.org/grpc && go mod tidy --- go.mod | 35 +++++++++++--------- go.sum | 103 +++++++++++++++++++++++++++++++++++++++------------------ 2 files changed, 89 insertions(+), 49 deletions(-) diff --git a/go.mod b/go.mod index c6b9dcc6823..21cfd2aef87 100644 --- a/go.mod +++ b/go.mod @@ -1,7 +1,7 @@ module github.com/hashicorp/packer require ( - cloud.google.com/go v0.105.0 // indirect + cloud.google.com/go v0.110.8 // indirect github.com/biogo/hts v1.4.3 github.com/cheggaaa/pb v1.0.27 github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e @@ -48,14 +48,14 @@ require ( golang.org/x/crypto v0.14.0 // indirect golang.org/x/mod v0.8.0 golang.org/x/net v0.17.0 - golang.org/x/oauth2 v0.1.0 - golang.org/x/sync v0.1.0 + golang.org/x/oauth2 v0.11.0 + golang.org/x/sync v0.3.0 golang.org/x/sys v0.13.0 // indirect golang.org/x/term v0.13.0 // indirect golang.org/x/text v0.13.0 // indirect golang.org/x/tools v0.6.0 - google.golang.org/api v0.101.0 // indirect - google.golang.org/grpc v1.50.1 + google.golang.org/api v0.128.0 // indirect + google.golang.org/grpc v1.59.0 ) require ( @@ -75,10 +75,10 @@ require ( ) require ( - cloud.google.com/go/compute v1.12.1 // indirect - cloud.google.com/go/compute/metadata v0.1.1 // indirect - cloud.google.com/go/iam v0.6.0 // indirect - cloud.google.com/go/storage v1.27.0 // indirect + cloud.google.com/go/compute v1.23.0 // indirect + cloud.google.com/go/compute/metadata v0.2.3 // indirect + cloud.google.com/go/iam v1.1.2 // indirect + cloud.google.com/go/storage v1.30.1 // indirect github.com/Azure/azure-sdk-for-go v64.0.0+incompatible // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest v0.11.19 // indirect @@ -134,13 +134,14 @@ require ( github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3 // indirect github.com/golang-jwt/jwt v3.2.2+incompatible // indirect github.com/golang-jwt/jwt/v4 v4.2.0 // indirect - github.com/golang/protobuf v1.5.2 // indirect + github.com/golang/protobuf v1.5.3 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/btree v1.0.1 // indirect + github.com/google/s2a-go v0.1.4 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/google/uuid v1.3.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.2.0 // indirect - github.com/googleapis/gax-go/v2 v2.6.0 // indirect + github.com/google/uuid v1.3.1 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.4 // indirect + github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/hashicorp/aws-sdk-go-base v0.7.1 // indirect github.com/hashicorp/consul/api v1.10.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect @@ -197,15 +198,17 @@ require ( github.com/xanzy/ssh-agent v0.3.0 // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect go.mongodb.org/mongo-driver v1.11.0 // indirect - go.opencensus.io v0.23.0 // indirect + go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/otel v1.11.1 // indirect go.opentelemetry.io/otel/trace v1.11.1 // indirect golang.org/x/mobile v0.0.0-20210901025245-1fde1d6c3ca1 // indirect golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c // indirect - google.golang.org/protobuf v1.28.1 // indirect + google.golang.org/genproto v0.0.0-20231012201019-e917dd12ba7a // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect + google.golang.org/protobuf v1.31.0 // indirect gopkg.in/cheggaaa/pb.v1 v1.0.28 // indirect gopkg.in/square/go-jose.v2 v2.6.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff --git a/go.sum b/go.sum index 5ba38f4998a..78887ed7807 100644 --- a/go.sum +++ b/go.sum @@ -1,16 +1,16 @@ bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.105.0 h1:DNtEKRBAAzeS4KyIory52wWHuClNaXJ5x1F7xa4q+5Y= -cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= -cloud.google.com/go/compute v1.12.1 h1:gKVJMEyqV5c/UnpzjjQbo3Rjvvqpr9B1DFSbJC4OXr0= -cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= -cloud.google.com/go/compute/metadata v0.1.1 h1:/sxEbyrm6cw+XOUw1YxBHlatV71z4vpnmO7z2IZ0h3I= -cloud.google.com/go/compute/metadata v0.1.1/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= -cloud.google.com/go/iam v0.6.0 h1:nsqQC88kT5Iwlm4MeNGTpfMWddp6NB/UOLFTH6m1QfQ= -cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= -cloud.google.com/go/longrunning v0.1.1 h1:y50CXG4j0+qvEukslYFBCrzaXX0qpFbBzc3PchSu/LE= -cloud.google.com/go/storage v1.27.0 h1:YOO045NZI9RKfCj1c5A/ZtuuENUc8OAW+gHdGnDgyMQ= -cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.110.8 h1:tyNdfIxjzaWctIiLYOTalaLKZ17SI44SKFW26QbOhME= +cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= +cloud.google.com/go/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY= +cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/iam v1.1.2 h1:gacbrBdWcoVmGLozRuStX45YKvJtzIjJdAolzUs1sm4= +cloud.google.com/go/iam v1.1.2/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= +cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= +cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/azure-sdk-for-go v51.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v64.0.0+incompatible h1:WAA77WBDWYtNfCC95V70VvkdzHe+wM/r2MQ9mG7fnQs= @@ -91,6 +91,7 @@ github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/antchfx/xpath v1.1.11 h1:WOFtK8TVAjLm3lbgqeP0arlHpvCEeTANeWZ/csPpJkQ= github.com/antchfx/xquery v0.0.0-20180515051857-ad5b8c7a47b0 h1:JaCC8jz0zdMLk2m+qCCVLLLM/PL93p84w4pK3aJWj60= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apparentlymart/go-cidr v1.0.1 h1:NmIwLZ/KdsjIUlhf+/Np40atNXm/+lZ5txfTJ/SpF+U= github.com/apparentlymart/go-cidr v1.0.1/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3 h1:ZSTrOEhiM5J5RFxEaFvMZVEAM1KvT1YzbEOwB2EAGjA= @@ -147,6 +148,11 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= @@ -187,6 +193,8 @@ github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3 github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -199,6 +207,7 @@ github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoD github.com/frankban/quicktest v1.10.0 h1:Gfh+GAJZOAoKZsIZeZbdn2JF10kN1XHNvjsvQK8gVkE= github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= @@ -326,8 +335,9 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -351,18 +361,21 @@ github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian/v3 v3.2.1 h1:d8MncMlErDFTwQGBK1xhv026j9kqhvw1Qv9IbWT1VLQ= +github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= +github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= +github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.2.0 h1:y8Yozv7SZtlU//QXbezB6QkpuE6jMD2/gfzk4AftXjs= -github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= -github.com/googleapis/gax-go/v2 v2.6.0 h1:SXk3ABtQYDT/OH8jAyvEOQ58mgawq5C4o/4/89qN2ZU= -github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.2.4 h1:uGy6JWR/uMIILU8wbf+OkstIrNiMjGpEIyhx8f6W7s4= +github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= +github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hako/durafmt v0.0.0-20200710122514-c0fb7b4da026 h1:BpJ2o0OR5FV7vrkDYfXYVJQeMNWa8RhklZOpW2ITAIQ= github.com/hako/durafmt v0.0.0-20200710122514-c0fb7b4da026/go.mod h1:5Scbynm8dF1XAPwIwkGPqzkM/shndPm79Jd1003hTjE= github.com/hashicorp/aws-sdk-go-base v0.7.1 h1:7s/aR3hFn74tYPVihzDyZe7y/+BorN70rr9ZvpV3j3o= @@ -677,6 +690,7 @@ github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsT github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= @@ -720,6 +734,7 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= @@ -751,6 +766,7 @@ github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgk github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/zclconf/go-cty v1.0.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= @@ -765,13 +781,14 @@ go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAV go.mongodb.org/mongo-driver v1.11.0 h1:FZKhBSTydeuffHj9CBjXlR8vQLee1cQyTWYPA6/tqiE= go.mongodb.org/mongo-driver v1.11.0/go.mod h1:s7p5vEtfbeR1gYi6pnj3c3/urpbLv2T5Sfd6Rp2HBB8= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/otel v1.11.1 h1:4WLLAmcfkmDk2ukNXJyq3/kiz/3UzCaYq6PskJsaou4= go.opentelemetry.io/otel v1.11.1/go.mod h1:1nNhXBbWSD0nsL38H6btgnFN2k4i0sNLHNNMZMSbUGE= go.opentelemetry.io/otel/sdk v1.11.1 h1:F7KmQgoHljhUuJyA+9BiU+EkJfyX5nVVF4wyzWZpKxs= go.opentelemetry.io/otel/trace v1.11.1 h1:ofxdnzsNrGBYXbP7t7zpUK281+go5rF7dvdIZXF8gdQ= go.opentelemetry.io/otel/trace v1.11.1/go.mod h1:f/Q9G7vzk5u91PhbmKbg1Qn0rzH1LJ4vbPHFGkTPtOk= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -795,6 +812,7 @@ golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWP golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= @@ -815,6 +833,7 @@ golang.org/x/mobile v0.0.0-20210901025245-1fde1d6c3ca1/go.mod h1:jFTmtFYCV0MFtXB golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -824,6 +843,7 @@ golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -838,6 +858,7 @@ golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= @@ -845,11 +866,13 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.1.0 h1:isLCZuhj4v+tYv7eskaN4v/TM+A1begWWgyVJDdl1+Y= -golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.11.0 h1:vPL4xzxBM4niKCW6g9whtaWVXTJf1U5e4aZxxFx/gbU= +golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -859,8 +882,9 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -905,6 +929,8 @@ golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= @@ -920,6 +946,7 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -945,6 +972,7 @@ golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200711155855-7342f9734a7d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -953,8 +981,8 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -google.golang.org/api v0.101.0 h1:lJPPeEBIRxGpGLwnBTam1NPEM8Z2BmmXEd3z812pjwM= -google.golang.org/api v0.101.0/go.mod h1:CjxAAWWt3A3VrUE2IGDY2bgK5qhoG/OkyWVlYcP05MY= +google.golang.org/api v0.128.0 h1:RjPESny5CnQRn9V6siglged+DZCgfu9l6mO9dkX9VOg= +google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= @@ -964,9 +992,14 @@ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoA google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c h1:QgY/XxIAIeccR+Ca/rDdKubLIU9rcJ3xfy1DC/Wd2Oo= -google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= +google.golang.org/genproto v0.0.0-20231012201019-e917dd12ba7a h1:fwgW9j3vHirt4ObdHoYNwuO24BEZjSzbh+zPaNWoiY8= +google.golang.org/genproto v0.0.0-20231012201019-e917dd12ba7a/go.mod h1:EMfReVxb80Dq1hhioy0sOsY9jCE46YDgHlJ7fWVUWRE= +google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97 h1:W18sezcAYs+3tDZX4F80yctqa12jcP1PUS2gQu1zTPU= +google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97/go.mod h1:iargEX0SFPm3xcfMI0d1domjg0ZF4Aa0p2awqyxhvF0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b h1:ZlWIi1wSK56/8hn4QcBp/j9M7Gt3U/3hZw3mC7vDICo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:swOH3j0KzcDDgGUWr+SNpyTen5YrXjS3eyPzFYKc6lc= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -976,9 +1009,12 @@ google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.50.1 h1:DS/BukOZWp8s6p4Dt/tOaJaTQyPyOoCcrjroHuCeLzY= -google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= +google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -990,8 +1026,8 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= -google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1014,6 +1050,7 @@ gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= From fa5d0359eb636ad68d8073162b31c52c63990e7a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Oct 2023 23:23:38 +0000 Subject: [PATCH 201/381] build(deps-dev): bump @babel/traverse from 7.17.9 to 7.23.2 in /website Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.17.9 to 7.23.2. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse) --- updated-dependencies: - dependency-name: "@babel/traverse" dependency-type: indirect ... Signed-off-by: dependabot[bot] --- website/package-lock.json | 492 +++++++++++++++++++++++++------------- 1 file changed, 322 insertions(+), 170 deletions(-) diff --git a/website/package-lock.json b/website/package-lock.json index fa295779654..55458aed469 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -32,17 +32,80 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "dependencies": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/compat-data": { "version": "7.17.7", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", @@ -92,28 +155,20 @@ } }, "node_modules/@babel/generator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dev": true, "dependencies": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" + "@babel/types": "^7.23.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/generator/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@babel/helper-compilation-targets": { "version": "7.17.7", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", @@ -142,37 +197,34 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -231,21 +283,30 @@ } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true, "engines": { "node": ">=6.9.0" @@ -275,13 +336,13 @@ } }, "node_modules/@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -326,13 +387,13 @@ "node_modules/@babel/highlight/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "node_modules/@babel/highlight/node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "engines": { "node": ">=4" @@ -351,9 +412,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", - "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -574,33 +635,33 @@ } }, "node_modules/@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", - "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.9", - "@babel/types": "^7.17.0", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -618,12 +679,13 @@ } }, "node_modules/@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1483,29 +1545,52 @@ "node": ">= 10.14.2" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", - "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.8.tgz", - "integrity": "sha512-zdpaWDz5IEyHlu1EO+B+qRHmJkSxMVV6SXngDry9n1ZqslLXFH9Dw6lRqDidm/sOJAWdRltJsmZ1SK28/uZKsw==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@mdx-js/util": { @@ -13981,12 +14066,65 @@ } }, "@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "version": "7.22.13", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", + "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", "dev": true, "requires": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.22.13", + "chalk": "^2.4.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } } }, "@babel/compat-data": { @@ -14027,22 +14165,15 @@ } }, "@babel/generator": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", - "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", + "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", "dev": true, "requires": { - "@babel/types": "^7.17.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "@babel/types": "^7.23.0", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" } }, "@babel/helper-compilation-targets": { @@ -14066,31 +14197,28 @@ } }, "@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "dev": true, - "requires": { - "@babel/types": "^7.16.7" - } + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true }, "@babel/helper-function-name": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", - "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "requires": { - "@babel/template": "^7.16.7", - "@babel/types": "^7.17.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" } }, "@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.22.5" } }, "@babel/helper-module-imports": { @@ -14134,18 +14262,24 @@ } }, "@babel/helper-split-export-declaration": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "requires": { - "@babel/types": "^7.16.7" + "@babel/types": "^7.22.5" } }, + "@babel/helper-string-parser": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", + "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "dev": true + }, "@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "dev": true }, "@babel/helper-validator-option": { @@ -14166,13 +14300,13 @@ } }, "@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", + "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "dependencies": { @@ -14208,13 +14342,13 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, "supports-color": { @@ -14229,9 +14363,9 @@ } }, "@babel/parser": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", - "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", + "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", "dev": true }, "@babel/plugin-proposal-object-rest-spread": { @@ -14392,30 +14526,30 @@ } }, "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" } }, "@babel/traverse": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", - "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.9", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.17.9", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.9", - "@babel/types": "^7.17.0", + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", + "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.0", + "@babel/types": "^7.23.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -14429,12 +14563,13 @@ } }, "@babel/types": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", - "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", + "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", "dev": true, "requires": { - "@babel/helper-validator-identifier": "^7.16.7", + "@babel/helper-string-parser": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } }, @@ -15101,26 +15236,43 @@ "chalk": "^4.0.0" } }, + "@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, "@jridgewell/resolve-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", - "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true }, "@jridgewell/sourcemap-codec": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", - "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.8.tgz", - "integrity": "sha512-zdpaWDz5IEyHlu1EO+B+qRHmJkSxMVV6SXngDry9n1ZqslLXFH9Dw6lRqDidm/sOJAWdRltJsmZ1SK28/uZKsw==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "@mdx-js/util": { From ac71611cf5340cb416cab9874866fb60e2c6b501 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 18 Oct 2023 14:16:52 -0400 Subject: [PATCH 202/381] Remove all HashiCorp vendored plugins --- command/meta.go | 27 +++++ command/vendored_plugins.go | 207 ++---------------------------------- go.mod | 34 +----- go.sum | 113 +------------------- 4 files changed, 38 insertions(+), 343 deletions(-) diff --git a/command/meta.go b/command/meta.go index 87ed70b906b..455478e2188 100644 --- a/command/meta.go +++ b/command/meta.go @@ -343,3 +343,30 @@ func (m *Meta) detectBundledPluginsHCL2(config *hcl2template.PackerConfig) []str return compileBundledPluginList(bundledPlugins) } + +func generateRequiredPluginsBlock(plugins []string) string { + if len(plugins) == 0 { + return "" + } + + buf := &strings.Builder{} + buf.WriteString(` +packer { + required_plugins {`) + + for _, plugin := range plugins { + pluginName := strings.Replace(plugin, "github.com/hashicorp/", "", 1) + fmt.Fprintf(buf, ` + %s = { + source = %q + version = "~> 1" + }`, pluginName, plugin) + } + + buf.WriteString(` + } +} +`) + + return buf.String() +} diff --git a/command/vendored_plugins.go b/command/vendored_plugins.go index d412db98bf6..5853e34cac4 100644 --- a/command/vendored_plugins.go +++ b/command/vendored_plugins.go @@ -4,159 +4,36 @@ package command import ( - "fmt" "log" - "strings" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - // Previously core-bundled components, split into their own plugins but // still vendored with Packer for now. Importing as library instead of // forcing use of packer init. - - amazonchrootbuilder "github.com/hashicorp/packer-plugin-amazon/builder/chroot" - amazonebsbuilder "github.com/hashicorp/packer-plugin-amazon/builder/ebs" - amazonebssurrogatebuilder "github.com/hashicorp/packer-plugin-amazon/builder/ebssurrogate" - amazonebsvolumebuilder "github.com/hashicorp/packer-plugin-amazon/builder/ebsvolume" - amazoninstancebuilder "github.com/hashicorp/packer-plugin-amazon/builder/instance" - amazonamidatasource "github.com/hashicorp/packer-plugin-amazon/datasource/ami" - amazonsecretsmanagerdatasource "github.com/hashicorp/packer-plugin-amazon/datasource/secretsmanager" - anazibimportpostprocessor "github.com/hashicorp/packer-plugin-amazon/post-processor/import" - ansibleprovisioner "github.com/hashicorp/packer-plugin-ansible/provisioner/ansible" - ansiblelocalprovisioner "github.com/hashicorp/packer-plugin-ansible/provisioner/ansible-local" - azurearmbuilder "github.com/hashicorp/packer-plugin-azure/builder/azure/arm" - azurechrootbuilder "github.com/hashicorp/packer-plugin-azure/builder/azure/chroot" - azuredtlbuilder "github.com/hashicorp/packer-plugin-azure/builder/azure/dtl" - azuredtlartifactprovisioner "github.com/hashicorp/packer-plugin-azure/provisioner/azure-dtlartifact" - dockerbuilder "github.com/hashicorp/packer-plugin-docker/builder/docker" - dockerimportpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-import" - dockerpushpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-push" - dockersavepostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-save" - dockertagpostprocessor "github.com/hashicorp/packer-plugin-docker/post-processor/docker-tag" - googlecomputebuilder "github.com/hashicorp/packer-plugin-googlecompute/builder/googlecompute" - googlecomputeexportpostprocessor "github.com/hashicorp/packer-plugin-googlecompute/post-processor/googlecompute-export" - googlecomputeimportpostprocessor "github.com/hashicorp/packer-plugin-googlecompute/post-processor/googlecompute-import" - qemubuilder "github.com/hashicorp/packer-plugin-qemu/builder/qemu" - vagrantbuilder "github.com/hashicorp/packer-plugin-vagrant/builder/vagrant" - vagrantpostprocessor "github.com/hashicorp/packer-plugin-vagrant/post-processor/vagrant" - vagrantcloudpostprocessor "github.com/hashicorp/packer-plugin-vagrant/post-processor/vagrant-cloud" - virtualboxisobuilder "github.com/hashicorp/packer-plugin-virtualbox/builder/virtualbox/iso" - virtualboxovfbuilder "github.com/hashicorp/packer-plugin-virtualbox/builder/virtualbox/ovf" - virtualboxvmbuilder "github.com/hashicorp/packer-plugin-virtualbox/builder/virtualbox/vm" - vmwareisobuilder "github.com/hashicorp/packer-plugin-vmware/builder/vmware/iso" - vmwarevmxbuilder "github.com/hashicorp/packer-plugin-vmware/builder/vmware/vmx" - vsphereclonebuilder "github.com/hashicorp/packer-plugin-vsphere/builder/vsphere/clone" - vsphereisobuilder "github.com/hashicorp/packer-plugin-vsphere/builder/vsphere/iso" - vspherepostprocessor "github.com/hashicorp/packer-plugin-vsphere/post-processor/vsphere" - vspheretemplatepostprocessor "github.com/hashicorp/packer-plugin-vsphere/post-processor/vsphere-template" ) // VendoredDatasources are datasource components that were once bundled with the // Packer core, but are now being imported from their counterpart plugin repos -var VendoredDatasources = map[string]packersdk.Datasource{ - "amazon-ami": new(amazonamidatasource.Datasource), - "amazon-secretsmanager": new(amazonsecretsmanagerdatasource.Datasource), -} +var VendoredDatasources = map[string]packersdk.Datasource{} // VendoredBuilders are builder components that were once bundled with the // Packer core, but are now being imported from their counterpart plugin repos -var VendoredBuilders = map[string]packersdk.Builder{ - "amazon-ebs": new(amazonebsbuilder.Builder), - "amazon-chroot": new(amazonchrootbuilder.Builder), - "amazon-ebssurrogate": new(amazonebssurrogatebuilder.Builder), - "amazon-ebsvolume": new(amazonebsvolumebuilder.Builder), - "amazon-instance": new(amazoninstancebuilder.Builder), - "azure-arm": new(azurearmbuilder.Builder), - "azure-chroot": new(azurechrootbuilder.Builder), - "azure-dtl": new(azuredtlbuilder.Builder), - "docker": new(dockerbuilder.Builder), - "googlecompute": new(googlecomputebuilder.Builder), - "qemu": new(qemubuilder.Builder), - "vagrant": new(vagrantbuilder.Builder), - "vsphere-clone": new(vsphereclonebuilder.Builder), - "vsphere-iso": new(vsphereisobuilder.Builder), - "virtualbox-iso": new(virtualboxisobuilder.Builder), - "virtualbox-ovf": new(virtualboxovfbuilder.Builder), - "virtualbox-vm": new(virtualboxvmbuilder.Builder), - "vmware-iso": new(vmwareisobuilder.Builder), - "vmware-vmx": new(vmwarevmxbuilder.Builder), -} +var VendoredBuilders = map[string]packersdk.Builder{} // VendoredProvisioners are provisioner components that were once bundled with the // Packer core, but are now being imported from their counterpart plugin repos -var VendoredProvisioners = map[string]packersdk.Provisioner{ - "azure-dtlartifact": new(azuredtlartifactprovisioner.Provisioner), - "ansible": new(ansibleprovisioner.Provisioner), - "ansible-local": new(ansiblelocalprovisioner.Provisioner), -} +var VendoredProvisioners = map[string]packersdk.Provisioner{} // VendoredPostProcessors are post-processor components that were once bundled with the // Packer core, but are now being imported from their counterpart plugin repos -var VendoredPostProcessors = map[string]packersdk.PostProcessor{ - "amazon-import": new(anazibimportpostprocessor.PostProcessor), - "docker-import": new(dockerimportpostprocessor.PostProcessor), - "docker-push": new(dockerpushpostprocessor.PostProcessor), - "docker-save": new(dockersavepostprocessor.PostProcessor), - "docker-tag": new(dockertagpostprocessor.PostProcessor), - "googlecompute-export": new(googlecomputeexportpostprocessor.PostProcessor), - "googlecompute-import": new(googlecomputeimportpostprocessor.PostProcessor), - "vagrant": new(vagrantpostprocessor.PostProcessor), - "vagrant-cloud": new(vagrantcloudpostprocessor.PostProcessor), - "vsphere-template": new(vspheretemplatepostprocessor.PostProcessor), - "vsphere": new(vspherepostprocessor.PostProcessor), -} +var VendoredPostProcessors = map[string]packersdk.PostProcessor{} // bundledStatus is used to know if one of the bundled components is loaded from // an external plugin, or from the bundled plugins. // // We keep track of this to produce a warning if a user relies on one // such plugin, as they will be removed in a later version of Packer. -var bundledStatus = map[string]bool{ - "packer-builder-amazon-ebs": false, - "packer-builder-amazon-chroot": false, - "packer-builder-amazon-ebssurrogate": false, - "packer-builder-amazon-ebsvolume": false, - "packer-builder-amazon-instance": false, - "packer-post-processor-amazon-import": false, - "packer-datasource-amazon-ami": false, - "packer-datasource-amazon-secretsmanager": false, - - "packer-provisioner-ansible": false, - "packer-provisioner-ansible-local": false, - - "packer-provisioner-azure-dtlartifact": false, - "packer-builder-azure-arm": false, - "packer-builder-azure-chroot": false, - "packer-builder-azure-dtl": false, - - "packer-builder-docker": false, - "packer-post-processor-docker-import": false, - "packer-post-processor-docker-push": false, - "packer-post-processor-docker-save": false, - "packer-post-processor-docker-tag": false, - - "packer-builder-googlecompute": false, - "packer-post-processor-googlecompute-export": false, - "packer-post-processor-googlecompute-import": false, - - "packer-builder-qemu": false, - - "packer-builder-vagrant": false, - "packer-post-processor-vagrant": false, - "packer-post-processor-vagrant-cloud": false, - - "packer-builder-virtualbox-iso": false, - "packer-builder-virtualbox-ovf": false, - "packer-builder-virtualbox-vm": false, - - "packer-builder-vmware-iso": false, - "packer-builder-vmware-vmx": false, - - "packer-builder-vsphere-clone": false, - "packer-builder-vsphere-iso": false, - "packer-post-processor-vsphere-template": false, - "packer-post-processor-vsphere": false, -} +var bundledStatus = map[string]bool{} // TrackBundledPlugin marks a component as loaded from Packer's bundled plugins // instead of from an externally loaded plugin. @@ -171,52 +48,7 @@ func TrackBundledPlugin(pluginName string) { bundledStatus[pluginName] = true } -var componentPluginMap = map[string]string{ - "packer-builder-amazon-ebs": "github.com/hashicorp/amazon", - "packer-builder-amazon-chroot": "github.com/hashicorp/amazon", - "packer-builder-amazon-ebssurrogate": "github.com/hashicorp/amazon", - "packer-builder-amazon-ebsvolume": "github.com/hashicorp/amazon", - "packer-builder-amazon-instance": "github.com/hashicorp/amazon", - "packer-post-processor-amazon-import": "github.com/hashicorp/amazon", - "packer-datasource-amazon-ami": "github.com/hashicorp/amazon", - "packer-datasource-amazon-secretsmanager": "github.com/hashicorp/amazon", - - "packer-provisioner-ansible": "github.com/hashicorp/ansible", - "packer-provisioner-ansible-local": "github.com/hashicorp/ansible", - - "packer-provisioner-azure-dtlartifact": "github.com/hashicorp/azure", - "packer-builder-azure-arm": "github.com/hashicorp/azure", - "packer-builder-azure-chroot": "github.com/hashicorp/azure", - "packer-builder-azure-dtl": "github.com/hashicorp/azure", - - "packer-builder-docker": "github.com/hashicorp/docker", - "packer-post-processor-docker-import": "github.com/hashicorp/docker", - "packer-post-processor-docker-push": "github.com/hashicorp/docker", - "packer-post-processor-docker-save": "github.com/hashicorp/docker", - "packer-post-processor-docker-tag": "github.com/hashicorp/docker", - - "packer-builder-googlecompute": "github.com/hashicorp/googlecompute", - "packer-post-processor-googlecompute-export": "github.com/hashicorp/googlecompute", - "packer-post-processor-googlecompute-import": "github.com/hashicorp/googlecompute", - - "packer-builder-qemu": "github.com/hashicorp/qemu", - - "packer-builder-vagrant": "github.com/hashicorp/vagrant", - "packer-post-processor-vagrant": "github.com/hashicorp/vagrant", - "packer-post-processor-vagrant-cloud": "github.com/hashicorp/vagrant", - - "packer-builder-virtualbox-iso": "github.com/hashicorp/virtualbox", - "packer-builder-virtualbox-ovf": "github.com/hashicorp/virtualbox", - "packer-builder-virtualbox-vm": "github.com/hashicorp/virtualbox", - - "packer-builder-vmware-iso": "github.com/hashicorp/vmware", - "packer-builder-vmware-vmx": "github.com/hashicorp/vmware", - - "packer-builder-vsphere-clone": "github.com/hashicorp/vsphere", - "packer-builder-vsphere-iso": "github.com/hashicorp/vsphere", - "packer-post-processor-vsphere-template": "github.com/hashicorp/vsphere", - "packer-post-processor-vsphere": "github.com/hashicorp/vsphere", -} +var componentPluginMap = map[string]string{} // compileBundledPluginList returns a list of plugins to import in a config // @@ -243,33 +75,6 @@ func compileBundledPluginList(componentMap map[string]struct{}) []string { return pluginList } -func generateRequiredPluginsBlock(plugins []string) string { - if len(plugins) == 0 { - return "" - } - - buf := &strings.Builder{} - buf.WriteString(` -packer { - required_plugins {`) - - for _, plugin := range plugins { - pluginName := strings.Replace(plugin, "github.com/hashicorp/", "", 1) - fmt.Fprintf(buf, ` - %s = { - source = %q - version = "~> 1" - }`, pluginName, plugin) - } - - buf.WriteString(` - } -} -`) - - return buf.String() -} - // Upon init lets load up any plugins that were vendored manually into the default // set of plugins. func init() { diff --git a/go.mod b/go.mod index 21cfd2aef87..5e353017141 100644 --- a/go.mod +++ b/go.mod @@ -60,15 +60,6 @@ require ( require ( github.com/go-openapi/strfmt v0.21.3 - github.com/hashicorp/packer-plugin-ansible v1.0.3 - github.com/hashicorp/packer-plugin-azure v1.4.0 - github.com/hashicorp/packer-plugin-docker v1.0.8 - github.com/hashicorp/packer-plugin-googlecompute v1.1.0 - github.com/hashicorp/packer-plugin-qemu v1.0.9 - github.com/hashicorp/packer-plugin-vagrant v1.0.3 - github.com/hashicorp/packer-plugin-virtualbox v1.0.4 - github.com/hashicorp/packer-plugin-vmware v1.0.7 - github.com/hashicorp/packer-plugin-vsphere v1.1.1 github.com/oklog/ulid v1.3.1 github.com/pierrec/lz4/v4 v4.1.18 github.com/shirou/gopsutil/v3 v3.23.4 @@ -79,17 +70,6 @@ require ( cloud.google.com/go/compute/metadata v0.2.3 // indirect cloud.google.com/go/iam v1.1.2 // indirect cloud.google.com/go/storage v1.30.1 // indirect - github.com/Azure/azure-sdk-for-go v64.0.0+incompatible // indirect - github.com/Azure/go-autorest v14.2.0+incompatible // indirect - github.com/Azure/go-autorest/autorest v0.11.19 // indirect - github.com/Azure/go-autorest/autorest/adal v0.9.18 // indirect - github.com/Azure/go-autorest/autorest/azure/auth v0.4.2 // indirect - github.com/Azure/go-autorest/autorest/azure/cli v0.4.2 // indirect - github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect - github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect - github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect - github.com/Azure/go-autorest/logger v0.2.1 // indirect - github.com/Azure/go-autorest/tracing v0.6.0 // indirect github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c // indirect github.com/ChrisTrenkamp/goxpath v0.0.0-20210404020558-97928f7e12b6 // indirect github.com/Masterminds/goutils v1.1.1 // indirect @@ -111,9 +91,6 @@ require ( github.com/cenkalti/backoff/v3 v3.2.2 // indirect github.com/chzyer/test v1.0.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/digitalocean/go-libvirt v0.0.0-20201209184759-e2a69bcd5bd1 // indirect - github.com/digitalocean/go-qemu v0.0.0-20210326154740-ac9e0b687001 // indirect - github.com/dimchansky/utfbom v1.1.1 // indirect github.com/dylanmei/iso8601 v0.1.0 // indirect github.com/emirpasic/gods v1.12.0 // indirect github.com/fatih/color v1.12.0 // indirect @@ -131,21 +108,16 @@ require ( github.com/go-openapi/swag v0.22.3 // indirect github.com/go-openapi/validate v0.22.1 // indirect github.com/gofrs/uuid v4.0.0+incompatible // indirect - github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3 // indirect - github.com/golang-jwt/jwt v3.2.2+incompatible // indirect - github.com/golang-jwt/jwt/v4 v4.2.0 // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/btree v1.0.1 // indirect github.com/google/s2a-go v0.1.4 // indirect - github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/google/uuid v1.3.1 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.4 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/hashicorp/aws-sdk-go-base v0.7.1 // indirect github.com/hashicorp/consul/api v1.10.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect - github.com/hashicorp/go-azure-helpers v0.16.5 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-getter/gcs/v2 v2.2.0 // indirect github.com/hashicorp/go-getter/s3/v2 v2.2.0 // indirect @@ -168,6 +140,7 @@ require ( github.com/josharian/intern v1.0.0 // indirect github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect github.com/kr/fs v0.1.0 // indirect + github.com/kr/pretty v0.3.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786 // indirect @@ -177,16 +150,15 @@ require ( github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect - github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/mitchellh/iochan v1.0.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect - github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect github.com/rivo/uniseg v0.2.0 // indirect + github.com/rogpeppe/go-internal v1.9.0 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect github.com/shoenig/go-m1cpu v0.1.5 // indirect @@ -194,14 +166,12 @@ require ( github.com/tklauser/go-sysconf v0.3.11 // indirect github.com/tklauser/numcpus v0.6.0 // indirect github.com/ugorji/go/codec v1.2.6 // indirect - github.com/vmware/govmomi v0.29.0 // indirect github.com/xanzy/ssh-agent v0.3.0 // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect go.mongodb.org/mongo-driver v1.11.0 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/otel v1.11.1 // indirect go.opentelemetry.io/otel/trace v1.11.1 // indirect - golang.org/x/mobile v0.0.0-20210901025245-1fde1d6c3ca1 // indirect golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/appengine v1.6.7 // indirect diff --git a/go.sum b/go.sum index 78887ed7807..f693b73893e 100644 --- a/go.sum +++ b/go.sum @@ -12,48 +12,7 @@ cloud.google.com/go/iam v1.1.2/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+K cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/azure-sdk-for-go v51.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v64.0.0+incompatible h1:WAA77WBDWYtNfCC95V70VvkdzHe+wM/r2MQ9mG7fnQs= -github.com/Azure/azure-sdk-for-go v64.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= -github.com/Azure/go-autorest/autorest v0.9.3/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8GNUx2nRB378IPt/1p0= -github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= -github.com/Azure/go-autorest/autorest v0.11.19 h1:7/IqD2fEYVha1EPeaiytVKhzmPV223pfkRIQUGOK2IE= -github.com/Azure/go-autorest/autorest v0.11.19/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= -github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= -github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= -github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= -github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= -github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= -github.com/Azure/go-autorest/autorest/adal v0.9.18 h1:kLnPsRjzZZUF3K5REu/Kc+qMQrvuza2bwSnNdhmzLfQ= -github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= -github.com/Azure/go-autorest/autorest/azure/auth v0.4.2 h1:iM6UAvjR97ZIeR93qTcwpKNMpV+/FTWjwEbuPD495Tk= -github.com/Azure/go-autorest/autorest/azure/auth v0.4.2/go.mod h1:90gmfKdlmKgfjUpnCEpOJzsUEjrWDSLwHIG73tSXddM= -github.com/Azure/go-autorest/autorest/azure/cli v0.3.1/go.mod h1:ZG5p860J94/0kI9mNJVoIoLgXcirM2gF5i2kWloofxw= -github.com/Azure/go-autorest/autorest/azure/cli v0.4.2 h1:dMOmEJfkLKW/7JsokJqkyoYSgmR08hi9KrhjZb+JALY= -github.com/Azure/go-autorest/autorest/azure/cli v0.4.2/go.mod h1:7qkJkT+j6b+hIpzMOwPChJhTqS8VbsqqgULzMNRugoM= -github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= -github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= -github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= -github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= -github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= -github.com/Azure/go-autorest/autorest/mocks v0.4.1 h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk= -github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/autorest/to v0.4.0 h1:oXVqrxakqqV1UZdSazDOPOLvOIz+XA683u8EctwboHk= -github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= -github.com/Azure/go-autorest/autorest/validation v0.3.1 h1:AgyqjAd94fwNAoTjl/WQXg4VvFeRFpO+UhNyRXqF1ac= -github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= -github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= -github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg= -github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= -github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= -github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/Azure/go-ntlmssp v0.0.0-20180810175552-4a21cbd618b4/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c h1:/IBSNwUN8+eKzUzbJPqhK839ygXJ82sde8x3ogr6R28= github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= @@ -99,7 +58,6 @@ github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/ github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= -github.com/approvals/go-approval-tests v0.0.0-20210131072903-38d0b0ec12b1 h1:uroQ0JaeVom9Ffv9xFtc7DcqrpGmyQeZCRzHD9FqPBg= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-metrics v0.3.0/go.mod h1:zXjbSimjXTd7vOpY8B0/2LpvNvDoXBuplAD+gJD3GYs= @@ -168,15 +126,6 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/digitalocean/go-libvirt v0.0.0-20201209184759-e2a69bcd5bd1 h1:j6vGflaQ2T7yOWqVgPdiRF73j/U2Zmpbbzab8nyDCRQ= -github.com/digitalocean/go-libvirt v0.0.0-20201209184759-e2a69bcd5bd1/go.mod h1:QS1XzqZLcDniNYrN7EZefq3wIyb/M2WmJbql4ZKoc1Q= -github.com/digitalocean/go-qemu v0.0.0-20210326154740-ac9e0b687001 h1:WAg57gnaAWWjMAELcwHjc2xy0PoXQ5G+vn3+XS6s1jI= -github.com/digitalocean/go-qemu v0.0.0-20210326154740-ac9e0b687001/go.mod h1:IetBE52JfFxK46p2n2Rqm+p5Gx1gpu2hRHsrbnPOWZQ= -github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= -github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U= -github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= -github.com/dnaeon/go-vcr v1.1.0 h1:ReYa/UBrRyQdant9B4fNHGoCNKw6qh6P0fsdGmZpR7c= github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v1.4.2-0.20200319182547-c7ad2b866182/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= @@ -196,14 +145,12 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.12.0 h1:mRhaKNwANqRgUBGKmnI5ZxEk7QXmjQeCcuYFMX2bfcc= github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/frankban/quicktest v1.10.0 h1:Gfh+GAJZOAoKZsIZeZbdn2JF10kN1XHNvjsvQK8gVkE= github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -308,13 +255,6 @@ github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRx github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3 h1:zN2lZNZRflqFyxVaTIU61KNKQ9C0055u9CAfpmqUvo4= -github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3/go.mod h1:nPpo7qLxd6XL3hWJG/O60sR8ZKfMCiIoNap5GvD12KU= -github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= -github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= -github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-jwt/jwt/v4 v4.2.0 h1:besgBTC8w8HjP6NzQdxwKH9Z5oQMZ24ThTrHp3cZ8eU= -github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= @@ -364,8 +304,6 @@ github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/ github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= -github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= @@ -387,8 +325,6 @@ github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOj github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-azure-helpers v0.16.5 h1:rhcpg2Nk1Li6173KTHNnj/i+MGXYNjvYKIdNlg6q3RU= -github.com/hashicorp/go-azure-helpers v0.16.5/go.mod h1:kR7+sTDEb9TOp/O80ss1UEJg1t4/BHLD/U8wHLS4BGQ= github.com/hashicorp/go-checkpoint v0.0.0-20171009173528-1545e56e46de h1:XDCSythtg8aWSRSO29uwhgh7b127fWr+m5SemqjSUL8= github.com/hashicorp/go-checkpoint v0.0.0-20171009173528-1545e56e46de/go.mod h1:xIwEieBHERyEvaeKF/TcHh1Hu+lxPM+n2vT1+g9I4m4= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= @@ -442,7 +378,6 @@ github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2I github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= @@ -462,26 +397,8 @@ github.com/hashicorp/memberlist v0.2.2 h1:5+RffWKwqJ71YPu9mWsF7ZOscZmwfasdA8kbdC github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/packer-plugin-amazon v1.2.1 h1:0Xqr8KsTJJhIo0vvjqPYrVMgyVxNRuYH4DeB5m/WAtw= github.com/hashicorp/packer-plugin-amazon v1.2.1/go.mod h1:qlp0h5TWVGgcPzN9mSxPiEAwOUOW3XU/zep0pGd0ZsM= -github.com/hashicorp/packer-plugin-ansible v1.0.3 h1:XjltQVPYnnZdNyBjwHr1QthR413SjZxTtRrmM0sM3VI= -github.com/hashicorp/packer-plugin-ansible v1.0.3/go.mod h1:N4OZtNDq2FSRBknuNU/GSoKtllfxQnHCYYaJUD1p1MA= -github.com/hashicorp/packer-plugin-azure v1.4.0 h1:rxkcGe5pjjnzddfR5/sBJmg8kb+ko+r2M+Ce7OC8sQ4= -github.com/hashicorp/packer-plugin-azure v1.4.0/go.mod h1:7j1q0SNPeZr7xRID0c/Hu9QojE41pSlSJwsNB9/rOTI= -github.com/hashicorp/packer-plugin-docker v1.0.8 h1:UWPG/pl+1RFsaNQVhEuowCeOZuES6/mqy5R6FTyMeQo= -github.com/hashicorp/packer-plugin-docker v1.0.8/go.mod h1:4U3gHULbUw3okSqqZgQZD5ptyJKs0S7LfOOt2U3V4Jk= -github.com/hashicorp/packer-plugin-googlecompute v1.1.0 h1:/cSZCJuRV6osaSa1uOy8cpN+c/uiCbrSsZ8vyNC0slk= -github.com/hashicorp/packer-plugin-googlecompute v1.1.0/go.mod h1:k7MhKwEDw9ASP3a1y1syKJFZiZ8pO4oH40HvVgGHzUE= -github.com/hashicorp/packer-plugin-qemu v1.0.9 h1:1YKBBzBULYUBWtpAZJTbaLjjZPAdQ63okkpTqMBTnzM= -github.com/hashicorp/packer-plugin-qemu v1.0.9/go.mod h1:BpWIpVpOoPFV9Ppmzq4DP/S0QNoh1R+7DUCqxHdXc+Y= github.com/hashicorp/packer-plugin-sdk v0.4.0 h1:UyLYe0y02D9wkOQ3FeeZWyFg2+mx2vLuWRGUL5xt50I= github.com/hashicorp/packer-plugin-sdk v0.4.0/go.mod h1:uNhU3pmjM2ejgHYce/g4J+sa5rh81iYQztpGvGa5FOs= -github.com/hashicorp/packer-plugin-vagrant v1.0.3 h1:IUfEdYuAjSjGsgJI2rnZ1qEo5rI0UWoueJ+yq9ysx4M= -github.com/hashicorp/packer-plugin-vagrant v1.0.3/go.mod h1:Ymg8LJrT8N2Dclu91G3ZhXpE67jL7hfbtyDVKeNsKTc= -github.com/hashicorp/packer-plugin-virtualbox v1.0.4 h1:mceFO34yhBU4BUMmCcQAB6KQ98GPjBIXTG3eS22RmZM= -github.com/hashicorp/packer-plugin-virtualbox v1.0.4/go.mod h1:rnDkWJpkbcFPBmsMZcoImWDd9kLjTiXiN0sfHypuHac= -github.com/hashicorp/packer-plugin-vmware v1.0.7 h1:cnc6XRNAkE+P5EoiI4VLXmIUeb2VAqW6zdNFmIW11YY= -github.com/hashicorp/packer-plugin-vmware v1.0.7/go.mod h1:AGeNk9f/qKUP8yGoiofMqvBw8TJLtdhsZgvqannZQS4= -github.com/hashicorp/packer-plugin-vsphere v1.1.1 h1:X4PtYV7TGPqoudjfvHpI2qRl9pAGf1SfkiJ7sMCKAEU= -github.com/hashicorp/packer-plugin-vsphere v1.1.1/go.mod h1:kLbvU4EwRISjhvY3c5pVisCKE0Usn+pOMRkIPnwcPfU= github.com/hashicorp/serf v0.9.5 h1:EBWvyu9tcRszt3Bxp3KNssBMP1KuHWyO51lz9+786iM= github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= github.com/hashicorp/vault/api v1.0.5-0.20200519221902-385fac77e20f/go.mod h1:euTFbi2YJgwcju3imEt919lhJKF68nN1cQPq3aA+kBE= @@ -540,6 +457,7 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -600,8 +518,6 @@ github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go. github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= -github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed h1:FI2NIv6fpef6BQl2u3IZX/Cj20tfypRF4yd+uaHOMtI= -github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed/go.mod h1:3rdaFaCv4AyBgu5ALFM0+tSuHrBh6v692nyQe3ikrq0= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= @@ -694,7 +610,9 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= @@ -754,8 +672,6 @@ github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= -github.com/vmware/govmomi v0.29.0 h1:SHJQ7DUc4fltFZv16znJNGHR1/XhiDK5iKxm2OqwkuU= -github.com/vmware/govmomi v0.29.0/go.mod h1:F7adsVewLNHsW/IIm7ziFURaXDaHEwcc+ym4r3INMdY= github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= @@ -764,8 +680,6 @@ github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23n github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= @@ -800,15 +714,11 @@ golang.org/x/crypto v0.0.0-20190418165655-df01cb2cc480/go.mod h1:WFFai1msRO1wXaE golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200422194213-44a606286825/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= @@ -818,7 +728,6 @@ golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -826,13 +735,8 @@ golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTk golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= -golang.org/x/mobile v0.0.0-20210901025245-1fde1d6c3ca1 h1:t3ZHqovedSY8DEAUmZA99fPJhUhOb176PLACYA1sJ8Y= -golang.org/x/mobile v0.0.0-20210901025245-1fde1d6c3ca1/go.mod h1:jFTmtFYCV0MFtXBU+J5V/+5AUeVS0ON/0WkE/KSrl6E= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= @@ -857,12 +761,10 @@ golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= @@ -880,7 +782,6 @@ golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= @@ -918,15 +819,12 @@ golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -935,7 +833,6 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= @@ -959,7 +856,6 @@ golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -970,13 +866,10 @@ golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200711155855-7342f9734a7d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= From c65bb2fdca5618daa4b06f86dabded5b19a3b1bd Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 18 Oct 2023 14:19:48 -0400 Subject: [PATCH 203/381] Remove amazon plugin from acceptance test --- acctest/plugin/bundled_plugin_test.go | 184 ------------------ acctest/plugin/component_acc_test.go | 8 - acctest/plugin/plugin_acc_test.go | 8 - .../basic-amazon-ami-datasource.pkr.hcl | 3 +- .../test-fixtures/basic-amazon-ebs.pkr.hcl | 15 +- .../test-fixtures/basic_amazon_bundled.json | 10 - .../basic_amazon_bundled.pkr.hcl | 11 -- ...basic_amazon_with_required_plugins.pkr.hcl | 20 -- command/exec_test.go | 7 +- 9 files changed, 12 insertions(+), 254 deletions(-) delete mode 100644 acctest/plugin/bundled_plugin_test.go delete mode 100644 acctest/plugin/test-fixtures/basic_amazon_bundled.json delete mode 100644 acctest/plugin/test-fixtures/basic_amazon_bundled.pkr.hcl delete mode 100644 acctest/plugin/test-fixtures/basic_amazon_with_required_plugins.pkr.hcl diff --git a/acctest/plugin/bundled_plugin_test.go b/acctest/plugin/bundled_plugin_test.go deleted file mode 100644 index c6652610955..00000000000 --- a/acctest/plugin/bundled_plugin_test.go +++ /dev/null @@ -1,184 +0,0 @@ -// Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: BUSL-1.1 - -package plugin - -import ( - _ "embed" - "errors" - "fmt" - "os" - "os/exec" - "strings" - "testing" - - "github.com/hashicorp/go-multierror" - amazonacc "github.com/hashicorp/packer-plugin-amazon/builder/ebs/acceptance" - "github.com/hashicorp/packer-plugin-sdk/acctest" - "github.com/hashicorp/packer/hcl2template/addrs" -) - -//go:embed test-fixtures/basic_amazon_bundled.pkr.hcl -var basicAmazonBundledEbsTemplate string - -func TestAccBuildBundledPlugins(t *testing.T) { - plugin := addrs.Plugin{ - Hostname: "github.com", - Namespace: "hashicorp", - Type: "amazon", - } - testCase := &acctest.PluginTestCase{ - Name: "amazon-ebs_bundled_test", - Setup: func() error { - return cleanupPluginInstallation(plugin) - }, - Teardown: func() error { - helper := amazonacc.AMIHelper{ - Region: "us-east-1", - Name: "packer-plugin-bundled-amazon-ebs-test", - } - return helper.CleanUpAmi() - }, - Template: basicAmazonBundledEbsTemplate, - Type: "amazon-ebs", - Init: false, - Check: func(buildCommand *exec.Cmd, logfile string) error { - if buildCommand.ProcessState != nil { - if buildCommand.ProcessState.ExitCode() != 0 { - return fmt.Errorf("Bad exit code. Logfile: %s", logfile) - } - } - - rawLogs, err := os.ReadFile(logfile) - if err != nil { - return fmt.Errorf("failed to read logs: %s", err) - } - - var errs error - - logs := string(rawLogs) - - if !strings.Contains(logs, "Warning: Bundled plugins used") { - errs = multierror.Append(errs, errors.New("expected warning about bundled plugins used, did not find it")) - } - - if !strings.Contains(logs, "Then run 'packer init' to manage installation of the plugins") { - errs = multierror.Append(errs, errors.New("expected suggestion about packer init in logs, did not find it.")) - } - - return errs - }, - } - - acctest.TestPlugin(t, testCase) -} - -//go:embed test-fixtures/basic_amazon_with_required_plugins.pkr.hcl -var basicAmazonRequiredPluginEbsTemplate string - -func TestAccBuildBundledPluginsWithRequiredPlugins(t *testing.T) { - plugin := addrs.Plugin{ - Hostname: "github.com", - Namespace: "hashicorp", - Type: "amazon", - } - testCase := &acctest.PluginTestCase{ - Name: "amazon-ebs_with_required_plugins_test", - Setup: func() error { - return cleanupPluginInstallation(plugin) - }, - Teardown: func() error { - helper := amazonacc.AMIHelper{ - Region: "us-east-1", - Name: "packer-plugin-required-plugin-amazon-ebs-test", - } - return helper.CleanUpAmi() - }, - Template: basicAmazonRequiredPluginEbsTemplate, - Type: "amazon-ebs", - Init: false, - Check: func(buildCommand *exec.Cmd, logfile string) error { - if buildCommand.ProcessState != nil { - if buildCommand.ProcessState.ExitCode() != 1 { - return fmt.Errorf("Bad exit code. Logfile: %s", logfile) - } - } - - rawLogs, err := os.ReadFile(logfile) - if err != nil { - return fmt.Errorf("failed to read logs: %s", err) - } - - var errs error - - logs := string(rawLogs) - - if strings.Contains(logs, "Warning: Bundled plugins used") { - errs = multierror.Append(errs, errors.New("did not expect warning about bundled plugins used")) - } - - if !strings.Contains(logs, "Missing plugins") { - errs = multierror.Append(errs, errors.New("expected error about plugins required and not installed, did not find it")) - } - - return errs - }, - } - - acctest.TestPlugin(t, testCase) -} - -//go:embed test-fixtures/basic_amazon_bundled.json -var basicAmazonBundledEbsTemplateJSON string - -func TestAccBuildBundledPluginsJSON(t *testing.T) { - plugin := addrs.Plugin{ - Hostname: "github.com", - Namespace: "hashicorp", - Type: "amazon", - } - testCase := &acctest.PluginTestCase{ - Name: "amazon-ebs_bundled_test_json", - Setup: func() error { - return cleanupPluginInstallation(plugin) - }, - Teardown: func() error { - helper := amazonacc.AMIHelper{ - Region: "us-east-1", - Name: "packer-plugin-bundled-amazon-ebs-test-json", - } - return helper.CleanUpAmi() - }, - Template: basicAmazonBundledEbsTemplateJSON, - Type: "amazon-ebs", - Init: false, - Check: func(buildCommand *exec.Cmd, logfile string) error { - if buildCommand.ProcessState != nil { - if buildCommand.ProcessState.ExitCode() != 0 { - return fmt.Errorf("Bad exit code. Logfile: %s", logfile) - } - } - - rawLogs, err := os.ReadFile(logfile) - if err != nil { - return fmt.Errorf("failed to read logs: %s", err) - } - - var errs error - - logs := string(rawLogs) - - if !strings.Contains(logs, "Warning: Bundled plugins used") { - errs = multierror.Append(errs, errors.New("expected warning about bundled plugins, did not find it.")) - } - - if !strings.Contains(logs, "plugins with the 'packer plugins install' command") { - errs = multierror.Append(errs, errors.New("expected suggestion about packer plugins install in logs, did not find it.")) - } - - return errs - }, - } - - acctest.TestPlugin(t, testCase) -} diff --git a/acctest/plugin/component_acc_test.go b/acctest/plugin/component_acc_test.go index e78c77284c0..53a49ad229c 100644 --- a/acctest/plugin/component_acc_test.go +++ b/acctest/plugin/component_acc_test.go @@ -13,7 +13,6 @@ import ( "os/exec" "testing" - amazonacc "github.com/hashicorp/packer-plugin-amazon/builder/ebs/acceptance" "github.com/hashicorp/packer-plugin-sdk/acctest" "github.com/hashicorp/packer/hcl2template/addrs" ) @@ -32,13 +31,6 @@ func TestAccInitAndBuildBasicAmazonAmiDatasource(t *testing.T) { Setup: func() error { return cleanupPluginInstallation(plugin) }, - Teardown: func() error { - helper := amazonacc.AMIHelper{ - Region: "us-west-2", - Name: "packer-amazon-ami-test", - } - return helper.CleanUpAmi() - }, Template: basicAmazonAmiDatasourceHCL2Template, Type: "amazon-ami", Init: true, diff --git a/acctest/plugin/plugin_acc_test.go b/acctest/plugin/plugin_acc_test.go index 6549b2129a3..b2afe7e8162 100644 --- a/acctest/plugin/plugin_acc_test.go +++ b/acctest/plugin/plugin_acc_test.go @@ -15,7 +15,6 @@ import ( "regexp" "testing" - amazonacc "github.com/hashicorp/packer-plugin-amazon/builder/ebs/acceptance" "github.com/hashicorp/packer-plugin-sdk/acctest" "github.com/hashicorp/packer-plugin-sdk/acctest/testutils" "github.com/hashicorp/packer/hcl2template/addrs" @@ -36,13 +35,6 @@ func TestAccInitAndBuildBasicAmazonEbs(t *testing.T) { Setup: func() error { return cleanupPluginInstallation(plugin) }, - Teardown: func() error { - helper := amazonacc.AMIHelper{ - Region: "us-east-1", - Name: "packer-plugin-amazon-ebs-test", - } - return helper.CleanUpAmi() - }, Template: basicAmazonEbsHCL2Template, Type: "amazon-ebs", Init: true, diff --git a/acctest/plugin/test-fixtures/basic-amazon-ami-datasource.pkr.hcl b/acctest/plugin/test-fixtures/basic-amazon-ami-datasource.pkr.hcl index 7ff2d3127da..207530aa26f 100644 --- a/acctest/plugin/test-fixtures/basic-amazon-ami-datasource.pkr.hcl +++ b/acctest/plugin/test-fixtures/basic-amazon-ami-datasource.pkr.hcl @@ -1,7 +1,7 @@ packer { required_plugins { amazon = { - version = ">= 0.0.1" + version = "~>1" source = "github.com/hashicorp/amazon" } } @@ -25,6 +25,7 @@ source "amazon-ebs" "basic-example" { communicator = "ssh" instance_type = "t2.micro" ssh_username = "ubuntu" + skip_create_ami = true } build { diff --git a/acctest/plugin/test-fixtures/basic-amazon-ebs.pkr.hcl b/acctest/plugin/test-fixtures/basic-amazon-ebs.pkr.hcl index aa9399a9239..daaec2feb7f 100644 --- a/acctest/plugin/test-fixtures/basic-amazon-ebs.pkr.hcl +++ b/acctest/plugin/test-fixtures/basic-amazon-ebs.pkr.hcl @@ -1,18 +1,19 @@ packer { required_plugins { amazon = { - version = ">= 0.0.1" - source = "github.com/hashicorp/amazon" + version = "~> 1" + source = "github.com/hashicorp/amazon" } } } source "amazon-ebs" "basic-test" { - region = "us-east-1" - instance_type = "m3.medium" - source_ami = "ami-76b2a71e" - ssh_username = "ubuntu" - ami_name = "packer-plugin-amazon-ebs-test" + region = "us-east-1" + instance_type = "m3.medium" + source_ami = "ami-76b2a71e" + ssh_username = "ubuntu" + ami_name = "packer-plugin-amazon-ebs-test" + skip_create_ami = true } build { diff --git a/acctest/plugin/test-fixtures/basic_amazon_bundled.json b/acctest/plugin/test-fixtures/basic_amazon_bundled.json deleted file mode 100644 index f674cd130d1..00000000000 --- a/acctest/plugin/test-fixtures/basic_amazon_bundled.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "builders": [{ - "type": "amazon-ebs", - "region": "us-east-1", - "instance_type": "m3.medium", - "source_ami": "ami-76b2a71e", - "ssh_username": "ubuntu", - "ami_name": "packer-plugin-bundled-amazon-ebs-test-json" - }] -} diff --git a/acctest/plugin/test-fixtures/basic_amazon_bundled.pkr.hcl b/acctest/plugin/test-fixtures/basic_amazon_bundled.pkr.hcl deleted file mode 100644 index c17a09df04f..00000000000 --- a/acctest/plugin/test-fixtures/basic_amazon_bundled.pkr.hcl +++ /dev/null @@ -1,11 +0,0 @@ -source "amazon-ebs" "basic-test" { - region = "us-east-1" - instance_type = "m3.medium" - source_ami = "ami-76b2a71e" - ssh_username = "ubuntu" - ami_name = "packer-plugin-bundled-amazon-ebs-test" -} - -build { - sources = ["source.amazon-ebs.basic-test"] -} diff --git a/acctest/plugin/test-fixtures/basic_amazon_with_required_plugins.pkr.hcl b/acctest/plugin/test-fixtures/basic_amazon_with_required_plugins.pkr.hcl deleted file mode 100644 index a30f85fa49e..00000000000 --- a/acctest/plugin/test-fixtures/basic_amazon_with_required_plugins.pkr.hcl +++ /dev/null @@ -1,20 +0,0 @@ -packer { - required_plugins { - amazon = { - source = "github.com/hashicorp/amazon", - version = "~> 1" - } - } -} - -source "amazon-ebs" "basic-test" { - region = "us-east-1" - instance_type = "m3.medium" - source_ami = "ami-76b2a71e" - ssh_username = "ubuntu" - ami_name = "packer-plugin-external-amazon-ebs-test" -} - -build { - sources = ["source.amazon-ebs.basic-test"] -} diff --git a/command/exec_test.go b/command/exec_test.go index c4bf24ab157..debb2dacbf9 100644 --- a/command/exec_test.go +++ b/command/exec_test.go @@ -11,7 +11,6 @@ import ( "runtime" "testing" - "github.com/hashicorp/packer-plugin-amazon/builder/ebs" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer/builder/file" "github.com/hashicorp/packer/builder/null" @@ -121,10 +120,8 @@ func getBareComponentFinder() packer.ComponentFinder { return packer.ComponentFinder{ PluginConfig: &packer.PluginConfig{ Builders: packer.MapOfBuilder{ - "file": func() (packersdk.Builder, error) { return &file.Builder{}, nil }, - "null": func() (packersdk.Builder, error) { return &null.Builder{}, nil }, - "amazon-ebs": func() (packersdk.Builder, error) { return &ebs.Builder{}, nil }, - "azure-arm": func() (packersdk.Builder, error) { return &ebs.Builder{}, nil }, + "file": func() (packersdk.Builder, error) { return &file.Builder{}, nil }, + "null": func() (packersdk.Builder, error) { return &null.Builder{}, nil }, }, Provisioners: packer.MapOfProvisioner{ "shell-local": func() (packersdk.Provisioner, error) { return &shell_local.Provisioner{}, nil }, From e8d5436228567492bc05a2b00705da79d661ee6d Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 19 Oct 2023 10:58:39 -0400 Subject: [PATCH 204/381] Remove functions for detecting plugin usage With the removal of vendored_plugins we are no longer interested in tacking bundled plugins usage. For plugins such as file, null, or anything bultin into Packer we don't track because there is no way to install them outside of Packer, for now. --- command/build.go | 2 - command/meta.go | 117 ------------------------------------ command/validate.go | 2 - command/vendored_plugins.go | 108 --------------------------------- config.go | 4 -- 5 files changed, 233 deletions(-) delete mode 100644 command/vendored_plugins.go diff --git a/command/build.go b/command/build.go index 94361807407..c9f7a537d1c 100644 --- a/command/build.go +++ b/command/build.go @@ -94,8 +94,6 @@ func (c *BuildCommand) RunContext(buildCtx context.Context, cla *BuildArgs) int } diags = packerStarter.Initialize(packer.InitializeOptions{}) - bundledDiags := c.DetectBundledPlugins(packerStarter) - diags = append(bundledDiags, diags...) ret = writeDiags(c.Ui, nil, diags) if ret != 0 { return ret diff --git a/command/meta.go b/command/meta.go index 455478e2188..0e464ccc36d 100644 --- a/command/meta.go +++ b/command/meta.go @@ -11,7 +11,6 @@ import ( "os" "strings" - "github.com/hashicorp/hcl/v2" "github.com/hashicorp/hcl/v2/hclparse" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template" @@ -169,84 +168,6 @@ func (m *Meta) GetConfigFromJSON(cla *MetaArgs) (packer.Handler, int) { return core, ret } -func (m *Meta) DetectBundledPlugins(handler packer.Handler) hcl.Diagnostics { - var plugins []string - - switch h := handler.(type) { - case *packer.Core: - plugins = m.detectBundledPluginsJSON(h) - case *hcl2template.PackerConfig: - plugins = m.detectBundledPluginsHCL2(handler.(*hcl2template.PackerConfig)) - } - - if len(plugins) == 0 { - return nil - } - - packer.CheckpointReporter.SetBundledUsage() - - buf := &strings.Builder{} - buf.WriteString("This template relies on the use of plugins bundled into the Packer binary.\n") - buf.WriteString("The practice of bundling external plugins into Packer will be removed in an upcoming version.\n\n") - switch h := handler.(type) { - case *packer.Core: - buf.WriteString("To remove this warning and ensure builds keep working you can install these external plugins with the 'packer plugins install' command\n\n") - - for _, plugin := range plugins { - fmt.Fprintf(buf, "* packer plugins install %s\n", plugin) - } - - buf.WriteString("\nAlternatively, if you upgrade your templates to HCL2, you can use 'packer init' with a 'required_plugins' block to automatically install external plugins.\n\n") - fmt.Fprintf(buf, "You can try HCL2 by running 'packer hcl2_upgrade %s'", h.Template.Path) - case *hcl2template.PackerConfig: - buf.WriteString("To remove this warning, add the following section to your template:\n") - buf.WriteString(m.fixRequiredPlugins(h)) - buf.WriteString("\nThen run 'packer init' to manage installation of the plugins") - } - - return hcl.Diagnostics{ - &hcl.Diagnostic{ - Severity: hcl.DiagWarning, - Summary: "Bundled plugins used", - Detail: buf.String(), - }, - } -} - -func (m *Meta) detectBundledPluginsJSON(core *packer.Core) []string { - bundledPlugins := map[string]struct{}{} - - tmpl := core.Template - if tmpl == nil { - panic("No template parsed. This is a Packer bug which should be reported, please open an issue on the project's issue tracker.") - } - - for _, b := range tmpl.Builders { - builderType := fmt.Sprintf("packer-builder-%s", b.Type) - if bundledStatus[builderType] { - bundledPlugins[builderType] = struct{}{} - } - } - - for _, p := range tmpl.Provisioners { - provisionerType := fmt.Sprintf("packer-provisioner-%s", p.Type) - if bundledStatus[provisionerType] { - bundledPlugins[provisionerType] = struct{}{} - } - } - - for _, pps := range tmpl.PostProcessors { - for _, pp := range pps { - postProcessorType := fmt.Sprintf("packer-post-processor-%s", pp.Type) - if bundledStatus[postProcessorType] { - bundledPlugins[postProcessorType] = struct{}{} - } - } - } - - return compileBundledPluginList(bundledPlugins) -} - var knownPluginPrefixes = map[string]string{ "amazon": "github.com/hashicorp/amazon", "ansible": "github.com/hashicorp/ansible", @@ -306,44 +227,6 @@ func (m *Meta) fixRequiredPlugins(config *hcl2template.PackerConfig) string { return generateRequiredPluginsBlock(retPlugins) } -func (m *Meta) detectBundledPluginsHCL2(config *hcl2template.PackerConfig) []string { - bundledPlugins := map[string]struct{}{} - - for _, b := range config.Builds { - for _, src := range b.Sources { - builderType := fmt.Sprintf("packer-builder-%s", src.Type) - if bundledStatus[builderType] { - bundledPlugins[builderType] = struct{}{} - } - } - - for _, p := range b.ProvisionerBlocks { - provisionerType := fmt.Sprintf("packer-provisioner-%s", p.PType) - if bundledStatus[provisionerType] { - bundledPlugins[provisionerType] = struct{}{} - } - } - - for _, pps := range b.PostProcessorsLists { - for _, pp := range pps { - postProcessorType := fmt.Sprintf("packer-post-processor-%s", pp.PType) - if bundledStatus[postProcessorType] { - bundledPlugins[postProcessorType] = struct{}{} - } - } - } - } - - for _, ds := range config.Datasources { - dsType := fmt.Sprintf("packer-datasource-%s", ds.Type) - if bundledStatus[dsType] { - bundledPlugins[dsType] = struct{}{} - } - } - - return compileBundledPluginList(bundledPlugins) -} - func generateRequiredPluginsBlock(plugins []string) string { if len(plugins) == 0 { return "" diff --git a/command/validate.go b/command/validate.go index 5e40a5f9530..9747dabf95c 100644 --- a/command/validate.go +++ b/command/validate.go @@ -74,8 +74,6 @@ func (c *ValidateCommand) RunContext(ctx context.Context, cla *ValidateArgs) int diags = packerStarter.Initialize(packer.InitializeOptions{ SkipDatasourcesExecution: !cla.EvaluateDatasources, }) - bundledDiags := c.DetectBundledPlugins(packerStarter) - diags = append(bundledDiags, diags...) ret = writeDiags(c.Ui, nil, diags) if ret != 0 { return ret diff --git a/command/vendored_plugins.go b/command/vendored_plugins.go deleted file mode 100644 index 5853e34cac4..00000000000 --- a/command/vendored_plugins.go +++ /dev/null @@ -1,108 +0,0 @@ -// Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: BUSL-1.1 - -package command - -import ( - "log" - - packersdk "github.com/hashicorp/packer-plugin-sdk/packer" - // Previously core-bundled components, split into their own plugins but - // still vendored with Packer for now. Importing as library instead of - // forcing use of packer init. -) - -// VendoredDatasources are datasource components that were once bundled with the -// Packer core, but are now being imported from their counterpart plugin repos -var VendoredDatasources = map[string]packersdk.Datasource{} - -// VendoredBuilders are builder components that were once bundled with the -// Packer core, but are now being imported from their counterpart plugin repos -var VendoredBuilders = map[string]packersdk.Builder{} - -// VendoredProvisioners are provisioner components that were once bundled with the -// Packer core, but are now being imported from their counterpart plugin repos -var VendoredProvisioners = map[string]packersdk.Provisioner{} - -// VendoredPostProcessors are post-processor components that were once bundled with the -// Packer core, but are now being imported from their counterpart plugin repos -var VendoredPostProcessors = map[string]packersdk.PostProcessor{} - -// bundledStatus is used to know if one of the bundled components is loaded from -// an external plugin, or from the bundled plugins. -// -// We keep track of this to produce a warning if a user relies on one -// such plugin, as they will be removed in a later version of Packer. -var bundledStatus = map[string]bool{} - -// TrackBundledPlugin marks a component as loaded from Packer's bundled plugins -// instead of from an externally loaded plugin. -// -// NOTE: `pluginName' must be in the format `packer--' -func TrackBundledPlugin(pluginName string) { - _, exists := bundledStatus[pluginName] - if !exists { - return - } - - bundledStatus[pluginName] = true -} - -var componentPluginMap = map[string]string{} - -// compileBundledPluginList returns a list of plugins to import in a config -// -// This only works on bundled plugins and serves as a way to inform users that -// they should not rely on a bundled plugin anymore, but give them recommendations -// on how to manage those plugins instead. -func compileBundledPluginList(componentMap map[string]struct{}) []string { - plugins := map[string]struct{}{} - for component := range componentMap { - plugin, ok := componentPluginMap[component] - if !ok { - log.Printf("Unknown bundled plugin component: %q", component) - continue - } - - plugins[plugin] = struct{}{} - } - - pluginList := make([]string, 0, len(plugins)) - for plugin := range plugins { - pluginList = append(pluginList, plugin) - } - - return pluginList -} - -// Upon init lets load up any plugins that were vendored manually into the default -// set of plugins. -func init() { - for k, v := range VendoredDatasources { - if _, ok := Datasources[k]; ok { - continue - } - Datasources[k] = v - } - - for k, v := range VendoredBuilders { - if _, ok := Builders[k]; ok { - continue - } - Builders[k] = v - } - - for k, v := range VendoredProvisioners { - if _, ok := Provisioners[k]; ok { - continue - } - Provisioners[k] = v - } - - for k, v := range VendoredPostProcessors { - if _, ok := PostProcessors[k]; ok { - continue - } - PostProcessors[k] = v - } -} diff --git a/config.go b/config.go index 6688d6a74a5..d4dab230e86 100644 --- a/config.go +++ b/config.go @@ -153,7 +153,6 @@ func (c *config) discoverInternalComponents() error { for builder := range command.Builders { builder := builder if !c.Plugins.Builders.Has(builder) { - command.TrackBundledPlugin(fmt.Sprintf("packer-builder-%s", builder)) bin := fmt.Sprintf("%s%splugin%spacker-builder-%s", packerPath, PACKERSPACE, PACKERSPACE, builder) c.Plugins.Builders.Set(builder, func() (packersdk.Builder, error) { @@ -165,7 +164,6 @@ func (c *config) discoverInternalComponents() error { for provisioner := range command.Provisioners { provisioner := provisioner if !c.Plugins.Provisioners.Has(provisioner) { - command.TrackBundledPlugin(fmt.Sprintf("packer-provisioner-%s", provisioner)) bin := fmt.Sprintf("%s%splugin%spacker-provisioner-%s", packerPath, PACKERSPACE, PACKERSPACE, provisioner) c.Plugins.Provisioners.Set(provisioner, func() (packersdk.Provisioner, error) { @@ -177,7 +175,6 @@ func (c *config) discoverInternalComponents() error { for postProcessor := range command.PostProcessors { postProcessor := postProcessor if !c.Plugins.PostProcessors.Has(postProcessor) { - command.TrackBundledPlugin(fmt.Sprintf("packer-post-processor-%s", postProcessor)) bin := fmt.Sprintf("%s%splugin%spacker-post-processor-%s", packerPath, PACKERSPACE, PACKERSPACE, postProcessor) c.Plugins.PostProcessors.Set(postProcessor, func() (packersdk.PostProcessor, error) { @@ -189,7 +186,6 @@ func (c *config) discoverInternalComponents() error { for dataSource := range command.Datasources { dataSource := dataSource if !c.Plugins.DataSources.Has(dataSource) { - command.TrackBundledPlugin(fmt.Sprintf("packer-datasource-%s", dataSource)) bin := fmt.Sprintf("%s%splugin%spacker-datasource-%s", packerPath, PACKERSPACE, PACKERSPACE, dataSource) c.Plugins.DataSources.Set(dataSource, func() (packersdk.Datasource, error) { From da061169bc3cf46b36f3cb55b3cec9cddc5cd22a Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 19 Oct 2023 11:00:41 -0400 Subject: [PATCH 205/381] cmd/hcl2_upgrade: Don't error when using a HashiCorp plugin that is not installed This change updates hcl2_upgrade to not flag known plugin components, those used for generating the required plugins block, when upgrading a legacy JSON template to HCL2. Any unknown plugins will be installed after running packer init on the generated template so we don't error. We may want to suggest running packer init to install any missing plugins. * Move knownPluginPrefixes into the hcl2_upgrade command --- command/hcl2_upgrade.go | 132 +++++++++++++++++++++-------------- command/hcl2_upgrade_test.go | 24 +++---- command/meta.go | 87 ----------------------- 3 files changed, 91 insertions(+), 152 deletions(-) diff --git a/command/hcl2_upgrade.go b/command/hcl2_upgrade.go index 8295e4e8ae0..3393ee86bad 100644 --- a/command/hcl2_upgrade.go +++ b/command/hcl2_upgrade.go @@ -29,42 +29,6 @@ import ( "github.com/zclconf/go-cty/cty" ) -type HCL2UpgradeCommand struct { - Meta -} - -func (c *HCL2UpgradeCommand) Run(args []string) int { - ctx, cleanup := handleTermInterrupt(c.Ui) - defer cleanup() - - cfg, ret := c.ParseArgs(args) - if ret != 0 { - return ret - } - - return c.RunContext(ctx, cfg) -} - -func (c *HCL2UpgradeCommand) ParseArgs(args []string) (*HCL2UpgradeArgs, int) { - var cfg HCL2UpgradeArgs - flags := c.Meta.FlagSet("hcl2_upgrade") - flags.Usage = func() { c.Ui.Say(c.Help()) } - cfg.AddFlagSets(flags) - if err := flags.Parse(args); err != nil { - return &cfg, 1 - } - args = flags.Args() - if len(args) != 1 { - flags.Usage() - return &cfg, 1 - } - cfg.Path = args[0] - if cfg.OutputFile == "" { - cfg.OutputFile = cfg.Path + ".pkr.hcl" - } - return &cfg, 0 -} - const ( hcl2UpgradeFileHeader = `# This file was autogenerated by the 'packer hcl2_upgrade' command. We # recommend double checking that everything is correct before going forward. We @@ -130,6 +94,59 @@ var ( strftime = false ) +// knownPlugins represent the HashiCorp maintained plugins the we can confidently +// construct a required plugins block for. +var knownPlugins = map[string]string{ + "amazon": "github.com/hashicorp/amazon", + "ansible": "github.com/hashicorp/ansible", + "azure": "github.com/hashicorp/azure", + "docker": "github.com/hashicorp/docker", + "googlecompute": "github.com/hashicorp/googlecompute", + "qemu": "github.com/hashicorp/qemu", + "vagrant": "github.com/hashicorp/vagrant", + "vmware": "github.com/hashicorp/vmware", + "vsphere": "github.com/hashicorp/vsphere", +} + +// unknownPluginName represents any plugin not in knownPlugins or bundled into Packer +const unknownPluginName string = "unknown" + +type HCL2UpgradeCommand struct { + Meta +} + +func (c *HCL2UpgradeCommand) Run(args []string) int { + ctx, cleanup := handleTermInterrupt(c.Ui) + defer cleanup() + + cfg, ret := c.ParseArgs(args) + if ret != 0 { + return ret + } + + return c.RunContext(ctx, cfg) +} + +func (c *HCL2UpgradeCommand) ParseArgs(args []string) (*HCL2UpgradeArgs, int) { + var cfg HCL2UpgradeArgs + flags := c.Meta.FlagSet("hcl2_upgrade") + flags.Usage = func() { c.Ui.Say(c.Help()) } + cfg.AddFlagSets(flags) + if err := flags.Parse(args); err != nil { + return &cfg, 1 + } + args = flags.Args() + if len(args) != 1 { + flags.Usage() + return &cfg, 1 + } + cfg.Path = args[0] + if cfg.OutputFile == "" { + cfg.OutputFile = cfg.Path + ".pkr.hcl" + } + return &cfg, 0 +} + type BlockParser interface { Parse(*template.Template) error Write(*bytes.Buffer) @@ -169,7 +186,6 @@ func (c *HCL2UpgradeCommand) RunContext(_ context.Context, cla *HCL2UpgradeArgs) tpl := core.Template // Parse blocks - packerBlock := &PackerParser{ WithAnnotations: cla.WithAnnotations, } @@ -827,28 +843,28 @@ func gatherPluginsFromTemplate(tpl *template.Template) []string { plugins := map[string]struct{}{} for _, b := range tpl.Builders { - for prefix, plugin := range knownPluginPrefixes { - if strings.HasPrefix(b.Type, prefix) { - plugins[plugin] = struct{}{} - } + name := knownPluginComponent(b.Type) + if name == unknownPluginName { + continue } + plugins[knownPlugins[name]] = struct{}{} } for _, p := range tpl.Provisioners { - for prefix, plugin := range knownPluginPrefixes { - if strings.HasPrefix(p.Type, prefix) { - plugins[plugin] = struct{}{} - } + name := knownPluginComponent(p.Type) + if name == unknownPluginName { + continue } + plugins[knownPlugins[name]] = struct{}{} } for _, pps := range tpl.PostProcessors { for _, pp := range pps { - for prefix, plugin := range knownPluginPrefixes { - if strings.HasPrefix(pp.Type, prefix) { - plugins[plugin] = struct{}{} - } + name := knownPluginComponent(pp.Type) + if name == unknownPluginName { + continue } + plugins[knownPlugins[name]] = struct{}{} } } @@ -1182,18 +1198,17 @@ type SourceParser struct { } func (p *SourceParser) Parse(tpl *template.Template) error { - var unknownBuilders []string if p.out == nil { p.out = []byte{} } + + var unknownBuilders []string for i, builderCfg := range p.Builders { sourcesContent := hclwrite.NewEmptyFile() body := sourcesContent.Body() - body.AppendNewline() - if !p.BuilderPlugins.Has(builderCfg.Type) { + if !p.BuilderPlugins.Has(builderCfg.Type) && knownPluginComponent(builderCfg.Type) == unknownPluginName { unknownBuilders = append(unknownBuilders, builderCfg.Type) - } if builderCfg.Name == "" || builderCfg.Name == builderCfg.Type { builderCfg.Name = fmt.Sprintf("autogenerated_%d", i+1) @@ -1206,9 +1221,11 @@ func (p *SourceParser) Parse(tpl *template.Template) error { p.out = append(p.out, transposeTemplatingCalls(sourcesContent.Bytes())...) } + // TODO update to output to stderr as opposed to having the command exit 1 if len(unknownBuilders) > 0 { return fmt.Errorf("unknown builder type(s): %v\n", unknownBuilders) } + return nil } @@ -1412,3 +1429,12 @@ func fixQuoting(old string) string { return string(body) } + +func knownPluginComponent(component string) string { + for prefix := range knownPlugins { + if strings.HasPrefix(component, prefix) { + return prefix + } + } + return unknownPluginName +} diff --git a/command/hcl2_upgrade_test.go b/command/hcl2_upgrade_test.go index 487d99999cb..9a3833f909e 100644 --- a/command/hcl2_upgrade_test.go +++ b/command/hcl2_upgrade_test.go @@ -19,22 +19,22 @@ func Test_hcl2_upgrade(t *testing.T) { exitCode int exitEarly bool }{ - {folder: "unknown_builder", flags: []string{}, exitCode: 1}, - {folder: "complete", flags: []string{"-with-annotations"}}, - {folder: "without-annotations", flags: []string{}}, - {folder: "minimal", flags: []string{"-with-annotations"}}, - {folder: "source-name", flags: []string{"-with-annotations"}}, - {folder: "error-cleanup-provisioner", flags: []string{"-with-annotations"}}, - {folder: "aws-access-config", flags: []string{}}, - {folder: "escaping", flags: []string{}}, - {folder: "vsphere_linux_options_and_network_interface", exitCode: 1, flags: []string{}}, + {folder: "unknown_builder", flags: []string{}, exitCode: 1}, // warn for unknown components not tracked in knownPluginPrefixes + {folder: "complete", flags: []string{"-with-annotations"}, exitCode: 0}, + {folder: "without-annotations", flags: []string{}, exitCode: 0}, + {folder: "minimal", flags: []string{"-with-annotations"}, exitCode: 0}, + {folder: "source-name", flags: []string{"-with-annotations"}, exitCode: 0}, + {folder: "error-cleanup-provisioner", flags: []string{"-with-annotations"}, exitCode: 0}, + {folder: "aws-access-config", flags: []string{}, exitCode: 0}, + {folder: "escaping", flags: []string{}, exitCode: 0}, + {folder: "vsphere_linux_options_and_network_interface", flags: []string{}, exitCode: 0}, //do not warn for known uninstalled plugins components {folder: "nonexistent", flags: []string{}, exitCode: 1, exitEarly: true}, {folder: "placeholders", flags: []string{}, exitCode: 0}, {folder: "ami_test", flags: []string{}, exitCode: 0}, {folder: "azure_shg", flags: []string{}, exitCode: 0}, - {folder: "variables-only", flags: []string{}}, - {folder: "variables-with-variables", flags: []string{}}, - {folder: "complete-variables-with-template-engine", flags: []string{}}, + {folder: "variables-only", flags: []string{}, exitCode: 0}, + {folder: "variables-with-variables", flags: []string{}, exitCode: 0}, + {folder: "complete-variables-with-template-engine", flags: []string{}, exitCode: 0}, {folder: "undeclared-variables", flags: []string{}, exitCode: 0}, {folder: "varfile-with-no-variables-block", flags: []string{}, exitCode: 0}, {folder: "bundled-plugin-used", flags: []string{}, exitCode: 0}, diff --git a/command/meta.go b/command/meta.go index 0e464ccc36d..9807df78b5d 100644 --- a/command/meta.go +++ b/command/meta.go @@ -9,7 +9,6 @@ import ( "fmt" "io" "os" - "strings" "github.com/hashicorp/hcl/v2/hclparse" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" @@ -167,89 +166,3 @@ func (m *Meta) GetConfigFromJSON(cla *MetaArgs) (packer.Handler, int) { } return core, ret } - -var knownPluginPrefixes = map[string]string{ - "amazon": "github.com/hashicorp/amazon", - "ansible": "github.com/hashicorp/ansible", - "azure": "github.com/hashicorp/azure", - "docker": "github.com/hashicorp/docker", - "googlecompute": "github.com/hashicorp/googlecompute", - "qemu": "github.com/hashicorp/qemu", - "vagrant": "github.com/hashicorp/vagrant", - "vmware": "github.com/hashicorp/vmware", - "vsphere": "github.com/hashicorp/vsphere", -} - -func (m *Meta) fixRequiredPlugins(config *hcl2template.PackerConfig) string { - plugins := map[string]struct{}{} - - for _, b := range config.Builds { - for _, b := range b.Sources { - for prefix, plugin := range knownPluginPrefixes { - if strings.HasPrefix(b.Type, prefix) { - plugins[plugin] = struct{}{} - } - } - } - - for _, p := range b.ProvisionerBlocks { - for prefix, plugin := range knownPluginPrefixes { - if strings.HasPrefix(p.PType, prefix) { - plugins[plugin] = struct{}{} - } - } - } - - for _, pps := range b.PostProcessorsLists { - for _, pp := range pps { - for prefix, plugin := range knownPluginPrefixes { - if strings.HasPrefix(pp.PType, prefix) { - plugins[plugin] = struct{}{} - } - } - } - } - } - - for _, ds := range config.Datasources { - for prefix, plugin := range knownPluginPrefixes { - if strings.HasPrefix(ds.Type, prefix) { - plugins[plugin] = struct{}{} - } - } - } - - retPlugins := make([]string, 0, len(plugins)) - for plugin := range plugins { - retPlugins = append(retPlugins, plugin) - } - - return generateRequiredPluginsBlock(retPlugins) -} - -func generateRequiredPluginsBlock(plugins []string) string { - if len(plugins) == 0 { - return "" - } - - buf := &strings.Builder{} - buf.WriteString(` -packer { - required_plugins {`) - - for _, plugin := range plugins { - pluginName := strings.Replace(plugin, "github.com/hashicorp/", "", 1) - fmt.Fprintf(buf, ` - %s = { - source = %q - version = "~> 1" - }`, pluginName, plugin) - } - - buf.WriteString(` - } -} -`) - - return buf.String() -} From 3c8de6e5ad7e57ddac084ee4f15f5b18d6064022 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 25 Oct 2023 16:45:32 -0400 Subject: [PATCH 206/381] plugins: install SHA256SUM file with 0644 perms When invoking `packer plugins install' to install a plugin, or `packer init', the checksum file would be installed with 0555 permissions. This led in turn to further attempts at installing the plugin will succeed, but the checksum file would not be updated, as it was marked non-writable by the owner of the file, leading potentially to a situation where the plugin binary and the checksum would be out-of-sync, but could not be updated unless the user changed it. To avoid such a problem, we write the checksum file with 0644 permissions, so the owner can read/write, while the other users can only read it. --- packer/plugin-getter/plugins.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index f6ca5c4abfe..c9fbd0b9d97 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -713,7 +713,7 @@ func (pr *Requirement) InstallLatest(opts InstallOptions) (*Installation, error) log.Printf("[WARNING] %v, ignoring", err) } - if err := os.WriteFile(outputFileName+checksum.Checksummer.FileExt(), []byte(hex.EncodeToString(cs)), 0555); err != nil { + if err := os.WriteFile(outputFileName+checksum.Checksummer.FileExt(), []byte(hex.EncodeToString(cs)), 0644); err != nil { err := fmt.Errorf("failed to write local binary checksum file: %s", err) errs = multierror.Append(errs, err) log.Printf("[WARNING] %v, ignoring", err) From d47cbe7f485ee4a5e5fa16042d18503bfae0bcec Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 25 Oct 2023 16:06:45 -0400 Subject: [PATCH 207/381] command: remove SHA256SUM file on plugin removal When a user invokes `packer plugins remove', the plugin binary gets removed, but not the corresponding SHA256SUM file. This patch changes this so that when a binary is removed, so is its SHA256SUM file. --- command/plugins_remove.go | 6 ++++++ command/plugins_remove_test.go | 21 ++++++--------------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/command/plugins_remove.go b/command/plugins_remove.go index 07993f21a4e..624a632e525 100644 --- a/command/plugins_remove.go +++ b/command/plugins_remove.go @@ -6,6 +6,7 @@ package command import ( "context" "crypto/sha256" + "fmt" "os" "runtime" "strings" @@ -95,6 +96,11 @@ func (c *PluginsRemoveCommand) RunContext(buildCtx context.Context, args []strin c.Ui.Error(err.Error()) return 1 } + shasumFile := fmt.Sprintf("%s_SHA256SUM", installation.BinaryPath) + if err := os.Remove(shasumFile); err != nil { + c.Ui.Error(fmt.Sprintf("failed to remove %s: %s", shasumFile, err)) + c.Ui.Error("You may need to remove it manually") + } c.Ui.Message(installation.BinaryPath) } diff --git a/command/plugins_remove_test.go b/command/plugins_remove_test.go index 61273487632..dcaafb98e5d 100644 --- a/command/plugins_remove_test.go +++ b/command/plugins_remove_test.go @@ -68,7 +68,6 @@ func TestPluginsRemoveCommand_Run(t *testing.T) { want: 0, dirFiles: map[string][]string{ "darwin": { - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64_SHA256SUM", "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64", "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64_SHA256SUM", "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe", @@ -77,7 +76,6 @@ func TestPluginsRemoveCommand_Run(t *testing.T) { "linux": { "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64", "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64_SHA256SUM", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64_SHA256SUM", "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe", "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe_SHA256SUM", }, @@ -86,13 +84,12 @@ func TestPluginsRemoveCommand_Run(t *testing.T) { "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64_SHA256SUM", "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64", "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64_SHA256SUM", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe_SHA256SUM", }, }[runtime.GOOS], expectedPackerConfigDirHashAfterRemove: map[string]string{ - "darwin": "h1:IMsWPgJZzRhn80t78zE45003gFKN6EXq562/wjaCrKE=", - "linux": "h1:Ez7SU1GZLvNGJmoTm9PeFIwHv9fvEgzZAZTMl6874iM=", - "windows": "h1:RrXlhy9tG9Bi3c2aOzjx/FLLyVNQolcY+MAr4V1etRI=", + "darwin": "h1:IKDdst8f0nMAS9T9t85fhuvDCe8lYytiZ/vooW1OWeI=", + "linux": "h1:h3t4iDYGbNtouHAJ1vPsE7d8n+6W5K4VlXTxhrQx2DA=", + "windows": "h1:NpETtGlu1hVMJe5bflPmyAhnL4iDvoIwA//uWhxtkDU=", }[runtime.GOOS], }, { @@ -118,8 +115,6 @@ func TestPluginsRemoveCommand_Run(t *testing.T) { want: 0, dirFiles: map[string][]string{ "darwin": { - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64_SHA256SUM", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_darwin_amd64_SHA256SUM", "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64", "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64_SHA256SUM", "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_linux_amd64", @@ -134,8 +129,6 @@ func TestPluginsRemoveCommand_Run(t *testing.T) { "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64_SHA256SUM", "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_darwin_amd64", "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_darwin_amd64_SHA256SUM", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64_SHA256SUM", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_linux_amd64_SHA256SUM", "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe", "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe_SHA256SUM", "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_windows_amd64.exe", @@ -150,14 +143,12 @@ func TestPluginsRemoveCommand_Run(t *testing.T) { "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64_SHA256SUM", "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_linux_amd64", "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_linux_amd64_SHA256SUM", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe_SHA256SUM", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_windows_amd64.exe_SHA256SUM", }, }[runtime.GOOS], expectedPackerConfigDirHashAfterRemove: map[string]string{ - "darwin": "h1:FBBGQ1SKngN9PvF98awv8TZcKaS+CKzJmQoS7vuSXqY=", - "linux": "h1:F8lN4Q3sv45ig8r1BLOS/wFuQQy6tSfmuIJf3fnbD5k=", - "windows": "h1:DOfH6WR1eJNLJcaL8ar8j1xu2WB7Jcn6oG7LGEvNBZI=", + "darwin": "h1:A6wlL62bUD06NF/1ND5E0o4omXhusB2T8N5ZNe2JVbg=", + "linux": "h1:SuTX0k2sknjDrL3PYgR1JajbGcs1qWIV2XvZAYSMsHw=", + "windows": "h1:NI8aJVAKdIyCXHuGDj6kTu5++6yvCz4oAswIhkL3wFc=", }[runtime.GOOS], }, { From 452e855dd9a4e593de5b92f75a424c85fc54ee86 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 23 Oct 2023 11:52:47 -0400 Subject: [PATCH 208/381] Update README * Add BUSL 1.1 license badge * Update links to learn tutorials * Removed dated getting started example --- README.md | 97 ++++++++++++------------------------------------------- 1 file changed, 21 insertions(+), 76 deletions(-) diff --git a/README.md b/README.md index c6a6703d72a..05a280b2b85 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,8 @@ # Packer - +[![License: BUSL-1.1](https://img.shields.io/badge/License-BUSL--1.1-yellow.svg)](LICENSE) [![Build Status](https://github.com/hashicorp/packer/actions/workflows/build.yml/badge.svg)](https://github.com/hashicorp/packer/actions/workflows/build.yml) [![Discuss](https://img.shields.io/badge/discuss-packer-3d89ff?style=flat)](https://discuss.hashicorp.com/c/packer) -[![PkgGoDev](https://pkg.go.dev/badge/github.com/hashicorp/packer)](https://pkg.go.dev/github.com/hashicorp/packer) -[![GoReportCard][report-badge]][report] - -[github-badge]: https://github.com/hashicorp/packer/actions/workflows/build.yml/badge.svg -[appveyor-badge]: https://ci.appveyor.com/api/projects/status/miavlgnp989e5obc/branch/master?svg=true -[godoc-badge]: https://godoc.org/github.com/hashicorp/packer?status.svg -[godoc]: https://godoc.org/github.com/hashicorp/packer -[report-badge]: https://goreportcard.com/badge/github.com/hashicorp/packer -[report]: https://goreportcard.com/report/github.com/hashicorp/packer +===

@@ -23,79 +15,31 @@ from a single source configuration. Packer is lightweight, runs on every major operating system, and is highly performant, creating machine images for multiple platforms in parallel. Packer -comes out of the box with support for many platforms, the full list of which can -be found at https://www.packer.io/docs/builders. - -Support for other platforms can be added via plugins. +supports various platforms through external plugin integrations, the full list of which can +be found at https://developer.hashicorp.com/packer/integrations. -The images that Packer creates can easily be turned into -[Vagrant](http://www.vagrantup.com) boxes. +The images that Packer creates can easily be turned into [Vagrant](http://www.vagrantup.com) boxes. ## Quick Start -**Note:** There is a great -[introduction and getting started guide](https://learn.hashicorp.com/tutorials/packer/get-started-install-cli) -for those with a bit more patience. Otherwise, the quick start below -will get you up and running quickly, at the sacrifice of not explaining some -key points. - -First, [download a pre-built Packer -binary](https://www.packer.io/downloads.html) for your operating system or -[compile Packer -yourself](https://github.com/hashicorp/packer/blob/main/.github/CONTRIBUTING.md#setting-up-go). - -After Packer is installed, create your first template, which tells Packer -what platforms to build images for and how you want to build them. In our -case, we'll create a simple AMI that has Redis pre-installed. - -Save this file as `quick-start.pkr.hcl`. Export your AWS credentials as the -`AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` environment variables. - -```hcl -variable "access_key" { - type = string - default = "${env("AWS_ACCESS_KEY_ID")}" -} - -variable "secret_key" { - type = string - default = "${env("AWS_SECRET_ACCESS_KEY")}" - sensitive = true -} - -locals { timestamp = regex_replace(timestamp(), "[- TZ:]", "") } - -source "amazon-ebs" "quick-start" { - access_key = "${var.access_key}" - ami_name = "packer-example ${local.timestamp}" - instance_type = "t2.micro" - region = "us-east-1" - secret_key = "${var.secret_key}" - source_ami = "ami-af22d9b9" - ssh_username = "ubuntu" -} - -build { - sources = ["source.amazon-ebs.quick-start"] -} -``` - -Next, tell Packer to build the image: - -``` -$ packer build quick-start.pkr.hcl -... -``` - -Packer will build an AMI according to the "quick-start" template. The AMI -will be available in your AWS account. To delete the AMI, you must manually -delete it using the [AWS console](https://console.aws.amazon.com/). Packer -builds your images, it does not manage their lifecycle. Where they go, how -they're run, etc., is up to you. +### Packer + +There is a great [introduction and getting started guide](https://learn.hashicorp.com/tutorials/packer/get-started-install-cli) +for building a Docker image on your local machine without using any paid cloud resources. + +Alternatively, you can refer to [getting started with AWS](https://developer.hashicorp.com/packer/tutorials/aws-get-started) to +learn how to build a machine image for an external cloud provider. + +### HCP Packer + +HCP Packer registry stores Packer image metadata, enabling you to track your image lifecycle. + +To get started with building an AWS machine image to HCP Packer for referencing in Terraform refer +to the collection of [HCP Packer Tutorials](https://developer.hashicorp.com/packer/tutorials/hcp-get-started). ## Documentation -Comprehensive documentation is viewable on the Packer website at https://www.packer.io/docs. +Comprehensive documentation is viewable on the Packer website at https://developer.hashicorp.com/packer/docs. ## Contributing to Packer @@ -118,3 +62,4 @@ What does **unmaintained** mean? If you are interested in maintaining an unmaintained or archived plugin, please reach out to us at packer@hashicorp.com. + From 71aa2f3f96691e43ec9e12351313345d2e6dd21a Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 23 Oct 2023 12:03:51 -0400 Subject: [PATCH 209/381] Bump required Go version in CONTRIBUTING guide --- .github/CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 86e030cce3b..60063f93b23 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -70,7 +70,7 @@ runtime in order to build packer. 1. This project always releases from the latest version of golang. [Install go](https://golang.org/doc/install#install) To properly build from -source, you need to have golang >= v1.18 +source, you need to have golang >= v1.20 ## Setting up Packer for dev From 0ec424aa250295da8e9ea7e917dacbb9dcdac4d1 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 30 Oct 2023 07:50:53 -0400 Subject: [PATCH 210/381] Fix broken link to Consul's environment variables page (#12673) --- .../templates/hcl_templates/functions/contextual/consul.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/templates/hcl_templates/functions/contextual/consul.mdx b/website/content/docs/templates/hcl_templates/functions/contextual/consul.mdx index da66b1bc44a..fff91894f2f 100644 --- a/website/content/docs/templates/hcl_templates/functions/contextual/consul.mdx +++ b/website/content/docs/templates/hcl_templates/functions/contextual/consul.mdx @@ -36,4 +36,4 @@ This will load the key stored at the path `myservice/version` from consul. The configuration for consul (address, tokens, ...) must be specified as environment variables, as specified in the -[Documentation](/consul/docs/commands#environment-variables). +[Documentation](/consul/commands#environment-variables). From c528681dde756e0f833b42014044aa02270ed7c6 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 27 Oct 2023 15:48:14 -0400 Subject: [PATCH 211/381] docs: amend HCL templates/functions docs The HCL2 docs on built-in functions contains a link to a non-existent section of the expressions page, so we update it to link to the general page, and to the string interpolation section, since it is a common use case. --- .../docs/templates/hcl_templates/functions/index.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/content/docs/templates/hcl_templates/functions/index.mdx b/website/content/docs/templates/hcl_templates/functions/index.mdx index eb64615db6f..0a9ee2a9eee 100644 --- a/website/content/docs/templates/hcl_templates/functions/index.mdx +++ b/website/content/docs/templates/hcl_templates/functions/index.mdx @@ -18,9 +18,9 @@ arguments in parentheses: max(5, 12, 9) ``` -For more details on syntax, see -[_Function Calls_](/packer/docs/templates/hcl_templates/expressions#function-calls) -on the Expressions page. +For information on invoking functions in string literals, refer to the +[String Literals](https://developer.hashicorp.com/packer/docs/templates/hcl_templates/expressions#string-literals) section +in the HCL2 expressions documentation. The HCL language does not support user-defined functions, and so only the functions built in to the language are available for use. The documentation includes all of the available built-in functions. From f221a799d8dd4b09380a6106fccba6e550650797 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Thu, 26 Oct 2023 16:46:15 -0400 Subject: [PATCH 212/381] command: error on invalid plugins remove If a user attempts to remove a plugin through the `packer plugins remove' subcommand, and the specified plugin is not installed, the command succeeds, but does nothing, and exits silently. This is not clear what is happening, and arguably, calling a command that does nothing, not even explain what went wrong, is not intuitive. Because of that, this commit changes how the command behaves in this case, stating what went wrong, and exiting with a non-zero status. --- command/plugins_remove.go | 9 +++++++++ command/plugins_remove_test.go | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/command/plugins_remove.go b/command/plugins_remove.go index 624a632e525..5c13636f5c6 100644 --- a/command/plugins_remove.go +++ b/command/plugins_remove.go @@ -104,5 +104,14 @@ func (c *PluginsRemoveCommand) RunContext(buildCtx context.Context, args []strin c.Ui.Message(installation.BinaryPath) } + if len(installations) == 0 { + errMsg := fmt.Sprintf("No installed plugin found matching the plugin constraints %s", args[0]) + if len(args) == 2 { + errMsg = fmt.Sprintf("%s %s", errMsg, args[1]) + } + c.Ui.Error(errMsg) + return 1 + } + return 0 } diff --git a/command/plugins_remove_test.go b/command/plugins_remove_test.go index dcaafb98e5d..4149ceaeb9c 100644 --- a/command/plugins_remove_test.go +++ b/command/plugins_remove_test.go @@ -47,7 +47,7 @@ func TestPluginsRemoveCommand_Run(t *testing.T) { expectedPackerConfigDirHashBeforeRemove: "h1:Q5qyAOdD43hL3CquQdVfaHpOYGf0UsZ/+wVA9Ry6cbA=", packerConfigDir: cfg.dir("1_pkr_plugins_config"), pluginSourceArgs: []string{"github.com/sylviamoss/comment", "v0.2.19"}, - want: 0, + want: 1, dirFiles: nil, expectedPackerConfigDirHashAfterRemove: "h1:Q5qyAOdD43hL3CquQdVfaHpOYGf0UsZ/+wVA9Ry6cbA=", }, @@ -158,7 +158,7 @@ func TestPluginsRemoveCommand_Run(t *testing.T) { expectedPackerConfigDirHashBeforeRemove: "h1:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", packerConfigDir: cfg.dir("3_pkr_plugins_config"), pluginSourceArgs: []string{"example.com/sylviamoss/comment", "v0.2.19"}, - want: 0, + want: 1, dirFiles: nil, expectedPackerConfigDirHashAfterRemove: "h1:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", }, From 19c14fd1e2be96f5d7e4310ce1eb7f40557ba292 Mon Sep 17 00:00:00 2001 From: ygXXII <16456434+ygxxii@users.noreply.github.com> Date: Thu, 2 Nov 2023 17:36:36 +0800 Subject: [PATCH 213/381] docs: fix aws_secretsmanager Title Name (#12678) Just a simple doc title fix. --- .../hcl_templates/functions/contextual/aws_secretsmanager.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/templates/hcl_templates/functions/contextual/aws_secretsmanager.mdx b/website/content/docs/templates/hcl_templates/functions/contextual/aws_secretsmanager.mdx index edc09053a52..73d5b06fcf5 100644 --- a/website/content/docs/templates/hcl_templates/functions/contextual/aws_secretsmanager.mdx +++ b/website/content/docs/templates/hcl_templates/functions/contextual/aws_secretsmanager.mdx @@ -5,7 +5,7 @@ description: >- stores. --- -# `aws_secretsmanager_key` Function +# `aws_secretsmanager` Function Secrets can be read from the [AWS Secrets Manager](https://aws.amazon.com/secrets-manager/) and used within your template From 98176f54297b3d6fde4dee8aec08c94de71a67fd Mon Sep 17 00:00:00 2001 From: hc-github-team-es-release-engineering <82989873+hc-github-team-es-release-engineering@users.noreply.github.com> Date: Tue, 7 Nov 2023 16:40:47 -0800 Subject: [PATCH 214/381] Update LICENSE text --- LICENSE | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/LICENSE b/LICENSE index 73957dc7d75..f7d6cdd08cf 100644 --- a/LICENSE +++ b/LICENSE @@ -5,10 +5,40 @@ Parameters Licensor: HashiCorp, Inc. Licensed Work: Packer 1.10.0. The Licensed Work is (c) 2023 HashiCorp, Inc. -Additional Use Grant: You may make production use of the Licensed Work, - provided such use does not include offering the Licensed Work - to third parties on a hosted or embedded basis which is - competitive with HashiCorp's products. +Additional Use Grant: You may make production use of the Licensed Work, provided + Your use does not include offering the Licensed Work to third + parties on a hosted or embedded basis in order to compete with + HashiCorp’s paid version(s) of the Licensed Work. For purposes + of this license: + + A “competitive offering” is a Product that is offered to third + parties on a paid basis, including through paid support + arrangements, that significantly overlaps with the capabilities + of HashiCorp’s paid version(s) of the Licensed Work. If Your + Product is not a competitive offering when You first make it + generally available, it will not become a competitive offering + later due to HashiCorp releasing a new version of the Licensed + Work with additional capabilities. In addition, Products that + are not provided on a paid basis are not competitive. + + “Product” means software that is offered to end users to manage + in their own environments or offered as a service on a hosted + basis. + + “Embedded” means including the source code or executable code + from the Licensed Work in a competitive offering. “Embedded” + also means packaging the competitive offering in such a way + that the Licensed Work must be accessed or downloaded for the + competitive offering to operate. + + Hosting or using the Licensed Work(s) for internal purposes + within an organization is not considered a competitive + offering. HashiCorp considers your organization to include all + of your affiliates under common control. + + For binding interpretive guidance on using HashiCorp products + under the Business Source License, please visit our FAQ. + (https://www.hashicorp.com/license-faq) Change Date: Four years from the date the Licensed Work is published. Change License: MPL 2.0 From edaa10e0a03e85b24846e3581ca080e0086c15b3 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 8 Nov 2023 14:56:08 -0500 Subject: [PATCH 215/381] Update CHANGELOG --- CHANGELOG.md | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5810f01c34d..aa0b870091e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,44 @@ -## 1.9.5 (Upcoming) +## 1.10.0 (Upcoming) + +### NOTES: +This release contains breaking changes for those users who may be relying on + Packer bundling plugins for Amazon, Ansibe, Azure, Docker, GoogleCompute, + Qemu, Vagrant, VirtualBox, VMmare, and vSphere. As specified in the [recent + announcement](https://www.hashicorp.com/blog/announcing-the-removal-of- + bundled- plugins-in-hashicorp-packer) the plugins will no longer be shipped + alongside Packer. Users are encouraged to use `packer init` or `packer + plugins [...]` for managing required plugins needed for executing their + builds.[GH-12660](https://github.com/hashicorp/packer/pull/12660) + +### PLUGINS: + +* Removed all HashiCorp vendored plugins from being bundled into the Packer binary. + [GH-12660](https://github.com/hashicorp/packer/pull/12660) +* packer-plugin-hcloud: The Hetzner Cloud plugin has been handed over to the + Hetzner integrations team. New releases for this plugin are available at + https://github.com/hetznercloud/packer-plugin-hcloud. Existing references + to the plugin will continue to work but users are advised to update the + `required_plugins` block to use the new plugin source address. + ``` + required_plugins { + parallels = { + source = "github.com/hetznercloud/hcloud" + version = "~> 1" + } + } + ``` + +### IMPROVEMENTS: +* cmd/plugins: install SHA256SUM file with 0644 perms. + [GH-12265](https://github.com/hashicorp/packer/pull/12661) +* cmd/plugins: remove SHA256SUM file on plugin removal. + [GH-12267](https://github.com/hashicorp/packer/pull/12667) +* cmd/plugins: remove will error if it fails to find the plugin being selected + for removal. [GH-12269](https://github.com/hashicorp/packer/pull/12669) + +### BUG FIXES: +* Bump Go to 1.20.10 to Address CVE-2023-44487 / CVE-2023-39325. + [GH-12261](https://github.com/hashicorp/packer/pull/12661) ## 1.9.4 (August 18, 2023) From c703d2e73d7429382fada8db51fc01b0e0127e82 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 8 Nov 2023 15:07:02 -0500 Subject: [PATCH 216/381] Fix notes section in CHANGELOG --- CHANGELOG.md | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index aa0b870091e..5604f0603c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,21 +1,29 @@ ## 1.10.0 (Upcoming) ### NOTES: -This release contains breaking changes for those users who may be relying on - Packer bundling plugins for Amazon, Ansibe, Azure, Docker, GoogleCompute, - Qemu, Vagrant, VirtualBox, VMmare, and vSphere. As specified in the [recent - announcement](https://www.hashicorp.com/blog/announcing-the-removal-of- - bundled- plugins-in-hashicorp-packer) the plugins will no longer be shipped - alongside Packer. Users are encouraged to use `packer init` or `packer - plugins [...]` for managing required plugins needed for executing their - builds.[GH-12660](https://github.com/hashicorp/packer/pull/12660) +This release contains breaking changes for those users who may be relying on plugins previously bundled into Packer. +As specified in the [Bundled Plugins Removal announcement](https://www.hashicorp.com/blog/announcing-the-removal-of-bundled-plugins-in-hashicorp-packer) HashiCorp maintained plugins +will no longer be shipped with Packer. Users are encouraged to use `packer init` or `packer plugins [...]` for managing required plugins needed for executing their +builds. [GH-12660](https://github.com/hashicorp/packer/pull/12660) + +The affected plugins include: +* packer-plugin-amazon +* packer-plugin-ansible +* packer-plugin-azure +* packer-plugin-docker +* packer-plugin-googlcompute +* packer-plugin-qemu +* packer-plugin-vagrant +* packer-plugin-virtualbox +* packer-plugin-vmware +* packer-plugin-vsphere ### PLUGINS: * Removed all HashiCorp vendored plugins from being bundled into the Packer binary. - [GH-12660](https://github.com/hashicorp/packer/pull/12660) +[GH-12660](https://github.com/hashicorp/packer/pull/12660) * packer-plugin-hcloud: The Hetzner Cloud plugin has been handed over to the - Hetzner integrations team. New releases for this plugin are available at + Hetzner integrations team. New releases for this plugin are available at https://github.com/hetznercloud/packer-plugin-hcloud. Existing references to the plugin will continue to work but users are advised to update the `required_plugins` block to use the new plugin source address. From b3280493e04acc421b4f1e469c7458d0e312024d Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 8 Nov 2023 18:51:07 -0500 Subject: [PATCH 217/381] Update CHANGELOG --- CHANGELOG.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5604f0603c8..b9e28b19262 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -38,15 +38,15 @@ The affected plugins include: ### IMPROVEMENTS: * cmd/plugins: install SHA256SUM file with 0644 perms. - [GH-12265](https://github.com/hashicorp/packer/pull/12661) + [GH-12665](https://github.com/hashicorp/packer/pull/12665) * cmd/plugins: remove SHA256SUM file on plugin removal. - [GH-12267](https://github.com/hashicorp/packer/pull/12667) + [GH-12666](https://github.com/hashicorp/packer/pull/12666) * cmd/plugins: remove will error if it fails to find the plugin being selected - for removal. [GH-12269](https://github.com/hashicorp/packer/pull/12669) + for removal. [GH-12669](https://github.com/hashicorp/packer/pull/12669) ### BUG FIXES: * Bump Go to 1.20.10 to Address CVE-2023-44487 / CVE-2023-39325. - [GH-12261](https://github.com/hashicorp/packer/pull/12661) + [GH-12661](https://github.com/hashicorp/packer/pull/12661) ## 1.9.4 (August 18, 2023) From 360df8f25700f008096fcbb9ec2e0a0dce52f3e7 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 8 Nov 2023 18:53:35 -0500 Subject: [PATCH 218/381] scripts/prepare_changelog: Replace python for with gh and jq commands This change uses the GitHub CLI to obtain all pull-requests merged after the latest release to help with updating the Packer CHANGELOG. --- scripts/prepare_changelog.sh | 64 +++++++++++------------------------- 1 file changed, 19 insertions(+), 45 deletions(-) diff --git a/scripts/prepare_changelog.sh b/scripts/prepare_changelog.sh index be9049eca78..851d4ffd3ac 100755 --- a/scripts/prepare_changelog.sh +++ b/scripts/prepare_changelog.sh @@ -4,78 +4,52 @@ LAST_RELEASE=$1 -DO_PR_CHECK=1 set -o pipefail -is_doc_or_tech_debt_pr(){ - if ! (($+commands[jq])); then - DO_PR_CHECK=0 - echo "jq not found" - return 1 - fi - out=$(python3 -m json.tool < pull.json \ - | jq '[.labels[].name == "docs" or .labels[].name == "tech-debt" or .labels[].name == "website"] | any') - grep -q true <<< $out - return $? -} - if [ -z $LAST_RELEASE ]; then echo "you need to give the previous release version. prepare_changelog.sh v" exit 1 fi +if [ -z "$(which jq)" ]; then + echo "jq command not found" + return 1 +fi + +if [ -z "$(which jq)" ]; then + echo "gh command not found" + return 1 +fi + get_prs(){ - # git log v0.10.2...c3861d167533fb797b0fae0c380806625712e5f7 | - git log HEAD...${LAST_RELEASE} --first-parent --oneline --grep="Merge pull request #[0-9]\+" --grep="(#[0-9]\+)$" | - grep -o "#\([0-9]\+\)" | awk -F\# '{print $2}' | while read line + release_time="$(gh release view --json "createdAt" --jq '.createdAt' ${LAST_RELEASE})" + gh pr list -s merged -S "merged:>=$release_time -label:documentation -label:automated -label:tech-debt -label:website -label:legal -label:docs -author:hc-github-team-packer" --json "number" --jq '.[]|.number' \ + | while read line do - grep -q "GH-${line}" CHANGELOG.md - if [ $? -ne 0 ]; then + if grep -q "GH-${line}" CHANGELOG.md; then echo $line fi done | while read PR_NUM do - if [[ -z "${GITHUB_TOKEN}" ]] || [[ -z "${GITHUB_USERNAME}" ]] ; then - out=$(curl -fsS "https://api.github.com/repos/hashicorp/packer/issues/${PR_NUM}" -o pull.json) - else - # authenticated call - out=$(curl -u ${GITHUB_USERNAME}:${GITHUB_TOKEN} -fsS "https://api.github.com/repos/hashicorp/packer/issues/${PR_NUM}" -o pull.json) - fi - exy="$?" - if [ $exy -ne 0 ]; then + out=$(gh pr view ${PR_NUM} --json "title,labels,url" > pull.json) + if [ "$?" -ne 0 ]; then echo "bad response from github: manually check PR ${PR_NUM}" continue fi - if (($DO_PR_CHECK)) && is_doc_or_tech_debt_pr; then - echo "Skipping PR ${PR_NUM}: labeled as tech debt, docs or website. (waiting a second so we don't get rate-limited...)" - continue - fi - echo "$(python3 -m json.tool < pull.json | jq -r '.title') - [GH-${PR_NUM}](https://github.com/hashicorp/packer/pull/${PR_NUM})" + echo "$(jq -r '.title' < pull.json) - [GH-${PR_NUM}](https://github.com/hashicorp/packer/pull/${PR_NUM})" + rm -f pull.json done } -#is_doc_or_tech_debt_pr 52061111 -# is_doc_or_tech_debt_pr 5206 # non-doc pr -#is_doc_or_tech_debt_pr 5434 # doc pr -#echo $? -#exit - -# prpid=$! -# trap 'kill -9 ${prpid}; exit' INT TERM - get_prs | while read line; do echo $line if [[ "$line" =~ "bad" ]]; then exit 1 - elif [[ "$line" =~ "Skipping" ]]; then - sleep 1 # GH will rate limit us if we have several in a row - continue fi - rm -f pull.json + echo "Press enter to continue with next entry.." vared -ch ok done - #TODO: just generate it automatically using PR titles and tags From 631ed14dc65c2687fa0d22093a2eb27b8d738f78 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 10 Nov 2023 09:34:33 -0500 Subject: [PATCH 219/381] scripts/prepare_changelog:Update to output entries not in CHANGELOG.md --- scripts/prepare_changelog.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scripts/prepare_changelog.sh b/scripts/prepare_changelog.sh index 851d4ffd3ac..a10b9972b6a 100755 --- a/scripts/prepare_changelog.sh +++ b/scripts/prepare_changelog.sh @@ -28,8 +28,9 @@ get_prs(){ | while read line do if grep -q "GH-${line}" CHANGELOG.md; then - echo $line + continue fi + echo $line done | while read PR_NUM do out=$(gh pr view ${PR_NUM} --json "title,labels,url" > pull.json) @@ -48,7 +49,7 @@ get_prs | while read line; do if [[ "$line" =~ "bad" ]]; then exit 1 fi - echo "Press enter to continue with next entry.." + echo "Press enter to continue with next entry." vared -ch ok done From 4b1553c7da7fa7bf94cbfcd6177ef4620014a35f Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 8 Nov 2023 21:25:00 -0500 Subject: [PATCH 220/381] Bump Go to 1.20.11 to mitigate against insecure Windows path parsing This change address CVE-2023-45283. There have been no reported issues with Packer but we are bumping given its usage of the path/filepath pkg. --- .go-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.go-version b/.go-version index acdfc7930c8..4bb1a22f8ec 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.20.10 +1.20.11 From 85e9e22bde643f2149457810f13390ba5ca9fe44 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 10 Nov 2023 10:27:40 -0500 Subject: [PATCH 221/381] Update CHANGELOG --- CHANGELOG.md | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b9e28b19262..90ae33569dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,6 +18,13 @@ The affected plugins include: * packer-plugin-vmware * packer-plugin-vsphere +### SECURITY: +* Bump Go to 1.20.11 CVE-2023-45283. There have been no reported issues with + Packer but we are bumping given its usage of the path/filepath pkg. + [GH-12690](https://github.com/hashicorp/packer/pull/12690) +* Bump Go to 1.20.10 to Address CVE-2023-44487 / CVE-2023-39325. + [GH-12661](https://github.com/hashicorp/packer/pull/12661) + ### PLUGINS: * Removed all HashiCorp vendored plugins from being bundled into the Packer binary. @@ -37,16 +44,21 @@ The affected plugins include: ``` ### IMPROVEMENTS: +* cmd/init: warn users running `packer ini` on configuration templates with a + missing required_plugins blocks. + [GH-12638](https://github.com/hashicorp/packer/pull/12638) * cmd/plugins: install SHA256SUM file with 0644 perms. [GH-12665](https://github.com/hashicorp/packer/pull/12665) * cmd/plugins: remove SHA256SUM file on plugin removal. [GH-12666](https://github.com/hashicorp/packer/pull/12666) * cmd/plugins: remove will error if it fails to find the plugin being selected for removal. [GH-12669](https://github.com/hashicorp/packer/pull/12669) - -### BUG FIXES: -* Bump Go to 1.20.10 to Address CVE-2023-44487 / CVE-2023-39325. - [GH-12661](https://github.com/hashicorp/packer/pull/12661) +* core/hcl: rework to remove the recursive execution of data sources with other + data source dependencies. + [GH-12608](https://github.com/hashicorp/packer/pull/12608) +* core: Update version output for `packer -v` and `packer --version` to match + `packer version`. + [GH-12569](https://github.com/hashicorp/packer/pull/12569) ## 1.9.4 (August 18, 2023) From 2b7bfaea571b8e2d25ec04124436f69a38530623 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 10 Nov 2023 10:32:10 -0500 Subject: [PATCH 222/381] Apply suggestions from code review Co-authored-by: Lucas Bajolet <105649352+lbajolet-hashicorp@users.noreply.github.com> --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 90ae33569dc..447935f4a91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,8 +44,8 @@ The affected plugins include: ``` ### IMPROVEMENTS: -* cmd/init: warn users running `packer ini` on configuration templates with a - missing required_plugins blocks. +* cmd/init: warn users running `packer init` on configuration templates with a + missing `required_plugins` blocks. [GH-12638](https://github.com/hashicorp/packer/pull/12638) * cmd/plugins: install SHA256SUM file with 0644 perms. [GH-12665](https://github.com/hashicorp/packer/pull/12665) From ebc1317307cd3c702d106e8a8a44061cde3ee23e Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 10 Nov 2023 11:39:23 -0500 Subject: [PATCH 223/381] Bumped product version to 1.11.0. --- version/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version/VERSION b/version/VERSION index 81c871de46b..169f19b4901 100644 --- a/version/VERSION +++ b/version/VERSION @@ -1 +1 @@ -1.10.0 +1.11.0 \ No newline at end of file From a118b5489e8d0600f6864b394b36aa6e1f00431b Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 10 Nov 2023 11:42:44 -0500 Subject: [PATCH 224/381] Bumped product version to 1.11.0 --- version/version.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version/version.go b/version/version.go index 2df08d2d71b..a7eec6fd4bc 100644 --- a/version/version.go +++ b/version/version.go @@ -22,7 +22,7 @@ var ( // A pre-release marker for the version can also be specified (e.g -dev). If this is omitted // The main version number that is being run at the moment. - Version = "1.10.0" + Version = "1.11.0" // A pre-release marker for the version. If this is "" (empty string) // then it means that it is a final release. Otherwise, this is a pre-release From c59edfa433c55fdee2a701c4e1132af3847f58a9 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 10 Nov 2023 14:13:16 -0500 Subject: [PATCH 225/381] Remove dangling upgrade external plugins script --- scripts/upgrade_plugins.sh | 68 -------------------------------------- 1 file changed, 68 deletions(-) delete mode 100755 scripts/upgrade_plugins.sh diff --git a/scripts/upgrade_plugins.sh b/scripts/upgrade_plugins.sh deleted file mode 100755 index 961f8ed804d..00000000000 --- a/scripts/upgrade_plugins.sh +++ /dev/null @@ -1,68 +0,0 @@ -#!/bin/zsh -# Copyright (c) HashiCorp, Inc. -# SPDX-License-Identifier: BUSL-1.1 - - -## This script is to be run before a Packer release in order to update -## all vendored plugins to the latest available release. -## The SDK is included in the plugin list and will be upgraded as well if a -## newest version is available. -## This script should be run in packer's root. - -declare -a plugins=( - "hashicorp/packer-plugin-alicloud" - "hashicorp/packer-plugin-amazon" - "hashicorp/packer-plugin-ansible" - "hashicorp/packer-plugin-azure" - "hashicorp/packer-plugin-chef" - "hashicorp/packer-plugin-cloudstack" - "hashicorp/packer-plugin-converge" - "digitalocean/packer-plugin-digitalocean" - "hashicorp/packer-plugin-docker" - "hashicorp/packer-plugin-googlecompute" - "hashicorp/packer-plugin-hcloud" - "hashicorp/packer-plugin-hyperone" - "hashicorp/packer-plugin-hyperv" - "hashicorp/packer-plugin-jdcloud" - "hashicorp/packer-plugin-linode" - "hashicorp/packer-plugin-lxc" - "hashicorp/packer-plugin-lxd" - "hashicorp/packer-plugin-ncloud" - "hashicorp/packer-plugin-openstack" - "hashicorp/packer-plugin-oneandone" - "hashicorp/packer-plugin-parallels" - "hashicorp/packer-plugin-profitbricks" - "hashicorp/packer-plugin-proxmox" - "hashicorp/packer-plugin-puppet" - "hashicorp/packer-plugin-qemu" - "hashicorp/packer-plugin-sdk" - "hashicorp/packer-plugin-tencentcloud" - "hashicorp/packer-plugin-triton" - "hashicorp/packer-plugin-ucloud" - "hashicorp/packer-plugin-vagrant" - "hashicorp/packer-plugin-virtualbox" - "hashicorp/packer-plugin-vmware" - "hashicorp/packer-plugin-vsphere" - "hashicorp/packer-plugin-yandex" -) - -## now loop through the above plugin array -## update the plugins and the SDK to the latest available version -for i in "${plugins[@]}" -do - happy=false - while ! $happy - do - echo "upgrading $i" - output=$(go get -d github.com/$i) - happy=true - if [[ $output == *"443: Connection refused"* ]]; then - echo "Try again after 5 seconds" - sleep 5 - happy=false - fi - done - sleep 1 -done - -go mod tidy -compat=1.18 From cc22e282ac110b291301f0364d958ddf072544e1 Mon Sep 17 00:00:00 2001 From: hc-github-team-packer <84862055+hc-github-team-packer@users.noreply.github.com> Date: Fri, 10 Nov 2023 16:29:36 -0500 Subject: [PATCH 226/381] Bumped product version to 1.12.0. --- version/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version/VERSION b/version/VERSION index 169f19b4901..32bd932f355 100644 --- a/version/VERSION +++ b/version/VERSION @@ -1 +1 @@ -1.11.0 \ No newline at end of file +1.12.0 \ No newline at end of file From c138ce533e5af2791daa0b5d909139c61c501602 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 10 Nov 2023 16:32:19 -0500 Subject: [PATCH 227/381] Revert "Bumped product version to 1.12.0." This reverts commit cc22e282ac110b291301f0364d958ddf072544e1. The action successfully works now for the future release branch. --- version/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version/VERSION b/version/VERSION index 32bd932f355..169f19b4901 100644 --- a/version/VERSION +++ b/version/VERSION @@ -1 +1 @@ -1.12.0 \ No newline at end of file +1.11.0 \ No newline at end of file From c245b1fb7c87fdf2e655887d49f8ad75c59b7e2b Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 15 Nov 2023 09:26:29 -0500 Subject: [PATCH 228/381] deps: Bump github.com/hashicorp/hcp-sdk-go to v0.73.0 * Updates cloud-resource-management API to use sable * Removes duplicate imports of the same SDK packages --- go.mod | 23 ++++++++-------- go.sum | 46 +++++++++++++++++--------------- internal/hcp/api/client.go | 14 +++++----- internal/hcp/api/client_test.go | 2 +- internal/hcp/api/mock_service.go | 15 +++++------ 5 files changed, 51 insertions(+), 49 deletions(-) diff --git a/go.mod b/go.mod index 5e353017141..79fa0f030cb 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e github.com/dsnet/compress v0.0.1 github.com/go-git/go-git/v5 v5.4.2 - github.com/go-openapi/runtime v0.25.0 + github.com/go-openapi/runtime v0.26.0 github.com/gobwas/glob v0.2.3 github.com/gofrs/flock v0.8.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect @@ -22,7 +22,7 @@ require ( github.com/hashicorp/go-uuid v1.0.2 github.com/hashicorp/go-version v1.6.0 github.com/hashicorp/hcl/v2 v2.14.1 - github.com/hashicorp/hcp-sdk-go v0.36.0 + github.com/hashicorp/hcp-sdk-go v0.73.0 github.com/hashicorp/packer-plugin-amazon v1.2.1 github.com/hashicorp/packer-plugin-sdk v0.4.0 github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 @@ -41,14 +41,14 @@ require ( github.com/pierrec/lz4 v2.6.1+incompatible // indirect github.com/pkg/sftp v1.13.2 // indirect github.com/posener/complete v1.2.3 - github.com/stretchr/testify v1.8.2 + github.com/stretchr/testify v1.8.4 github.com/ulikunitz/xz v0.5.10 github.com/zclconf/go-cty v1.10.0 github.com/zclconf/go-cty-yaml v1.0.1 golang.org/x/crypto v0.14.0 // indirect golang.org/x/mod v0.8.0 golang.org/x/net v0.17.0 - golang.org/x/oauth2 v0.11.0 + golang.org/x/oauth2 v0.13.0 golang.org/x/sync v0.3.0 golang.org/x/sys v0.13.0 // indirect golang.org/x/term v0.13.0 // indirect @@ -59,7 +59,7 @@ require ( ) require ( - github.com/go-openapi/strfmt v0.21.3 + github.com/go-openapi/strfmt v0.21.7 github.com/oklog/ulid v1.3.1 github.com/pierrec/lz4/v4 v4.1.18 github.com/shirou/gopsutil/v3 v3.23.4 @@ -83,7 +83,7 @@ require ( github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect github.com/armon/go-metrics v0.3.9 // indirect github.com/armon/go-radix v1.0.0 // indirect - github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect + github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/aws/aws-sdk-go v1.44.114 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.1.0 // indirect @@ -100,12 +100,12 @@ require ( github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-openapi/analysis v0.21.4 // indirect - github.com/go-openapi/errors v0.20.3 // indirect + github.com/go-openapi/errors v0.20.4 // indirect github.com/go-openapi/jsonpointer v0.19.5 // indirect github.com/go-openapi/jsonreference v0.20.0 // indirect github.com/go-openapi/loads v0.21.2 // indirect github.com/go-openapi/spec v0.20.8 // indirect - github.com/go-openapi/swag v0.22.3 // indirect + github.com/go-openapi/swag v0.22.4 // indirect github.com/go-openapi/validate v0.22.1 // indirect github.com/gofrs/uuid v4.0.0+incompatible // indirect github.com/golang/protobuf v1.5.3 // indirect @@ -167,11 +167,12 @@ require ( github.com/tklauser/numcpus v0.6.0 // indirect github.com/ugorji/go/codec v1.2.6 // indirect github.com/xanzy/ssh-agent v0.3.0 // indirect + github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect - go.mongodb.org/mongo-driver v1.11.0 // indirect + go.mongodb.org/mongo-driver v1.11.3 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/otel v1.11.1 // indirect - go.opentelemetry.io/otel/trace v1.11.1 // indirect + go.opentelemetry.io/otel v1.14.0 // indirect + go.opentelemetry.io/otel/trace v1.14.0 // indirect golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/appengine v1.6.7 // indirect diff --git a/go.sum b/go.sum index f693b73893e..deccf73b146 100644 --- a/go.sum +++ b/go.sum @@ -70,8 +70,8 @@ github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgI github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d h1:Byv0BzEl3/e6D5CLfI0j/7hiIEtvGVFPCZ7Ei2oq8iQ= -github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= +github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= +github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/aws/aws-sdk-go v1.25.37/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.30.27/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.31.9/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= @@ -187,8 +187,8 @@ github.com/go-openapi/analysis v0.21.4/go.mod h1:4zQ35W4neeZTqh3ol0rv/O8JBbka9Qy github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.19.9/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/errors v0.20.3 h1:rz6kiC84sqNQoqrtulzaL/VERgkoCyB6WdEkc2ujzUc= -github.com/go-openapi/errors v0.20.3/go.mod h1:Z3FlZ4I8jEGxjUK+bugx3on2mIAk4txuAOhlsB1FSgk= +github.com/go-openapi/errors v0.20.4 h1:unTcVm6PispJsMECE3zWgvG4xTiKda1LIR5rCRWLG6M= +github.com/go-openapi/errors v0.20.4/go.mod h1:Z3FlZ4I8jEGxjUK+bugx3on2mIAk4txuAOhlsB1FSgk= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= @@ -198,21 +198,22 @@ github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXym github.com/go-openapi/loads v0.21.1/go.mod h1:/DtAMXXneXFjbQMGEtbamCZb+4x7eGwkvZCvBmwUG+g= github.com/go-openapi/loads v0.21.2 h1:r2a/xFIYeZ4Qd2TnGpWDIQNcP80dIaZgf704za8enro= github.com/go-openapi/loads v0.21.2/go.mod h1:Jq58Os6SSGz0rzh62ptiu8Z31I+OTHqmULx5e/gJbNw= -github.com/go-openapi/runtime v0.25.0 h1:7yQTCdRbWhX8vnIjdzU8S00tBYf7Sg71EBeorlPHvhc= -github.com/go-openapi/runtime v0.25.0/go.mod h1:Ux6fikcHXyyob6LNWxtE96hWwjBPYF0DXgVFuMTneOs= +github.com/go-openapi/runtime v0.26.0 h1:HYOFtG00FM1UvqrcxbEJg/SwvDRvYLQKGhw2zaQjTcc= +github.com/go-openapi/runtime v0.26.0/go.mod h1:QgRGeZwrUcSHdeh4Ka9Glvo0ug1LC5WyE+EV88plZrQ= github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= github.com/go-openapi/spec v0.20.6/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= github.com/go-openapi/spec v0.20.8 h1:ubHmXNY3FCIOinT8RNrrPfGc9t7I1qhPtdOGoG2AxRU= github.com/go-openapi/spec v0.20.8/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= github.com/go-openapi/strfmt v0.21.0/go.mod h1:ZRQ409bWMj+SOgXofQAGTIo2Ebu72Gs+WaRADcS5iNg= github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k= -github.com/go-openapi/strfmt v0.21.3 h1:xwhj5X6CjXEZZHMWy1zKJxvW9AfHC9pkyUjLvHtKG7o= github.com/go-openapi/strfmt v0.21.3/go.mod h1:k+RzNO0Da+k3FrrynSNN8F7n/peCmQQqbbXjtDfvmGg= +github.com/go-openapi/strfmt v0.21.7 h1:rspiXgNWgeUzhjo1YU01do6qsahtJNByjLVbPLNHb8k= +github.com/go-openapi/strfmt v0.21.7/go.mod h1:adeGTkxE44sPyLk0JV235VQAO/ZXUr8KAzYjclFs3ew= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= -github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-openapi/swag v0.22.4 h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogBU= +github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-openapi/validate v0.22.1 h1:G+c2ub6q47kfX1sOBLwIQwzBVt8qmOAARyo/9Fqs9NU= github.com/go-openapi/validate v0.22.1/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= @@ -389,8 +390,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.14.1 h1:x0BpjfZ+CYdbiz+8yZTQ+gdLO7IXvOut7Da+XJayx34= github.com/hashicorp/hcl/v2 v2.14.1/go.mod h1:e4z5nxYlWNPdDSNYX+ph14EvWYMFm3eP0zIUqPc2jr0= -github.com/hashicorp/hcp-sdk-go v0.36.0 h1:B1qvnsStyYQyuEudgPrpMdheEC/zTeHRhyF1UwpYTJQ= -github.com/hashicorp/hcp-sdk-go v0.36.0/go.mod h1:mJHPFD1Rs62bieKNVXUiFQlF76NCGACKqHu9a8ihcFk= +github.com/hashicorp/hcp-sdk-go v0.73.0 h1:KjizNN/53nu4YkrDZ24xKjy4EgFt9b3nk1vgfAmgwUk= +github.com/hashicorp/hcp-sdk-go v0.73.0/go.mod h1:k/wgUsKSa2OzWBM5/Pj5ST0YwFGpgC4O5EtCq882jSw= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= github.com/hashicorp/memberlist v0.2.2 h1:5+RffWKwqJ71YPu9mWsF7ZOscZmwfasdA8kbdC7AO2g= @@ -653,8 +654,9 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tklauser/go-sysconf v0.3.11 h1:89WgdJhk5SNwJfu+GKyYveZ4IaJ7xAkecBo+KdJV0CM= @@ -679,6 +681,8 @@ github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+ github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= @@ -692,16 +696,16 @@ github.com/zclconf/go-cty-yaml v1.0.1/go.mod h1:IP3Ylp0wQpYm50IHK8OZWKMu6sPJIUgK go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8= -go.mongodb.org/mongo-driver v1.11.0 h1:FZKhBSTydeuffHj9CBjXlR8vQLee1cQyTWYPA6/tqiE= -go.mongodb.org/mongo-driver v1.11.0/go.mod h1:s7p5vEtfbeR1gYi6pnj3c3/urpbLv2T5Sfd6Rp2HBB8= +go.mongodb.org/mongo-driver v1.11.3 h1:Ql6K6qYHEzB6xvu4+AU0BoRoqf9vFPcc4o7MUIdPW8Y= +go.mongodb.org/mongo-driver v1.11.3/go.mod h1:PTSz5yu21bkT/wXpkS7WR5f0ddqw5quethTUn9WM+2g= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/otel v1.11.1 h1:4WLLAmcfkmDk2ukNXJyq3/kiz/3UzCaYq6PskJsaou4= -go.opentelemetry.io/otel v1.11.1/go.mod h1:1nNhXBbWSD0nsL38H6btgnFN2k4i0sNLHNNMZMSbUGE= -go.opentelemetry.io/otel/sdk v1.11.1 h1:F7KmQgoHljhUuJyA+9BiU+EkJfyX5nVVF4wyzWZpKxs= -go.opentelemetry.io/otel/trace v1.11.1 h1:ofxdnzsNrGBYXbP7t7zpUK281+go5rF7dvdIZXF8gdQ= -go.opentelemetry.io/otel/trace v1.11.1/go.mod h1:f/Q9G7vzk5u91PhbmKbg1Qn0rzH1LJ4vbPHFGkTPtOk= +go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM= +go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU= +go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY= +go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M= +go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -773,8 +777,8 @@ golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.11.0 h1:vPL4xzxBM4niKCW6g9whtaWVXTJf1U5e4aZxxFx/gbU= -golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= +golang.org/x/oauth2 v0.13.0 h1:jDDenyj+WgFtmV3zYVoi8aE2BwtXFLWOA67ZfNWftiY= +golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= diff --git a/internal/hcp/api/client.go b/internal/hcp/api/client.go index 5c8c851ae40..97a749a33bf 100644 --- a/internal/hcp/api/client.go +++ b/internal/hcp/api/client.go @@ -11,12 +11,10 @@ import ( "os" "time" - "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/client/packer_service" packerSvc "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/client/packer_service" - organizationSvc "github.com/hashicorp/hcp-sdk-go/clients/cloud-resource-manager/preview/2019-12-10/client/organization_service" - projectSvc "github.com/hashicorp/hcp-sdk-go/clients/cloud-resource-manager/preview/2019-12-10/client/project_service" - "github.com/hashicorp/hcp-sdk-go/clients/cloud-resource-manager/preview/2019-12-10/models" - rmmodels "github.com/hashicorp/hcp-sdk-go/clients/cloud-resource-manager/preview/2019-12-10/models" + organizationSvc "github.com/hashicorp/hcp-sdk-go/clients/cloud-resource-manager/stable/2019-12-10/client/organization_service" + projectSvc "github.com/hashicorp/hcp-sdk-go/clients/cloud-resource-manager/stable/2019-12-10/client/project_service" + rmmodels "github.com/hashicorp/hcp-sdk-go/clients/cloud-resource-manager/stable/2019-12-10/models" "github.com/hashicorp/hcp-sdk-go/httpclient" "github.com/hashicorp/packer/internal/hcp/env" "github.com/hashicorp/packer/version" @@ -166,13 +164,13 @@ func (c *Client) loadProjectID() error { } // getOldestProject retrieves the oldest project from a list based on its created_at time. -func getOldestProject(projects []*models.HashicorpCloudResourcemanagerProject) (*models.HashicorpCloudResourcemanagerProject, error) { +func getOldestProject(projects []*rmmodels.HashicorpCloudResourcemanagerProject) (*rmmodels.HashicorpCloudResourcemanagerProject, error) { if len(projects) == 0 { return nil, fmt.Errorf("no project found") } oldestTime := time.Now() - var oldestProj *models.HashicorpCloudResourcemanagerProject + var oldestProj *rmmodels.HashicorpCloudResourcemanagerProject for _, proj := range projects { projTime := time.Time(proj.CreatedAt) if projTime.Before(oldestTime) { @@ -186,7 +184,7 @@ func getOldestProject(projects []*models.HashicorpCloudResourcemanagerProject) ( // ValidateRegistryForProject validates that there is an active registry associated to the configured organization and project ids. // A successful validation will result in a nil response. All other response represent an invalid registry error request or a registry not found error. func (client *Client) ValidateRegistryForProject() error { - params := packer_service.NewPackerServiceGetRegistryParams() + params := packerSvc.NewPackerServiceGetRegistryParams() params.LocationOrganizationID = client.OrganizationID params.LocationProjectID = client.ProjectID diff --git a/internal/hcp/api/client_test.go b/internal/hcp/api/client_test.go index bb952375bf9..7868feca440 100644 --- a/internal/hcp/api/client_test.go +++ b/internal/hcp/api/client_test.go @@ -8,7 +8,7 @@ import ( "time" "github.com/go-openapi/strfmt" - "github.com/hashicorp/hcp-sdk-go/clients/cloud-resource-manager/preview/2019-12-10/models" + "github.com/hashicorp/hcp-sdk-go/clients/cloud-resource-manager/stable/2019-12-10/models" ) func TestGetOldestProject(t *testing.T) { diff --git a/internal/hcp/api/mock_service.go b/internal/hcp/api/mock_service.go index f9b427cbf29..ac01c94d002 100644 --- a/internal/hcp/api/mock_service.go +++ b/internal/hcp/api/mock_service.go @@ -9,7 +9,6 @@ import ( "strconv" "github.com/go-openapi/runtime" - "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/client/packer_service" packerSvc "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/client/packer_service" "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/models" "google.golang.org/grpc/codes" @@ -52,7 +51,7 @@ func NewMockPackerClientService() *MockPackerClientService { return &m } -func (svc *MockPackerClientService) PackerServiceCreateBucket(params *packerSvc.PackerServiceCreateBucketParams, _ runtime.ClientAuthInfoWriter, opts ...packer_service.ClientOption) (*packerSvc.PackerServiceCreateBucketOK, error) { +func (svc *MockPackerClientService) PackerServiceCreateBucket(params *packerSvc.PackerServiceCreateBucketParams, _ runtime.ClientAuthInfoWriter, opts ...packerSvc.ClientOption) (*packerSvc.PackerServiceCreateBucketOK, error) { if svc.BucketAlreadyExist { return nil, status.Error(codes.AlreadyExists, fmt.Sprintf("Code:%d %s", codes.AlreadyExists, codes.AlreadyExists.String())) @@ -79,7 +78,7 @@ func (svc *MockPackerClientService) PackerServiceCreateBucket(params *packerSvc. return ok, nil } -func (svc *MockPackerClientService) PackerServiceUpdateBucket(params *packerSvc.PackerServiceUpdateBucketParams, _ runtime.ClientAuthInfoWriter, opts ...packer_service.ClientOption) (*packerSvc.PackerServiceUpdateBucketOK, error) { +func (svc *MockPackerClientService) PackerServiceUpdateBucket(params *packerSvc.PackerServiceUpdateBucketParams, _ runtime.ClientAuthInfoWriter, opts ...packerSvc.ClientOption) (*packerSvc.PackerServiceUpdateBucketOK, error) { if svc.TrackCalledServiceMethods { svc.UpdateBucketCalled = true } @@ -87,7 +86,7 @@ func (svc *MockPackerClientService) PackerServiceUpdateBucket(params *packerSvc. return packerSvc.NewPackerServiceUpdateBucketOK(), nil } -func (svc *MockPackerClientService) PackerServiceCreateIteration(params *packerSvc.PackerServiceCreateIterationParams, _ runtime.ClientAuthInfoWriter, opts ...packer_service.ClientOption) (*packerSvc.PackerServiceCreateIterationOK, error) { +func (svc *MockPackerClientService) PackerServiceCreateIteration(params *packerSvc.PackerServiceCreateIterationParams, _ runtime.ClientAuthInfoWriter, opts ...packerSvc.ClientOption) (*packerSvc.PackerServiceCreateIterationOK, error) { if svc.IterationAlreadyExist { return nil, status.Error(codes.AlreadyExists, fmt.Sprintf("Code:%d %s", codes.AlreadyExists, codes.AlreadyExists.String())) } @@ -116,7 +115,7 @@ func (svc *MockPackerClientService) PackerServiceCreateIteration(params *packerS return ok, nil } -func (svc *MockPackerClientService) PackerServiceGetIteration(params *packerSvc.PackerServiceGetIterationParams, _ runtime.ClientAuthInfoWriter, opts ...packer_service.ClientOption) (*packerSvc.PackerServiceGetIterationOK, error) { +func (svc *MockPackerClientService) PackerServiceGetIteration(params *packerSvc.PackerServiceGetIterationParams, _ runtime.ClientAuthInfoWriter, opts ...packerSvc.ClientOption) (*packerSvc.PackerServiceGetIterationOK, error) { if !svc.IterationAlreadyExist { return nil, status.Error(codes.AlreadyExists, fmt.Sprintf("Code:%d %s", codes.Aborted, codes.Aborted.String())) } @@ -164,7 +163,7 @@ func (svc *MockPackerClientService) PackerServiceGetIteration(params *packerSvc. return ok, nil } -func (svc *MockPackerClientService) PackerServiceCreateBuild(params *packerSvc.PackerServiceCreateBuildParams, _ runtime.ClientAuthInfoWriter, opts ...packer_service.ClientOption) (*packerSvc.PackerServiceCreateBuildOK, error) { +func (svc *MockPackerClientService) PackerServiceCreateBuild(params *packerSvc.PackerServiceCreateBuildParams, _ runtime.ClientAuthInfoWriter, opts ...packerSvc.ClientOption) (*packerSvc.PackerServiceCreateBuildOK, error) { if params.BucketSlug == "" { return nil, errors.New("No valid BucketSlug was passed in") } @@ -197,7 +196,7 @@ func (svc *MockPackerClientService) PackerServiceCreateBuild(params *packerSvc.P return ok, nil } -func (svc *MockPackerClientService) PackerServiceUpdateBuild(params *packerSvc.PackerServiceUpdateBuildParams, _ runtime.ClientAuthInfoWriter, opts ...packer_service.ClientOption) (*packerSvc.PackerServiceUpdateBuildOK, error) { +func (svc *MockPackerClientService) PackerServiceUpdateBuild(params *packerSvc.PackerServiceUpdateBuildParams, _ runtime.ClientAuthInfoWriter, opts ...packerSvc.ClientOption) (*packerSvc.PackerServiceUpdateBuildOK, error) { if params.BuildID == "" { return nil, errors.New("No valid BuildID was passed in") } @@ -223,7 +222,7 @@ func (svc *MockPackerClientService) PackerServiceUpdateBuild(params *packerSvc.P return ok, nil } -func (svc *MockPackerClientService) PackerServiceListBuilds(params *packerSvc.PackerServiceListBuildsParams, _ runtime.ClientAuthInfoWriter, opts ...packer_service.ClientOption) (*packerSvc.PackerServiceListBuildsOK, error) { +func (svc *MockPackerClientService) PackerServiceListBuilds(params *packerSvc.PackerServiceListBuildsParams, _ runtime.ClientAuthInfoWriter, opts ...packerSvc.ClientOption) (*packerSvc.PackerServiceListBuildsOK, error) { status := models.HashicorpCloudPackerBuildStatusUNSET images := make([]*models.HashicorpCloudPackerImage, 0) From 7951607e5e01a10ff2d1dcc72cfee0222dd97ced Mon Sep 17 00:00:00 2001 From: Sarah Date: Wed, 22 Nov 2023 13:14:38 +0000 Subject: [PATCH 229/381] Remove release-engineering as codeowners --- CODEOWNERS | 2 -- 1 file changed, 2 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index 0efb6b1ac47..b92152c7348 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -2,5 +2,3 @@ # release configuration -/.release/ @hashicorp/release-engineering -/.github/workflows/build.yml @hashicorp/release-engineering From 9b2d9f4fb38ae71470a488a865e393973cb321dc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Nov 2023 19:24:33 +0000 Subject: [PATCH 230/381] build(deps): bump github.com/hashicorp/hcp-sdk-go from 0.73.0 to 0.74.0 Bumps [github.com/hashicorp/hcp-sdk-go](https://github.com/hashicorp/hcp-sdk-go) from 0.73.0 to 0.74.0. - [Release notes](https://github.com/hashicorp/hcp-sdk-go/releases) - [Changelog](https://github.com/hashicorp/hcp-sdk-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/hcp-sdk-go/compare/v0.73.0...v0.74.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/hcp-sdk-go dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 28 ++++++------- go.sum | 126 +++++++++++++++------------------------------------------ 2 files changed, 46 insertions(+), 108 deletions(-) diff --git a/go.mod b/go.mod index 79fa0f030cb..81e73b1e8d6 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/hashicorp/go-uuid v1.0.2 github.com/hashicorp/go-version v1.6.0 github.com/hashicorp/hcl/v2 v2.14.1 - github.com/hashicorp/hcp-sdk-go v0.73.0 + github.com/hashicorp/hcp-sdk-go v0.74.0 github.com/hashicorp/packer-plugin-amazon v1.2.1 github.com/hashicorp/packer-plugin-sdk v0.4.0 github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 @@ -45,14 +45,14 @@ require ( github.com/ulikunitz/xz v0.5.10 github.com/zclconf/go-cty v1.10.0 github.com/zclconf/go-cty-yaml v1.0.1 - golang.org/x/crypto v0.14.0 // indirect - golang.org/x/mod v0.8.0 - golang.org/x/net v0.17.0 - golang.org/x/oauth2 v0.13.0 + golang.org/x/crypto v0.15.0 // indirect + golang.org/x/mod v0.9.0 + golang.org/x/net v0.18.0 + golang.org/x/oauth2 v0.14.0 golang.org/x/sync v0.3.0 - golang.org/x/sys v0.13.0 // indirect - golang.org/x/term v0.13.0 // indirect - golang.org/x/text v0.13.0 // indirect + golang.org/x/sys v0.14.0 // indirect + golang.org/x/term v0.14.0 // indirect + golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.6.0 google.golang.org/api v0.128.0 // indirect google.golang.org/grpc v1.59.0 @@ -101,12 +101,12 @@ require ( github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-openapi/analysis v0.21.4 // indirect github.com/go-openapi/errors v0.20.4 // indirect - github.com/go-openapi/jsonpointer v0.19.5 // indirect - github.com/go-openapi/jsonreference v0.20.0 // indirect + github.com/go-openapi/jsonpointer v0.20.0 // indirect + github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/loads v0.21.2 // indirect - github.com/go-openapi/spec v0.20.8 // indirect + github.com/go-openapi/spec v0.20.9 // indirect github.com/go-openapi/swag v0.22.4 // indirect - github.com/go-openapi/validate v0.22.1 // indirect + github.com/go-openapi/validate v0.22.2 // indirect github.com/gofrs/uuid v4.0.0+incompatible // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/golang/snappy v0.0.4 // indirect @@ -140,7 +140,6 @@ require ( github.com/josharian/intern v1.0.0 // indirect github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect github.com/kr/fs v0.1.0 // indirect - github.com/kr/pretty v0.3.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786 // indirect @@ -158,7 +157,6 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect github.com/rivo/uniseg v0.2.0 // indirect - github.com/rogpeppe/go-internal v1.9.0 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect github.com/shoenig/go-m1cpu v0.1.5 // indirect @@ -169,7 +167,7 @@ require ( github.com/xanzy/ssh-agent v0.3.0 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect - go.mongodb.org/mongo-driver v1.11.3 // indirect + go.mongodb.org/mongo-driver v1.12.0 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/otel v1.14.0 // indirect go.opentelemetry.io/otel/trace v1.14.0 // indirect diff --git a/go.sum b/go.sum index deccf73b146..03510c07293 100644 --- a/go.sum +++ b/go.sum @@ -36,8 +36,6 @@ github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugX github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C67SkzkDfmQuVln04ygHj3vjZfd9FL+GmQQ= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= -github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk= github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= @@ -181,70 +179,42 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY= github.com/go-openapi/analysis v0.21.4 h1:ZDFLvSNxpDaomuCueM0BlSXxpANBlFYiBvr+GXrvIHc= github.com/go-openapi/analysis v0.21.4/go.mod h1:4zQ35W4neeZTqh3ol0rv/O8JBbka9QyAgQRPp9y3pfo= -github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/errors v0.19.9/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= github.com/go-openapi/errors v0.20.4 h1:unTcVm6PispJsMECE3zWgvG4xTiKda1LIR5rCRWLG6M= github.com/go-openapi/errors v0.20.4/go.mod h1:Z3FlZ4I8jEGxjUK+bugx3on2mIAk4txuAOhlsB1FSgk= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= -github.com/go-openapi/jsonreference v0.20.0 h1:MYlu0sBgChmCfJxxUKZ8g1cPWFOB37YSZqewK7OKeyA= +github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= +github.com/go-openapi/jsonpointer v0.20.0 h1:ESKJdU9ASRfaPNOPRx12IUyA1vn3R9GiE3KYD14BXdQ= +github.com/go-openapi/jsonpointer v0.20.0/go.mod h1:6PGzBjjIIumbLYysB73Klnms1mwnU4G3YHOECG3CedA= github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= -github.com/go-openapi/loads v0.21.1/go.mod h1:/DtAMXXneXFjbQMGEtbamCZb+4x7eGwkvZCvBmwUG+g= +github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= +github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/loads v0.21.2 h1:r2a/xFIYeZ4Qd2TnGpWDIQNcP80dIaZgf704za8enro= github.com/go-openapi/loads v0.21.2/go.mod h1:Jq58Os6SSGz0rzh62ptiu8Z31I+OTHqmULx5e/gJbNw= github.com/go-openapi/runtime v0.26.0 h1:HYOFtG00FM1UvqrcxbEJg/SwvDRvYLQKGhw2zaQjTcc= github.com/go-openapi/runtime v0.26.0/go.mod h1:QgRGeZwrUcSHdeh4Ka9Glvo0ug1LC5WyE+EV88plZrQ= -github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= github.com/go-openapi/spec v0.20.6/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= -github.com/go-openapi/spec v0.20.8 h1:ubHmXNY3FCIOinT8RNrrPfGc9t7I1qhPtdOGoG2AxRU= -github.com/go-openapi/spec v0.20.8/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= -github.com/go-openapi/strfmt v0.21.0/go.mod h1:ZRQ409bWMj+SOgXofQAGTIo2Ebu72Gs+WaRADcS5iNg= -github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k= +github.com/go-openapi/spec v0.20.9 h1:xnlYNQAwKd2VQRRfwTEI0DcK+2cbuvI/0c7jx3gA8/8= +github.com/go-openapi/spec v0.20.9/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= github.com/go-openapi/strfmt v0.21.3/go.mod h1:k+RzNO0Da+k3FrrynSNN8F7n/peCmQQqbbXjtDfvmGg= github.com/go-openapi/strfmt v0.21.7 h1:rspiXgNWgeUzhjo1YU01do6qsahtJNByjLVbPLNHb8k= github.com/go-openapi/strfmt v0.21.7/go.mod h1:adeGTkxE44sPyLk0JV235VQAO/ZXUr8KAzYjclFs3ew= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-openapi/swag v0.22.4 h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogBU= github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-openapi/validate v0.22.1 h1:G+c2ub6q47kfX1sOBLwIQwzBVt8qmOAARyo/9Fqs9NU= -github.com/go-openapi/validate v0.22.1/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= +github.com/go-openapi/validate v0.22.2 h1:Lda8nadL/5kIvS5mdXCAIuZ7IVXvKFIppLnw+EZh+n0= +github.com/go-openapi/validate v0.22.2/go.mod h1:kVxh31KbfsxU8ZyoHaDbLBWU5CnMdqBUEtadQ2G4d5M= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= -github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= -github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= -github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= -github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= -github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= -github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs= -github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= -github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= -github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk= -github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28= -github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo= -github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk= -github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw= -github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360= -github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg= -github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE= -github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8= -github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= -github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= -github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= -github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= -github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= -github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= -github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= @@ -390,8 +360,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.14.1 h1:x0BpjfZ+CYdbiz+8yZTQ+gdLO7IXvOut7Da+XJayx34= github.com/hashicorp/hcl/v2 v2.14.1/go.mod h1:e4z5nxYlWNPdDSNYX+ph14EvWYMFm3eP0zIUqPc2jr0= -github.com/hashicorp/hcp-sdk-go v0.73.0 h1:KjizNN/53nu4YkrDZ24xKjy4EgFt9b3nk1vgfAmgwUk= -github.com/hashicorp/hcp-sdk-go v0.73.0/go.mod h1:k/wgUsKSa2OzWBM5/Pj5ST0YwFGpgC4O5EtCq882jSw= +github.com/hashicorp/hcp-sdk-go v0.74.0 h1:41AS+wk78UgB4wM6oAwkB7lMSmOUQTOYQ9pT2Gc2glA= +github.com/hashicorp/hcp-sdk-go v0.74.0/go.mod h1:5GwdT+HGhEQsh4n1yK+RADnQkfOo6vHgr2BpYUt2t9U= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= github.com/hashicorp/memberlist v0.2.2 h1:5+RffWKwqJ71YPu9mWsF7ZOscZmwfasdA8kbdC7AO2g= @@ -429,14 +399,11 @@ github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9Y github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= -github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck= github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= @@ -449,7 +416,6 @@ github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgo github.com/klauspost/pgzip v1.2.5 h1:qnWYvvKqedOF2ulHpMG72XQol4ILEJ8k2wwRl/Km8oE= github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kortschak/utter v0.0.0-20190412033250-50fe362e6560/go.mod h1:oDr41C7kH9wvAikWyFhr6UFr8R7nelpmCF5XR5rL7I8= github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= @@ -457,8 +423,7 @@ github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFB github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -472,8 +437,6 @@ github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= -github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786 h1:2ZKn+w/BJeL43sCxI2jhPLRv73oVVOjEKZjKkflyqxg= github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= @@ -568,7 +531,6 @@ github.com/packer-community/winrmcp v0.0.0-20180921211025-c76d91c1e7db/go.mod h1 github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4 v2.5.2+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= @@ -608,12 +570,7 @@ github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+Gx github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= @@ -631,13 +588,11 @@ github.com/shoenig/test v0.6.3 h1:GVXWJFk9PiOjN0KoJ7VrJGH6uLPnqxR7/fe3HUPfE0c= github.com/shoenig/test v0.6.3/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 h1:JIAuq3EEf9cgbU6AtGPK4CTG3Zf6CKMNqf0MHTggAUA= github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -657,7 +612,6 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tklauser/go-sysconf v0.3.11 h1:89WgdJhk5SNwJfu+GKyYveZ4IaJ7xAkecBo+KdJV0CM= github.com/tklauser/go-sysconf v0.3.11/go.mod h1:GqXfhXY3kiPa0nAXPDIQIWzJbMCB7AmcWpGR8lSZfqI= @@ -677,10 +631,10 @@ github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgq github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= -github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= -github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= +github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4= github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= +github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= @@ -693,11 +647,9 @@ github.com/zclconf/go-cty v1.10.0 h1:mp9ZXQeIcN8kAwuqorjH+Q+njbJKjLrvB2yIh4q7U+0 github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= github.com/zclconf/go-cty-yaml v1.0.1 h1:up11wlgAaDvlAGENcFDnZgkn0qUJurso7k6EpURKNF8= github.com/zclconf/go-cty-yaml v1.0.1/go.mod h1:IP3Ylp0wQpYm50IHK8OZWKMu6sPJIUgKa8XhiVHura0= -go.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= -go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8= -go.mongodb.org/mongo-driver v1.11.3 h1:Ql6K6qYHEzB6xvu4+AU0BoRoqf9vFPcc4o7MUIdPW8Y= -go.mongodb.org/mongo-driver v1.11.3/go.mod h1:PTSz5yu21bkT/wXpkS7WR5f0ddqw5quethTUn9WM+2g= +go.mongodb.org/mongo-driver v1.12.0 h1:aPx33jmn/rQuJXPQLZQ8NtfPQG8CaqgLThFtqRb0PiE= +go.mongodb.org/mongo-driver v1.12.0/go.mod h1:AZkxhPnFJUoH7kZlFkVKucV20K387miPfm7oimrSmK0= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= @@ -715,10 +667,8 @@ golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190222235706-ffb98f73852f/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190418165655-df01cb2cc480/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= -golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= -golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200422194213-44a606286825/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -728,8 +678,8 @@ golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= +golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= @@ -742,8 +692,8 @@ golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -769,21 +719,19 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= -golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= +golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.13.0 h1:jDDenyj+WgFtmV3zYVoi8aE2BwtXFLWOA67ZfNWftiY= -golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= +golang.org/x/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0= +golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190412183630-56d357773e84/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -802,12 +750,10 @@ golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -825,7 +771,6 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -835,12 +780,12 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= -golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= +golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8= +golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -848,8 +793,9 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= @@ -860,11 +806,7 @@ golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -935,7 +877,6 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntN gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.28 h1:n1tBJnnK2r7g9OW2btFH91V92STTUevLXYFb8gy9EMk= gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= @@ -957,7 +898,6 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= From efe182b221e6b5fe6c0c654b3b46dc007c87fd4f Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 22 Nov 2023 14:57:29 -0500 Subject: [PATCH 231/381] packer: link to docs if a component is missing When a user invokes packer for a build or validation, the template being processed needs components to be present for Packer to process it without error. If the component cannot be found from the plugins loaded (or from the components bundled with Packer), Packer errors, and the command fails. This is expected, but the error message does not suggest anything to fix the error, potantially leaving users confused at the problem. This commit suggests either a replacement (in case of a typo), or points to the web documentation for Packer, specifically the integrations, so they can look for the plugin they're missing, and install it, so subsequent invocations of Packer work. --- hcl2template/plugin.go | 59 +++++++++++++++++++++++++++++++++++++++--- packer/core.go | 53 ++++++++++++++++++++++++++++++++++++- 2 files changed, 107 insertions(+), 5 deletions(-) diff --git a/hcl2template/plugin.go b/hcl2template/plugin.go index 323263596f8..321616017b6 100644 --- a/hcl2template/plugin.go +++ b/hcl2template/plugin.go @@ -133,10 +133,22 @@ func (cfg *PackerConfig) initializeBlocks() hcl.Diagnostics { // its body. srcUsage := &(build.Sources[i]) if !cfg.parser.PluginConfig.Builders.Has(srcUsage.Type) { + detail := fmt.Sprintf( + "The %s %s is unknown by Packer, and is likely part of a plugin that is not installed.\n"+ + "You may find the needed plugin along with installation instructions documented on the Packer integrations page.\n\n"+ + "https://developer.hashicorp.com/packer/integrations?filter=%s", + buildSourceLabel, + srcUsage.Type, + strings.Split(srcUsage.Type, "-")[0], + ) + + if sugg := didyoumean.NameSuggestion(srcUsage.Type, cfg.parser.PluginConfig.Builders.List()); sugg != "" { + detail = fmt.Sprintf("Did you mean to use %q?", sugg) + } diags = append(diags, &hcl.Diagnostic{ Summary: "Unknown " + buildSourceLabel + " type " + srcUsage.Type, Subject: &build.HCL2Ref.DefRange, - Detail: fmt.Sprintf("known builders: %v", cfg.parser.PluginConfig.Builders.List()), + Detail: detail, Severity: hcl.DiagError, }) continue @@ -169,10 +181,23 @@ func (cfg *PackerConfig) initializeBlocks() hcl.Diagnostics { for _, provBlock := range build.ProvisionerBlocks { if !cfg.parser.PluginConfig.Provisioners.Has(provBlock.PType) { + detail := fmt.Sprintf( + "The %s %s is unknown by Packer, and is likely part of a plugin that is not installed.\n"+ + "You may find the needed plugin along with installation instructions documented on the Packer integrations page.\n\n"+ + "https://developer.hashicorp.com/packer/integrations?filter=%s", + buildProvisionerLabel, + provBlock.PType, + strings.Split(provBlock.PType, "-")[0], + ) + + if sugg := didyoumean.NameSuggestion(provBlock.PType, cfg.parser.PluginConfig.Provisioners.List()); sugg != "" { + detail = fmt.Sprintf("Did you mean to use %q?", sugg) + } + diags = append(diags, &hcl.Diagnostic{ Summary: fmt.Sprintf("Unknown "+buildProvisionerLabel+" type %q", provBlock.PType), Subject: provBlock.HCL2Ref.TypeRange.Ptr(), - Detail: fmt.Sprintf("known "+buildProvisionerLabel+"s: %v", cfg.parser.PluginConfig.Provisioners.List()), + Detail: detail, Severity: hcl.DiagError, }) } @@ -180,10 +205,23 @@ func (cfg *PackerConfig) initializeBlocks() hcl.Diagnostics { if build.ErrorCleanupProvisionerBlock != nil { if !cfg.parser.PluginConfig.Provisioners.Has(build.ErrorCleanupProvisionerBlock.PType) { + detail := fmt.Sprintf( + "The %s %s is unknown by Packer, and is likely part of a plugin that is not installed.\n"+ + "You may find the needed plugin along with installation instructions documented on the Packer integrations page.\n\n"+ + "https://developer.hashicorp.com/packer/integrations?filter=%s", + buildErrorCleanupProvisionerLabel, + build.ErrorCleanupProvisionerBlock.PType, + strings.Split(build.ErrorCleanupProvisionerBlock.PType, "-")[0], + ) + + if sugg := didyoumean.NameSuggestion(build.ErrorCleanupProvisionerBlock.PType, cfg.parser.PluginConfig.Provisioners.List()); sugg != "" { + detail = fmt.Sprintf("Did you mean to use %q?", sugg) + } + diags = append(diags, &hcl.Diagnostic{ Summary: fmt.Sprintf("Unknown "+buildErrorCleanupProvisionerLabel+" type %q", build.ErrorCleanupProvisionerBlock.PType), Subject: build.ErrorCleanupProvisionerBlock.HCL2Ref.TypeRange.Ptr(), - Detail: fmt.Sprintf("known "+buildErrorCleanupProvisionerLabel+"s: %v", cfg.parser.PluginConfig.Provisioners.List()), + Detail: detail, Severity: hcl.DiagError, }) } @@ -192,10 +230,23 @@ func (cfg *PackerConfig) initializeBlocks() hcl.Diagnostics { for _, ppList := range build.PostProcessorsLists { for _, ppBlock := range ppList { if !cfg.parser.PluginConfig.PostProcessors.Has(ppBlock.PType) { + detail := fmt.Sprintf( + "The %s %s is unknown by Packer, and is likely part of a plugin that is not installed.\n"+ + "You may find the needed plugin along with installation instructions documented on the Packer integrations page.\n\n"+ + "https://developer.hashicorp.com/packer/integrations?filter=%s", + buildPostProcessorLabel, + ppBlock.PType, + strings.Split(ppBlock.PType, "-")[0], + ) + + if sugg := didyoumean.NameSuggestion(ppBlock.PType, cfg.parser.PluginConfig.PostProcessors.List()); sugg != "" { + detail = fmt.Sprintf("Did you mean to use %q?", sugg) + } + diags = append(diags, &hcl.Diagnostic{ Summary: fmt.Sprintf("Unknown "+buildPostProcessorLabel+" type %q", ppBlock.PType), Subject: ppBlock.HCL2Ref.TypeRange.Ptr(), - Detail: fmt.Sprintf("known "+buildPostProcessorLabel+"s: %v", cfg.parser.PluginConfig.PostProcessors.List()), + Detail: detail, Severity: hcl.DiagError, }) } diff --git a/packer/core.go b/packer/core.go index 732f026360f..4803f1de474 100644 --- a/packer/core.go +++ b/packer/core.go @@ -18,6 +18,7 @@ import ( multierror "github.com/hashicorp/go-multierror" version "github.com/hashicorp/go-version" hcl "github.com/hashicorp/hcl/v2" + "github.com/hashicorp/packer-plugin-sdk/didyoumean" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer-plugin-sdk/template" "github.com/hashicorp/packer-plugin-sdk/template/interpolate" @@ -218,15 +219,33 @@ func (c *Core) BuildNames(only, except []string) []string { func (c *Core) generateCoreBuildProvisioner(rawP *template.Provisioner, rawName string) (CoreBuildProvisioner, error) { // Get the provisioner cbp := CoreBuildProvisioner{} + + if !c.components.PluginConfig.Provisioners.Has(rawP.Type) { + err := fmt.Errorf( + "The provisioner %s is unknown by Packer, and is likely part of a plugin that is not installed.\n"+ + "You may find the needed plugin along with installation instructions documented on the Packer integrations page.\n\n"+ + "https://developer.hashicorp.com/packer/integrations?filter=%s", + rawP.Type, + strings.Split(rawP.Type, "-")[0], + ) + + if sugg := didyoumean.NameSuggestion(rawP.Type, c.components.PluginConfig.Builders.List()); sugg != "" { + err = fmt.Errorf("Did you mean to use %q?", sugg) + } + + return cbp, err + } + provisioner, err := c.components.PluginConfig.Provisioners.Start(rawP.Type) if err != nil { return cbp, fmt.Errorf( "error initializing provisioner '%s': %s", rawP.Type, err) } + // Seems unlikely that a provisioner doesn't start successfully without error if provisioner == nil { return cbp, fmt.Errorf( - "provisioner type not found: %s", rawP.Type) + "provisioner failed to be started and did not error: %s", rawP.Type) } // Get the configuration @@ -335,6 +354,22 @@ func (c *Core) Build(n string) (packersdk.Build, error) { // For reference, the builtin BuilderStore is generated in // packer/config.go in the Discover() func. + if !c.components.PluginConfig.Builders.Has(configBuilder.Type) { + err := fmt.Errorf( + "The builder %s is unknown by Packer, and is likely part of a plugin that is not installed.\n"+ + "You may find the needed plugin along with installation instructions documented on the Packer integrations page.\n\n"+ + "https://developer.hashicorp.com/packer/integrations?filter=%s", + configBuilder.Type, + strings.Split(configBuilder.Type, "-")[0], + ) + + if sugg := didyoumean.NameSuggestion(configBuilder.Type, c.components.PluginConfig.Builders.List()); sugg != "" { + err = fmt.Errorf("Did you mean to use %q?", sugg) + } + + return nil, err + } + // the Start command launches the builder plugin of the given type without // calling Prepare() or passing any build-specific details. builder, err := c.components.PluginConfig.Builders.Start(configBuilder.Type) @@ -396,6 +431,22 @@ func (c *Core) Build(n string) (packersdk.Build, error) { break } + if !c.components.PluginConfig.PostProcessors.Has(rawP.Type) { + err := fmt.Errorf( + "The post-processor %s is unknown by Packer, and is likely part of a plugin that is not installed.\n"+ + "You may find the needed plugin along with installation instructions documented on the Packer integrations page.\n\n"+ + "https://developer.hashicorp.com/packer/integrations?filter=%s", + rawP.Type, + strings.Split(rawP.Type, "-")[0], + ) + + if sugg := didyoumean.NameSuggestion(rawP.Type, c.components.PluginConfig.PostProcessors.List()); sugg != "" { + err = fmt.Errorf("Did you mean to use %q?", sugg) + } + + return nil, err + } + // Get the post-processor postProcessor, err := c.components.PluginConfig.PostProcessors.Start(rawP.Type) if err != nil { From 311ba90f7a32fb5feae633ffaa08123a8ad9fb00 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 22 Nov 2023 21:12:45 -0500 Subject: [PATCH 232/381] Update Acceptance Test to include BuilderSet This change initializes a MapOfBuilders with the test builder to fix a panic with checking if the initialized BuilderSet has an entry for the test builder. --- acctest/testing.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/acctest/testing.go b/acctest/testing.go index dd18be1a365..f88d2dde3e9 100644 --- a/acctest/testing.go +++ b/acctest/testing.go @@ -136,6 +136,9 @@ func Test(t TestT, c TestCase) { Components: packer.ComponentFinder{ PluginConfig: &packer.PluginConfig{ Builders: TestBuilderSet{ + BuilderSet: packersdk.MapOfBuilder{ + "test": func() (packersdk.Builder, error) { return c.Builder, nil }, + }, StartFn: func(n string) (packersdk.Builder, error) { if n == "test" { return c.Builder, nil From 17ff50896e01fb749a939a493f4404b95f7814bc Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 22 Nov 2023 21:14:32 -0500 Subject: [PATCH 233/381] Update didyoumean to call provisioners.List() --- packer/core.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packer/core.go b/packer/core.go index 4803f1de474..7a56dc06cc5 100644 --- a/packer/core.go +++ b/packer/core.go @@ -229,7 +229,7 @@ func (c *Core) generateCoreBuildProvisioner(rawP *template.Provisioner, rawName strings.Split(rawP.Type, "-")[0], ) - if sugg := didyoumean.NameSuggestion(rawP.Type, c.components.PluginConfig.Builders.List()); sugg != "" { + if sugg := didyoumean.NameSuggestion(rawP.Type, c.components.PluginConfig.Provisioners.List()); sugg != "" { err = fmt.Errorf("Did you mean to use %q?", sugg) } From c90ea91e05cbf2cd5748132685d78156b0546d2f Mon Sep 17 00:00:00 2001 From: hc-github-team-es-release-engineering <82989873+hc-github-team-es-release-engineering@users.noreply.github.com> Date: Mon, 27 Nov 2023 15:16:33 -0800 Subject: [PATCH 234/381] Update LICENSE --- LICENSE | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/LICENSE b/LICENSE index f7d6cdd08cf..91ed1781f82 100644 --- a/LICENSE +++ b/LICENSE @@ -1,32 +1,33 @@ License text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved. -“Business Source License” is a trademark of MariaDB Corporation Ab. +"Business Source License" is a trademark of MariaDB Corporation Ab. Parameters Licensor: HashiCorp, Inc. -Licensed Work: Packer 1.10.0. The Licensed Work is (c) 2023 HashiCorp, Inc. +Licensed Work: Packer Version 1.10.0 or later. The Licensed Work is (c) 2024 + HashiCorp, Inc. Additional Use Grant: You may make production use of the Licensed Work, provided Your use does not include offering the Licensed Work to third parties on a hosted or embedded basis in order to compete with - HashiCorp’s paid version(s) of the Licensed Work. For purposes + HashiCorp's paid version(s) of the Licensed Work. For purposes of this license: - A “competitive offering” is a Product that is offered to third + A "competitive offering" is a Product that is offered to third parties on a paid basis, including through paid support arrangements, that significantly overlaps with the capabilities - of HashiCorp’s paid version(s) of the Licensed Work. If Your + of HashiCorp's paid version(s) of the Licensed Work. If Your Product is not a competitive offering when You first make it generally available, it will not become a competitive offering later due to HashiCorp releasing a new version of the Licensed Work with additional capabilities. In addition, Products that are not provided on a paid basis are not competitive. - “Product” means software that is offered to end users to manage + "Product" means software that is offered to end users to manage in their own environments or offered as a service on a hosted basis. - “Embedded” means including the source code or executable code - from the Licensed Work in a competitive offering. “Embedded” + "Embedded" means including the source code or executable code + from the Licensed Work in a competitive offering. "Embedded" also means packaging the competitive offering in such a way that the Licensed Work must be accessed or downloaded for the competitive offering to operate. @@ -85,7 +86,7 @@ Licensor or its affiliates (provided that you may use a trademark or logo of Licensor as expressly required by this License). TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON -AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, +AN "AS IS" BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND TITLE. From 708653c843a063817c558f763b412c9195a238d4 Mon Sep 17 00:00:00 2001 From: hc-github-team-es-release-engineering <82989873+hc-github-team-es-release-engineering@users.noreply.github.com> Date: Mon, 27 Nov 2023 15:37:32 -0800 Subject: [PATCH 235/381] Update LICENSE --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 91ed1781f82..0918b4a93f4 100644 --- a/LICENSE +++ b/LICENSE @@ -4,7 +4,7 @@ License text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved. Parameters Licensor: HashiCorp, Inc. -Licensed Work: Packer Version 1.10.0 or later. The Licensed Work is (c) 2024 +Licensed Work: Packer Version 1.10.0 or later. The Licensed Work is (c) 2023 HashiCorp, Inc. Additional Use Grant: You may make production use of the Licensed Work, provided Your use does not include offering the Licensed Work to third From 8c7b97331b59ec5fa6b2e68acba30e4142670f51 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Mon, 27 Nov 2023 16:37:43 -0500 Subject: [PATCH 236/381] hcl2: don't show an empty source on var errors If a variable is defined and overriden in the packer command-line, but there's a problem during the evaluation of this override (type error typically), we show an error message which details the problem. This message points to a temporary in-memory HCL2 "file" that we use for parsing and evaluating the expression for the variable, but since it's virtual, there's no point in using this as the source for the error, as it will always yield "line 0" and no contents. So, in order to limit confusion here, we remove the source for this error message. --- hcl2template/types.variables.go | 1 - 1 file changed, 1 deletion(-) diff --git a/hcl2template/types.variables.go b/hcl2template/types.variables.go index 33df28a84ee..b3754e8f111 100644 --- a/hcl2template/types.variables.go +++ b/hcl2template/types.variables.go @@ -741,7 +741,6 @@ func (cfg *PackerConfig) collectInputVariableValues(env []string, files []*hcl.F Severity: hcl.DiagError, Summary: "Invalid argument value for -var variable", Detail: fmt.Sprintf("The received arg value for %s is not compatible with the variable's type constraint: %s.", name, err), - Subject: expr.Range().Ptr(), }) val = cty.DynamicVal } From ebaf831562948ad606b8f9059eacc6f29147a96d Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 28 Nov 2023 15:01:04 -0500 Subject: [PATCH 237/381] cmd/hcl2upgrade: Add VirtualBox as known plugin --- command/hcl2_upgrade.go | 1 + 1 file changed, 1 insertion(+) diff --git a/command/hcl2_upgrade.go b/command/hcl2_upgrade.go index 3393ee86bad..08ffa767e99 100644 --- a/command/hcl2_upgrade.go +++ b/command/hcl2_upgrade.go @@ -104,6 +104,7 @@ var knownPlugins = map[string]string{ "googlecompute": "github.com/hashicorp/googlecompute", "qemu": "github.com/hashicorp/qemu", "vagrant": "github.com/hashicorp/vagrant", + "virtualbox": "github.com/hashicorp/virtualbox", "vmware": "github.com/hashicorp/vmware", "vsphere": "github.com/hashicorp/vsphere", } From 2aad17044029904385a63c24d8891bba8777dc4e Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 28 Nov 2023 13:10:16 -0500 Subject: [PATCH 238/381] Bumps github.com/hashicorp/packer-plugin-sdk from 0.4.0 to 0.5.2 --- go.mod | 62 ++++++------ go.sum | 306 +++++++++++++++++---------------------------------------- 2 files changed, 124 insertions(+), 244 deletions(-) diff --git a/go.mod b/go.mod index 81e73b1e8d6..af9e82838a5 100644 --- a/go.mod +++ b/go.mod @@ -17,43 +17,42 @@ require ( github.com/hako/durafmt v0.0.0-20200710122514-c0fb7b4da026 github.com/hashicorp/go-checkpoint v0.0.0-20171009173528-1545e56e46de github.com/hashicorp/go-cty-funcs v0.0.0-20200930094925-2721b1e36840 - github.com/hashicorp/go-getter/v2 v2.2.0 + github.com/hashicorp/go-getter/v2 v2.2.1 github.com/hashicorp/go-multierror v1.1.1 - github.com/hashicorp/go-uuid v1.0.2 + github.com/hashicorp/go-uuid v1.0.3 github.com/hashicorp/go-version v1.6.0 - github.com/hashicorp/hcl/v2 v2.14.1 + github.com/hashicorp/hcl/v2 v2.19.1 github.com/hashicorp/hcp-sdk-go v0.74.0 github.com/hashicorp/packer-plugin-amazon v1.2.1 - github.com/hashicorp/packer-plugin-sdk v0.4.0 + github.com/hashicorp/packer-plugin-sdk v0.5.2 github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 github.com/klauspost/compress v1.13.6 // indirect github.com/klauspost/pgzip v1.2.5 github.com/masterzen/winrm v0.0.0-20210623064412-3b76017826b0 github.com/mattn/go-runewidth v0.0.13 // indirect github.com/mattn/go-tty v0.0.0-20191112051231-74040eebce08 - github.com/mitchellh/cli v1.1.2 + github.com/mitchellh/cli v1.1.5 github.com/mitchellh/go-fs v0.0.0-20180402235330-b7b9ca407fff // indirect github.com/mitchellh/go-homedir v1.1.0 github.com/mitchellh/mapstructure v1.5.0 github.com/mitchellh/panicwrap v1.0.0 github.com/mitchellh/prefixedio v0.0.0-20151214002211-6e6954073784 github.com/packer-community/winrmcp v0.0.0-20180921211025-c76d91c1e7db // indirect - github.com/pierrec/lz4 v2.6.1+incompatible // indirect github.com/pkg/sftp v1.13.2 // indirect github.com/posener/complete v1.2.3 github.com/stretchr/testify v1.8.4 github.com/ulikunitz/xz v0.5.10 - github.com/zclconf/go-cty v1.10.0 + github.com/zclconf/go-cty v1.13.3 github.com/zclconf/go-cty-yaml v1.0.1 golang.org/x/crypto v0.15.0 // indirect - golang.org/x/mod v0.9.0 + golang.org/x/mod v0.13.0 golang.org/x/net v0.18.0 golang.org/x/oauth2 v0.14.0 - golang.org/x/sync v0.3.0 + golang.org/x/sync v0.4.0 golang.org/x/sys v0.14.0 // indirect golang.org/x/term v0.14.0 // indirect golang.org/x/text v0.14.0 // indirect - golang.org/x/tools v0.6.0 + golang.org/x/tools v0.14.0 google.golang.org/api v0.128.0 // indirect google.golang.org/grpc v1.59.0 ) @@ -73,15 +72,16 @@ require ( github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c // indirect github.com/ChrisTrenkamp/goxpath v0.0.0-20210404020558-97928f7e12b6 // indirect github.com/Masterminds/goutils v1.1.1 // indirect - github.com/Masterminds/semver v1.5.0 // indirect - github.com/Masterminds/sprig v2.22.0+incompatible // indirect + github.com/Masterminds/semver/v3 v3.1.1 // indirect + github.com/Masterminds/sprig/v3 v3.2.1 // indirect github.com/Microsoft/go-winio v0.4.16 // indirect github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect github.com/acomagu/bufpipe v1.0.3 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/apparentlymart/go-cidr v1.0.1 // indirect github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect - github.com/armon/go-metrics v0.3.9 // indirect + github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect + github.com/armon/go-metrics v0.4.1 // indirect github.com/armon/go-radix v1.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/aws/aws-sdk-go v1.44.114 // indirect @@ -90,12 +90,13 @@ require ( github.com/bmatcuk/doublestar v1.1.5 // indirect github.com/cenkalti/backoff/v3 v3.2.2 // indirect github.com/chzyer/test v1.0.0 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dylanmei/iso8601 v0.1.0 // indirect github.com/emirpasic/gods v1.12.0 // indirect - github.com/fatih/color v1.12.0 // indirect + github.com/fatih/color v1.14.1 // indirect github.com/go-git/gcfg v1.5.0 // indirect github.com/go-git/go-billy/v5 v5.3.1 // indirect + github.com/go-jose/go-jose/v3 v3.0.0 // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect @@ -109,30 +110,29 @@ require ( github.com/go-openapi/validate v0.22.2 // indirect github.com/gofrs/uuid v4.0.0+incompatible // indirect github.com/golang/protobuf v1.5.3 // indirect - github.com/golang/snappy v0.0.4 // indirect - github.com/google/btree v1.0.1 // indirect github.com/google/s2a-go v0.1.4 // indirect github.com/google/uuid v1.3.1 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.4 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/hashicorp/aws-sdk-go-base v0.7.1 // indirect - github.com/hashicorp/consul/api v1.10.1 // indirect + github.com/hashicorp/consul/api v1.25.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter/gcs/v2 v2.2.0 // indirect - github.com/hashicorp/go-getter/s3/v2 v2.2.0 // indirect - github.com/hashicorp/go-hclog v0.16.2 // indirect + github.com/hashicorp/go-getter/gcs/v2 v2.2.1 // indirect + github.com/hashicorp/go-getter/s3/v2 v2.2.1 // indirect + github.com/hashicorp/go-hclog v1.5.0 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-retryablehttp v0.7.0 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect + github.com/hashicorp/go-secure-stdlib/parseutil v0.1.6 // indirect + github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect github.com/hashicorp/go-sockaddr v1.0.2 // indirect github.com/hashicorp/golang-lru v0.5.4 // indirect github.com/hashicorp/hcl v1.0.0 // indirect - github.com/hashicorp/serf v0.9.5 // indirect - github.com/hashicorp/vault/api v1.1.1 // indirect - github.com/hashicorp/vault/sdk v0.2.1 // indirect - github.com/hashicorp/yamux v0.0.0-20210826001029-26ff87cf9493 // indirect + github.com/hashicorp/serf v0.10.1 // indirect + github.com/hashicorp/vault/api v1.10.0 // indirect + github.com/hashicorp/yamux v0.1.1 // indirect github.com/huandu/xstrings v1.3.2 // indirect github.com/imdario/mergo v0.3.12 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect @@ -144,8 +144,8 @@ require ( github.com/mailru/easyjson v0.7.7 // indirect github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786 // indirect github.com/matryer/is v1.4.0 // indirect - github.com/mattn/go-colorable v0.1.8 // indirect - github.com/mattn/go-isatty v0.0.13 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.17 // indirect github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect @@ -154,13 +154,15 @@ require ( github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect github.com/shoenig/go-m1cpu v0.1.5 // indirect + github.com/shopspring/decimal v1.2.0 // indirect github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 // indirect + github.com/spf13/cast v1.3.1 // indirect github.com/tklauser/go-sysconf v0.3.11 // indirect github.com/tklauser/numcpus v0.6.0 // indirect github.com/ugorji/go/codec v1.2.6 // indirect @@ -171,6 +173,7 @@ require ( go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/otel v1.14.0 // indirect go.opentelemetry.io/otel/trace v1.14.0 // indirect + golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/appengine v1.6.7 // indirect @@ -179,10 +182,11 @@ require ( google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/cheggaaa/pb.v1 v1.0.28 // indirect - gopkg.in/square/go-jose.v2 v2.6.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) go 1.20 + +replace github.com/zclconf/go-cty => github.com/nywilken/go-cty v1.13.3 // added by packer-sdc fix as noted in github.com/hashicorp/packer-plugin-sdk/issues/187 diff --git a/go.sum b/go.sum index 03510c07293..dbb79b38c77 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,3 @@ -bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.110.8 h1:tyNdfIxjzaWctIiLYOTalaLKZ17SI44SKFW26QbOhME= @@ -12,7 +11,6 @@ cloud.google.com/go/iam v1.1.2/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+K cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ntlmssp v0.0.0-20180810175552-4a21cbd618b4/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c h1:/IBSNwUN8+eKzUzbJPqhK839ygXJ82sde8x3ogr6R28= github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= @@ -22,18 +20,15 @@ github.com/ChrisTrenkamp/goxpath v0.0.0-20170922090931-c385f95c6022/go.mod h1:nu github.com/ChrisTrenkamp/goxpath v0.0.0-20210404020558-97928f7e12b6 h1:w0E0fgc1YafGEh5cROhlROMWXiNoZqApk2PDN0M1+Ns= github.com/ChrisTrenkamp/goxpath v0.0.0-20210404020558-97928f7e12b6/go.mod h1:nuWgzSkT5PnyOd+272uUmV0dnAnAn42Mk7PiQC5VzN4= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= -github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZCSYp4Z0m2dk6cEM60= -github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= +github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc= +github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/sprig/v3 v3.2.1 h1:n6EPaDyLSvCEa3frruQvAiHuNp2dhBlMSmkEr+HuzGc= +github.com/Masterminds/sprig/v3 v3.2.1/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= -github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/go-winio v0.4.16 h1:FtSW/jqD+l4ba5iPBj9CODVtgfYAD8w2wS923g/cFDk= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C67SkzkDfmQuVln04ygHj3vjZfd9FL+GmQQ= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk= @@ -46,22 +41,20 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/antchfx/xmlquery v1.3.5 h1:I7TuBRqsnfFuL11ruavGm911Awx9IqSdiU6W/ztSmVw= github.com/antchfx/xpath v1.1.11 h1:WOFtK8TVAjLm3lbgqeP0arlHpvCEeTANeWZ/csPpJkQ= -github.com/antchfx/xquery v0.0.0-20180515051857-ad5b8c7a47b0 h1:JaCC8jz0zdMLk2m+qCCVLLLM/PL93p84w4pK3aJWj60= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apparentlymart/go-cidr v1.0.1 h1:NmIwLZ/KdsjIUlhf+/Np40atNXm/+lZ5txfTJ/SpF+U= github.com/apparentlymart/go-cidr v1.0.1/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3 h1:ZSTrOEhiM5J5RFxEaFvMZVEAM1KvT1YzbEOwB2EAGjA= -github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= -github.com/apparentlymart/go-textseg/v12 v12.0.0/go.mod h1:S/4uRK2UtaQttw1GenVJEynmyUenKwP++x/+DdGV/Ec= github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= +github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= +github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-metrics v0.3.0/go.mod h1:zXjbSimjXTd7vOpY8B0/2LpvNvDoXBuplAD+gJD3GYs= -github.com/armon/go-metrics v0.3.3/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= -github.com/armon/go-metrics v0.3.9 h1:O2sNqxBdvq8Eq5xmzljcYzAORli6RWCvEym4cJf9m18= -github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= +github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= +github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= @@ -70,8 +63,6 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkY github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/aws/aws-sdk-go v1.25.37/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.30.27/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.31.9/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.44.114 h1:plIkWc/RsHr3DXBj4MEw9sEW4CcL/e2ryokc+CKyq1I= github.com/aws/aws-sdk-go v1.44.114/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= @@ -87,7 +78,6 @@ github.com/biogo/hts v1.4.3 h1:vir2yUTiRkPvtp6ZTpzh9lWTKQJZXJKZ563rpAQAsRM= github.com/biogo/hts v1.4.3/go.mod h1:eW40HJ1l2ExK9C+yvvoRSftInqWsf3ue+zAEjzCGWjA= github.com/bmatcuk/doublestar v1.1.5 h1:2bNwBOmhyFEFcoB3tGvTD5xanq+4kyOZlB8wFYbMjkk= github.com/bmatcuk/doublestar v1.1.5/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE= -github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/cenkalti/backoff/v3 v3.2.2 h1:cfUAAO3yvKMYKPrvhDuHSwQnhZNk/RMHKdZqKTxfm6M= github.com/cenkalti/backoff/v3 v3.2.2/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -109,32 +99,17 @@ github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XP github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= -github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= -github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.4/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20200709052629-daa8e1ccc0bc/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo= -github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= -github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v1.4.2-0.20200319182547-c7ad2b866182/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dsnet/compress v0.0.1 h1:PlZu0n3Tuv04TzpfPbrnI0HW/YwodEXDS+oPKahKF0Q= github.com/dsnet/compress v0.0.1/go.mod h1:Aw8dCMJ7RioblQeTqt88akK31OvO8Dhf5JflhBbQEHo= github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY= -github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dylanmei/iso8601 v0.1.0 h1:812NGQDBcqquTfH5Yeo7lwR0nzx/cKdsmf3qMjPURUI= github.com/dylanmei/iso8601 v0.1.0/go.mod h1:w9KhXSgIyROl1DefbMYIE7UVSIvELTbMrCfx+QkYnoQ= -github.com/dylanmei/winrmtest v0.0.0-20170819153634-c2fbb09e6c08 h1:0bp6/GrNOrTDtSXe9YYGCwf8jp5Fb/b+4a6MTRm4qzY= +github.com/dylanmei/winrmtest v0.0.0-20210303004826-fbc9ae56efb6 h1:zWydSUQBJApHwpQ4guHi+mGyQN/8yN6xbKWdDtL3ZNM= github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -145,17 +120,13 @@ github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go. github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/color v1.12.0 h1:mRhaKNwANqRgUBGKmnI5ZxEk7QXmjQeCcuYFMX2bfcc= -github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.14.1 h1:qfhVLaG5s+nCROl1zJsZRxFeYrHLqWroPOQ8BWiNb4w= +github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= -github.com/frankban/quicktest v1.10.0 h1:Gfh+GAJZOAoKZsIZeZbdn2JF10kN1XHNvjsvQK8gVkE= -github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= -github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= @@ -166,10 +137,10 @@ github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6 github.com/go-git/go-git/v5 v5.4.2 h1:BXyZu9t0VkbiHtqrsvdq39UDhGJTl1h55VW6CSC4aY4= github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-jose/go-jose/v3 v3.0.0 h1:s6rrhirfEP/CGIoc6p+PZAeogN2SxKav6Wp7+dyMWVo= +github.com/go-jose/go-jose/v3 v3.0.0/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-ldap/ldap/v3 v3.1.3/go.mod h1:3rbOH3jRS2u6jg2rJnKAMLE/xQyCKIveG2Sa/Cohzb8= -github.com/go-ldap/ldap/v3 v3.1.10/go.mod h1:5Zun81jBTabRaI8lzN7E1JjyEl1g6zI6u9pd8luAK4Q= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -212,31 +183,24 @@ github.com/go-openapi/validate v0.22.2 h1:Lda8nadL/5kIvS5mdXCAIuZ7IVXvKFIppLnw+E github.com/go-openapi/validate v0.22.2/go.mod h1:kVxh31KbfsxU8ZyoHaDbLBWU5CnMdqBUEtadQ2G4d5M= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= -github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw= github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= @@ -250,11 +214,8 @@ github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiu github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= -github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -283,16 +244,14 @@ github.com/googleapis/enterprise-certificate-proxy v0.2.4 h1:uGy6JWR/uMIILU8wbf+ github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= -github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/hako/durafmt v0.0.0-20200710122514-c0fb7b4da026 h1:BpJ2o0OR5FV7vrkDYfXYVJQeMNWa8RhklZOpW2ITAIQ= github.com/hako/durafmt v0.0.0-20200710122514-c0fb7b4da026/go.mod h1:5Scbynm8dF1XAPwIwkGPqzkM/shndPm79Jd1003hTjE= github.com/hashicorp/aws-sdk-go-base v0.7.1 h1:7s/aR3hFn74tYPVihzDyZe7y/+BorN70rr9ZvpV3j3o= github.com/hashicorp/aws-sdk-go-base v0.7.1/go.mod h1:2fRjWDv3jJBeN6mVWFHV6hFTNeFBx2gpDLQaZNxUVAY= -github.com/hashicorp/consul/api v1.10.1 h1:MwZJp86nlnL+6+W1Zly4JUuVn9YHhMggBirMpHGD7kw= -github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= -github.com/hashicorp/consul/sdk v0.8.0 h1:OJtKBtEjboEZvG6AOUdh4Z1Zbyu0WcxQ0qatRrZHTVU= -github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= +github.com/hashicorp/consul/api v1.25.1 h1:CqrdhYzc8XZuPnhIYZWH45toM0LB9ZeYr/gvpLVI3PE= +github.com/hashicorp/consul/api v1.25.1/go.mod h1:iiLVwR/htV7mas/sy0O+XSuEnrdBUUydemjxcUrAt4g= +github.com/hashicorp/consul/sdk v0.14.1 h1:ZiwE2bKb+zro68sWzZ1SgHF3kRMBZ94TwOCFRF4ylPs= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -304,96 +263,80 @@ github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9n github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-cty-funcs v0.0.0-20200930094925-2721b1e36840 h1:kgvybwEeu0SXktbB2y3uLHX9lklLo+nzUwh59A3jzQc= github.com/hashicorp/go-cty-funcs v0.0.0-20200930094925-2721b1e36840/go.mod h1:Abjk0jbRkDaNCzsRhOv2iDCofYpX1eVsjozoiK63qLA= -github.com/hashicorp/go-getter/gcs/v2 v2.2.0 h1:oo6LVXva9I4CZzv531mn/FY5gtRx540I6eWwJVPWA4o= -github.com/hashicorp/go-getter/gcs/v2 v2.2.0/go.mod h1:oDHNhZN2Gf6UqfIol4S9PkbzMFlf8rBctrJvAHDTtOM= -github.com/hashicorp/go-getter/s3/v2 v2.2.0 h1:JGZihrdkZnuw+bDf8BnxuRLPwi0cfL2mwRlWA2lREAg= -github.com/hashicorp/go-getter/s3/v2 v2.2.0/go.mod h1:hj0uM2nGIi0rln/VcvxjaQYQg3WGssfUh/ya5jA555g= -github.com/hashicorp/go-getter/v2 v2.2.0 h1:vLenCsJqB5oNE141xKtT6cajhwAE8dneiNgzZA3oOqs= -github.com/hashicorp/go-getter/v2 v2.2.0/go.mod h1:EcJx6oZE8hmGuRR1l38QrfnyiujQbwsEAn11eHv6l2M= -github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= +github.com/hashicorp/go-getter/gcs/v2 v2.2.1 h1:yZgDXYy5m4xogJV8hXzX5S/fM/rjJnBz+EzTeFrfLEM= +github.com/hashicorp/go-getter/gcs/v2 v2.2.1/go.mod h1:xzT3sNmGRipCRMpWz24fYHMvgb4MRn/smg5k2mhJ7Bo= +github.com/hashicorp/go-getter/s3/v2 v2.2.1 h1:Psuhz6iuCxJOd3kGinK46x+4BzcJgwff8BId7CuGPYU= +github.com/hashicorp/go-getter/s3/v2 v2.2.1/go.mod h1:KDqfEPgpwZIy+1sAplFX231CE+M6wdL5Q/j6OMbKSnw= +github.com/hashicorp/go-getter/v2 v2.2.1 h1:2JXqPZs1Jej67RtdTi0YZaEB2hEFB3fkBA4cPYKQwFQ= +github.com/hashicorp/go-getter/v2 v2.2.1/go.mod h1:EcJx6oZE8hmGuRR1l38QrfnyiujQbwsEAn11eHv6l2M= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v0.16.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v0.16.2 h1:K4ev2ib4LdQETX5cSZBG0DVLk1jwGqSPXBjdah3veNs= -github.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= +github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-immutable-radix v1.1.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-kms-wrapping/entropy v0.1.0/go.mod h1:d1g9WGtAunDNpek8jUIEJnBlbgKS1N2Q61QkHiZyR1g= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-msgpack v0.5.5 h1:i9R9JSrqIz0QVLz3sz+i3YJdT7TTSLcfLLzJi9aZTuI= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-retryablehttp v0.6.2/go.mod h1:gEx6HMUGxYYhJScX7W1Il64m6cc2C1mDaW3NQ9sY1FY= -github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= github.com/hashicorp/go-retryablehttp v0.7.0 h1:eu1EI/mbirUgP5C8hVsTNaGZreBDlYiwC1FZWkvQPQ4= github.com/hashicorp/go-retryablehttp v0.7.0/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= -github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= +github.com/hashicorp/go-secure-stdlib/parseutil v0.1.6 h1:om4Al8Oy7kCm/B86rLCLah4Dt5Aa0Fr5rYBG60OzwHQ= +github.com/hashicorp/go-secure-stdlib/parseutil v0.1.6/go.mod h1:QmrqtbKuxxSWTN3ETMPuB+VtEiBJ/A9XhoYGv8E1uD8= +github.com/hashicorp/go-secure-stdlib/strutil v0.1.1/go.mod h1:gKOamz3EwoIoJq7mlMIRBpVTAUn8qPCrEclOKKWhD3U= +github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 h1:kes8mmyCpxJsI7FTwtzRqEy9CdjCtrXrXGuOpxEA7Ts= +github.com/hashicorp/go-secure-stdlib/strutil v0.1.2/go.mod h1:Gou2R9+il93BqX25LAKCLuM+y9U2T4hlwvT1yprcna4= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-sockaddr v1.0.2 h1:ztczhD1jLxIRjVejw8gFomI1BQZOe2WoVOu0SyteCQc= github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= -github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= +github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/hcl/v2 v2.14.1 h1:x0BpjfZ+CYdbiz+8yZTQ+gdLO7IXvOut7Da+XJayx34= -github.com/hashicorp/hcl/v2 v2.14.1/go.mod h1:e4z5nxYlWNPdDSNYX+ph14EvWYMFm3eP0zIUqPc2jr0= +github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= +github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= github.com/hashicorp/hcp-sdk-go v0.74.0 h1:41AS+wk78UgB4wM6oAwkB7lMSmOUQTOYQ9pT2Gc2glA= github.com/hashicorp/hcp-sdk-go v0.74.0/go.mod h1:5GwdT+HGhEQsh4n1yK+RADnQkfOo6vHgr2BpYUt2t9U= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= -github.com/hashicorp/memberlist v0.2.2 h1:5+RffWKwqJ71YPu9mWsF7ZOscZmwfasdA8kbdC7AO2g= -github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= +github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= +github.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR/prTM= +github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0= github.com/hashicorp/packer-plugin-amazon v1.2.1 h1:0Xqr8KsTJJhIo0vvjqPYrVMgyVxNRuYH4DeB5m/WAtw= github.com/hashicorp/packer-plugin-amazon v1.2.1/go.mod h1:qlp0h5TWVGgcPzN9mSxPiEAwOUOW3XU/zep0pGd0ZsM= -github.com/hashicorp/packer-plugin-sdk v0.4.0 h1:UyLYe0y02D9wkOQ3FeeZWyFg2+mx2vLuWRGUL5xt50I= -github.com/hashicorp/packer-plugin-sdk v0.4.0/go.mod h1:uNhU3pmjM2ejgHYce/g4J+sa5rh81iYQztpGvGa5FOs= -github.com/hashicorp/serf v0.9.5 h1:EBWvyu9tcRszt3Bxp3KNssBMP1KuHWyO51lz9+786iM= -github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= -github.com/hashicorp/vault/api v1.0.5-0.20200519221902-385fac77e20f/go.mod h1:euTFbi2YJgwcju3imEt919lhJKF68nN1cQPq3aA+kBE= -github.com/hashicorp/vault/api v1.1.1 h1:907ld+Z9cALyvbZK2qUX9cLwvSaEQsMVQB3x2KE8+AI= -github.com/hashicorp/vault/api v1.1.1/go.mod h1:29UXcn/1cLOPHQNMWA7bCz2By4PSd0VKPAydKXS5yN0= -github.com/hashicorp/vault/sdk v0.1.14-0.20200519221530-14615acda45f/go.mod h1:WX57W2PwkrOPQ6rVQk+dy5/htHIaB4aBM70EwKThu10= -github.com/hashicorp/vault/sdk v0.2.1 h1:S4O6Iv/dyKlE9AUTXGa7VOvZmsCvg36toPKgV4f2P4M= -github.com/hashicorp/vault/sdk v0.2.1/go.mod h1:WfUiO1vYzfBkz1TmoE4ZGU7HD0T0Cl/rZwaxjBkgN4U= -github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= -github.com/hashicorp/yamux v0.0.0-20210826001029-26ff87cf9493 h1:brI5vBRUlAlM34VFmnLPwjnCL/FxAJp9XvOdX6Zt+XE= -github.com/hashicorp/yamux v0.0.0-20210826001029-26ff87cf9493/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/hashicorp/packer-plugin-sdk v0.5.2 h1:N+9qzkZLkjR0bgY+l5wFvrTN0G/Mf9f7g2yLsrDjmFI= +github.com/hashicorp/packer-plugin-sdk v0.5.2/go.mod h1:0LRUBS6CPClHvq6zPoGRi7C+cZDAIEaW4CeH4LhWWuc= +github.com/hashicorp/serf v0.10.1 h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY= +github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= +github.com/hashicorp/vault/api v1.10.0 h1:/US7sIjWN6Imp4o/Rj1Ce2Nr5bki/AXi9vAW3p2tOJQ= +github.com/hashicorp/vault/api v1.10.0/go.mod h1:jo5Y/ET+hNyz+JnKDt8XLAdKs+AM0G5W0Vp1IrFI8N8= +github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE= +github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= +github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw= github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 h1:IPJ3dvxmJ4uczJe5YQdrYB16oTJlGSC/OyZDqUk9xX4= github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869/go.mod h1:cJ6Cj7dQo+O6GJNiMx+Pa94qKj+TG8ONdKHgMNIyyag= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= @@ -406,9 +349,6 @@ github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck= github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= -github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= @@ -429,7 +369,6 @@ github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4= -github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= @@ -448,27 +387,30 @@ github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwM github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.13 h1:qdl+GuBjcsKKDco5BsxPJlId98mSWNKqYA+Co0SC1yA= -github.com/mattn/go-isatty v0.0.13/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-tty v0.0.0-20191112051231-74040eebce08 h1:8YAWbq7rJqfbc6IaAvA2eCQuOQvf6Bs4vHKcOyWw//E= github.com/mattn/go-tty v0.0.0-20191112051231-74040eebce08/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.26 h1:gPxPSwALAeHJSjarOs00QjVdV9QoBvc1D2ujQUr5BzU= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= +github.com/miekg/dns v1.1.41 h1:WMszZWJG0XmzbK9FEmzH2TVcqYzFesusSIB41b8KHxY= +github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= -github.com/mitchellh/cli v1.1.2 h1:PvH+lL2B7IQ101xQL63Of8yFS2y+aDlsFcsqNc+u/Kw= -github.com/mitchellh/cli v1.1.2/go.mod h1:6iaV0fGdElS6dPBx0EApTxHrcWvmJphyh2n8YBLPPZ4= +github.com/mitchellh/cli v1.1.5 h1:OxRIeJXpAMztws/XHlN2vu6imG5Dpq+j61AzAX5fLng= +github.com/mitchellh/cli v1.1.5/go.mod h1:v8+iFts2sPIKUV1ltktPXMCC8fumSKFItNcD2cLtRR4= github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ= github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= @@ -478,8 +420,6 @@ github.com/mitchellh/go-fs v0.0.0-20180402235330-b7b9ca407fff h1:bFJ74ac7ZK/jyis github.com/mitchellh/go-fs v0.0.0-20180402235330-b7b9ca407fff/go.mod h1:g7SZj7ABpStq3tM4zqHiVEG5un/DZ1+qJJKO7qx1EvU= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= @@ -488,8 +428,6 @@ github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTS github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.3.2/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -506,24 +444,14 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= -github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d h1:VhgPp6v9qf9Agr/56bj7Y/xa04UccTW04VP0Qed4vnQ= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/nywilken/go-cty v1.13.3 h1:03U99oXf3j3g9xgqAE3YGpixCjM8Mg09KZ0Ji9LzX0o= +github.com/nywilken/go-cty v1.13.3/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/packer-community/winrmcp v0.0.0-20180921211025-c76d91c1e7db h1:9uViuKtx1jrlXLBW/pMnhOfzn3iSEdLase/But/IZRU= @@ -531,40 +459,32 @@ github.com/packer-community/winrmcp v0.0.0-20180921211025-c76d91c1e7db/go.mod h1 github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/lz4 v2.5.2+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= -github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.13.2 h1:taJnKntsWgU+qae21Rx52lIwndAdKrj0mfUNQsz1z4Q= github.com/pkg/sftp v1.13.2/go.mod h1:LzqnAvaD5TWeNBsZpfKxSYn1MbjWwOsCIAFFJbpIsK8= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= github.com/posener/complete v1.2.3 h1:NP0eAhjcjImqslEwo/1hq7gpajME0fTLTezBKDqfXqo= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= @@ -575,7 +495,6 @@ github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= -github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= @@ -586,15 +505,15 @@ github.com/shoenig/go-m1cpu v0.1.5 h1:LF57Z/Fpb/WdGLjt2HZilNnmZOxg/q2bSKTQhgbrLr github.com/shoenig/go-m1cpu v0.1.5/go.mod h1:Wwvst4LR89UxjeFtLRMrpgRiyY4xPsejnVZym39dbAQ= github.com/shoenig/test v0.6.3 h1:GVXWJFk9PiOjN0KoJ7VrJGH6uLPnqxR7/fe3HUPfE0c= github.com/shoenig/test v0.6.3/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= -github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= +github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= +github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 h1:JIAuq3EEf9cgbU6AtGPK4CTG3Zf6CKMNqf0MHTggAUA= github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= -github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= +github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -607,6 +526,7 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= @@ -624,10 +544,8 @@ github.com/ugorji/go/codec v1.2.6/go.mod h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxW github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= -github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= -github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= +github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= +github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= @@ -641,16 +559,12 @@ github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7Jul github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -github.com/zclconf/go-cty v1.0.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= -github.com/zclconf/go-cty v1.4.0/go.mod h1:nHzOclRkoj++EU9ZjSrZvRG0BXIWt8c7loYc0qXAFGQ= -github.com/zclconf/go-cty v1.10.0 h1:mp9ZXQeIcN8kAwuqorjH+Q+njbJKjLrvB2yIh4q7U+0= -github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= +github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b h1:FosyBZYxY34Wul7O/MSKey3txpPYyCqVO5ZyceuQJEI= github.com/zclconf/go-cty-yaml v1.0.1 h1:up11wlgAaDvlAGENcFDnZgkn0qUJurso7k6EpURKNF8= github.com/zclconf/go-cty-yaml v1.0.1/go.mod h1:IP3Ylp0wQpYm50IHK8OZWKMu6sPJIUgKa8XhiVHura0= go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8= go.mongodb.org/mongo-driver v1.12.0 h1:aPx33jmn/rQuJXPQLZQ8NtfPQG8CaqgLThFtqRb0PiE= go.mongodb.org/mongo-driver v1.12.0/go.mod h1:AZkxhPnFJUoH7kZlFkVKucV20K387miPfm7oimrSmK0= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM= @@ -659,18 +573,15 @@ go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvx go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M= go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190222235706-ffb98f73852f/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190418165655-df01cb2cc480/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= +golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200422194213-44a606286825/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= @@ -683,42 +594,35 @@ golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= -golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= +golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= +golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= @@ -731,53 +635,50 @@ golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74Ow golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= +golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= @@ -789,32 +690,25 @@ golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= +golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -824,12 +718,9 @@ google.golang.org/api v0.128.0 h1:RjPESny5CnQRn9V6siglged+DZCgfu9l6mO9dkX9VOg= google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= @@ -839,15 +730,10 @@ google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97 h1: google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97/go.mod h1:iargEX0SFPm3xcfMI0d1domjg0ZF4Aa0p2awqyxhvF0= google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b h1:ZlWIi1wSK56/8hn4QcBp/j9M7Gt3U/3hZw3mC7vDICo= google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:swOH3j0KzcDDgGUWr+SNpyTen5YrXjS3eyPzFYKc6lc= -google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= @@ -867,7 +753,6 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -877,13 +762,6 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntN gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.28 h1:n1tBJnnK2r7g9OW2btFH91V92STTUevLXYFb8gy9EMk= gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= -gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI= -gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -900,7 +778,5 @@ gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= -gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From 263821ac2599123b7fd7aa1a8559fe0b3050f68d Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 28 Nov 2023 13:01:10 -0500 Subject: [PATCH 239/381] hcl2template/functions: Add Non-null refinements for various functions cty's new "refinements" concept allows us to reduce the range of unknown values from our functions. This initial changeset focuses only on declaring which functions are guaranteed to return a non-null result, which is a helpful baseline refinement because it allows "== null" and "!= null" tests to produce known results even when the given value is otherwise unknown. This commit also includes some updates to test results that are now refined based on cty's own built-in refinement behaviors, just as a result of us having updated cty in the previous commit. --- hcl2template/function/datetime.go | 35 ++++++++++++++++------------ hcl2template/function/env.go | 3 ++- hcl2template/function/index.go | 3 ++- hcl2template/function/length.go | 1 + hcl2template/function/length_test.go | 18 ++++++++------ hcl2template/function/refinements.go | 9 +++++++ 6 files changed, 45 insertions(+), 24 deletions(-) create mode 100644 hcl2template/function/refinements.go diff --git a/hcl2template/function/datetime.go b/hcl2template/function/datetime.go index 066db18db39..a2b0cc9d17c 100644 --- a/hcl2template/function/datetime.go +++ b/hcl2template/function/datetime.go @@ -12,19 +12,20 @@ import ( "github.com/zclconf/go-cty/cty/function" ) -// InitTime is the UTC time when this package was initialized. It is +// initTime is the UTC time when this package was initialized. It is // used as the timestamp for all configuration templates so that they // match for a single build. -var InitTime time.Time +var initTime time.Time func init() { - InitTime = time.Now().UTC() + initTime = time.Now().UTC() } // TimestampFunc constructs a function that returns a string representation of the current date and time. var TimestampFunc = function.New(&function.Spec{ - Params: []function.Parameter{}, - Type: function.StaticReturnType(cty.String), + Params: []function.Parameter{}, + Type: function.StaticReturnType(cty.String), + RefineResult: refineNotNull, Impl: func(args []cty.Value, retType cty.Type) (cty.Value, error) { return cty.StringVal(time.Now().UTC().Format(time.RFC3339)), nil }, @@ -40,42 +41,46 @@ func Timestamp() (cty.Value, error) { } // LegacyIsotimeFunc constructs a function that returns a string representation -// of the current date and time using golang's datetime formatting. +// of the current date and time using the Go language datetime formatting syntax. var LegacyIsotimeFunc = function.New(&function.Spec{ Params: []function.Parameter{}, VarParam: &function.Parameter{ Name: "format", Type: cty.String, }, - Type: function.StaticReturnType(cty.String), + Type: function.StaticReturnType(cty.String), + RefineResult: refineNotNull, Impl: func(args []cty.Value, retType cty.Type) (cty.Value, error) { if len(args) > 1 { return cty.StringVal(""), fmt.Errorf("too many values, 1 needed: %v", args) - } else if len(args) == 0 { - return cty.StringVal(InitTime.Format(time.RFC3339)), nil + } + if len(args) == 0 { + return cty.StringVal(initTime.Format(time.RFC3339)), nil } format := args[0].AsString() - return cty.StringVal(InitTime.Format(format)), nil + return cty.StringVal(initTime.Format(format)), nil }, }) // LegacyStrftimeFunc constructs a function that returns a string representation -// of the current date and time using golang's strftime datetime formatting. +// of the current date and time using the Go language strftime datetime formatting syntax. var LegacyStrftimeFunc = function.New(&function.Spec{ Params: []function.Parameter{}, VarParam: &function.Parameter{ Name: "format", Type: cty.String, }, - Type: function.StaticReturnType(cty.String), + Type: function.StaticReturnType(cty.String), + RefineResult: refineNotNull, Impl: func(args []cty.Value, retType cty.Type) (cty.Value, error) { if len(args) > 1 { return cty.StringVal(""), fmt.Errorf("too many values, 1 needed: %v", args) - } else if len(args) == 0 { - return cty.StringVal(InitTime.Format(time.RFC3339)), nil + } + if len(args) == 0 { + return cty.StringVal(initTime.Format(time.RFC3339)), nil } format := args[0].AsString() - return cty.StringVal(strftime.Format(format, InitTime)), nil + return cty.StringVal(strftime.Format(format, initTime)), nil }, }) diff --git a/hcl2template/function/env.go b/hcl2template/function/env.go index 34c09a8b921..b6c36e68494 100644 --- a/hcl2template/function/env.go +++ b/hcl2template/function/env.go @@ -21,7 +21,8 @@ var EnvFunc = function.New(&function.Spec{ AllowUnknown: false, }, }, - Type: function.StaticReturnType(cty.String), + Type: function.StaticReturnType(cty.String), + RefineResult: refineNotNull, Impl: func(args []cty.Value, retType cty.Type) (cty.Value, error) { key := args[0].AsString() value := os.Getenv(key) diff --git a/hcl2template/function/index.go b/hcl2template/function/index.go index cb4f0c51921..8aade576ded 100644 --- a/hcl2template/function/index.go +++ b/hcl2template/function/index.go @@ -23,7 +23,8 @@ var IndexFunc = function.New(&function.Spec{ Type: cty.DynamicPseudoType, }, }, - Type: function.StaticReturnType(cty.Number), + Type: function.StaticReturnType(cty.Number), + RefineResult: refineNotNull, Impl: func(args []cty.Value, retType cty.Type) (ret cty.Value, err error) { if !(args[0].Type().IsListType() || args[0].Type().IsTupleType()) { return cty.NilVal, errors.New("argument must be a list or tuple") diff --git a/hcl2template/function/length.go b/hcl2template/function/length.go index 23b5969af10..f2b83dad925 100644 --- a/hcl2template/function/length.go +++ b/hcl2template/function/length.go @@ -29,6 +29,7 @@ var LengthFunc = function.New(&function.Spec{ return cty.Number, errors.New("argument must be a string, a collection type, or a structural type") } }, + RefineResult: refineNotNull, Impl: func(args []cty.Value, retType cty.Type) (cty.Value, error) { coll := args[0] collTy := args[0].Type() diff --git a/hcl2template/function/length_test.go b/hcl2template/function/length_test.go index 0a68c126c51..9bae3886f74 100644 --- a/hcl2template/function/length_test.go +++ b/hcl2template/function/length_test.go @@ -5,6 +5,7 @@ package function import ( "fmt" + "math" "testing" "github.com/zclconf/go-cty/cty" @@ -69,11 +70,15 @@ func TestLength(t *testing.T) { }, { cty.UnknownVal(cty.List(cty.Bool)), - cty.UnknownVal(cty.Number), + cty.UnknownVal(cty.Number).Refine(). + NotNull(). + NumberRangeLowerBound(cty.Zero, true). + NumberRangeUpperBound(cty.NumberIntVal(math.MaxInt), true). + NewValue(), }, { cty.DynamicVal, - cty.UnknownVal(cty.Number), + cty.UnknownVal(cty.Number).RefineNotNull(), }, { cty.StringVal("hello"), @@ -118,11 +123,10 @@ func TestLength(t *testing.T) { }, { cty.UnknownVal(cty.String), - cty.UnknownVal(cty.Number), - }, - { - cty.DynamicVal, - cty.UnknownVal(cty.Number), + cty.UnknownVal(cty.Number).Refine(). + NotNull(). + NumberRangeLowerBound(cty.Zero, true). + NewValue(), }, } diff --git a/hcl2template/function/refinements.go b/hcl2template/function/refinements.go new file mode 100644 index 00000000000..99314d7ee48 --- /dev/null +++ b/hcl2template/function/refinements.go @@ -0,0 +1,9 @@ +package function + +import ( + "github.com/zclconf/go-cty/cty" +) + +func refineNotNull(b *cty.RefinementBuilder) *cty.RefinementBuilder { + return b.NotNull() +} From 083243c119f13d7af655eabcf1d79835df18f897 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 29 Nov 2023 13:16:13 -0500 Subject: [PATCH 240/381] Bump github.com/go-jose/go-jose/v3 to address GO-2023-2334 --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index af9e82838a5..8b8d0a2f210 100644 --- a/go.mod +++ b/go.mod @@ -96,7 +96,7 @@ require ( github.com/fatih/color v1.14.1 // indirect github.com/go-git/gcfg v1.5.0 // indirect github.com/go-git/go-billy/v5 v5.3.1 // indirect - github.com/go-jose/go-jose/v3 v3.0.0 // indirect + github.com/go-jose/go-jose/v3 v3.0.1 // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect diff --git a/go.sum b/go.sum index dbb79b38c77..27c538c47c5 100644 --- a/go.sum +++ b/go.sum @@ -137,8 +137,8 @@ github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6 github.com/go-git/go-git/v5 v5.4.2 h1:BXyZu9t0VkbiHtqrsvdq39UDhGJTl1h55VW6CSC4aY4= github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-jose/go-jose/v3 v3.0.0 h1:s6rrhirfEP/CGIoc6p+PZAeogN2SxKav6Wp7+dyMWVo= -github.com/go-jose/go-jose/v3 v3.0.0/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= +github.com/go-jose/go-jose/v3 v3.0.1 h1:pWmKFVtt+Jl0vBZTIpz/eAKwsm6LkIxDVVbFHKkchhA= +github.com/go-jose/go-jose/v3 v3.0.1/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= From aad03ba12b44e2175ae947eedc5817f5f5f853c6 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Mon, 27 Nov 2023 16:55:43 -0500 Subject: [PATCH 241/381] docs: reorg plugins installation tabs In order to better document packer plugins installation methods, and since `packer plugins install' is not really manual, we split in two sections the "manual installation". As this is legacy, we stop documenting how to install single-component plugins, and reword the documentation for manually installing a plugin. --- .../content/docs/plugins/install-plugins.mdx | 80 +++++-------------- 1 file changed, 19 insertions(+), 61 deletions(-) diff --git a/website/content/docs/plugins/install-plugins.mdx b/website/content/docs/plugins/install-plugins.mdx index 0460e6c561c..c885d53665c 100644 --- a/website/content/docs/plugins/install-plugins.mdx +++ b/website/content/docs/plugins/install-plugins.mdx @@ -19,12 +19,8 @@ This page explains how to install custom external plugins. Refer to [External Pl ## Installation Guides -Choose the tab that corresponds to the type of plugin you want to install. If you are not sure, check the plugin's name. -- Multi-component plugin names have the prefix `packer-plugin-`. -- Single-component plugin names have a prefix containing the component type, like `packer-provisioner-` or `packer-builder`. - - + -> **Note:** Only _multi-component plugin binaries_ -- plugins named packer-plugin-\*, like the `packer-plugin-amazon` -- are expected to work with @@ -198,72 +194,34 @@ Packer will error if you set the `packer-plugin-` prefix in a `source`. This will avoid conflicting with other plugins for other tools, like Terraform. - - --> The [`packer plugins`](/packer/docs/commands/plugins), available from Packer v1.8.0, command allows -you to install plugins without going through `init`. + -```shell -packer plugins install github.com/hashicorp/vagrant -``` - -## Plugin Installation Workflow Plugin installation via `packer plugins install` works similar to that of the `packer init` command, with the following exceptions no `required_plugins` block required and can be used with both legacy JSON and HCL2 templates. -* [`packer plugins install`](/packer/docs/commands/plugins) will install plugins in the **last** directory -in the following numbered list. - -1. `PACKER_PLUGINS_PATH` if set will be the sole location for installing plugins. All other -plugin directories will be ignored. -1. `PACKER_CONFIG_DIR`\plugins on Windows systems, or `PACKER_CONFIG_DIR`/plugins on all other systems. - - -For manual installation of plugin binaries, without the `packer plugins` command, please continue reading. +-> The [`packer plugins`](/packer/docs/commands/plugins), available from Packer v1.8.0, command allows +you to install plugins without going through `init`. -The easiest way to manually install a plugin is to name it correctly, then place -it in the proper directory. To name a plugin correctly, make sure the binary is -named `packer-plugin-NAME`. For example, `packer-plugin-amazon` for a "plugin" -binary named "amazon". This binary will make one or more components available to -use. Valid types for plugins are down this page. - -The valid types for plugins are: - -- `plugin` - A plugin binary that can contain one or more of each Packer component - type. - -- `builder` - Plugins responsible for building images for a specific - platform. - -- `post-processor` - A post-processor responsible for taking an artifact from - a builder and turning it into something else. - -- `provisioner` - A provisioner to install software on images created by a - builder. +```shell +packer plugins install github.com/hashicorp/vagrant +``` +The command will install the plugin in the `PACKER_CONFIG_DIR` set, or its +default location, which depends on the OS/environment, as documented in +[Configuring Packer](https://developer.hashicorp.com/packer/docs/configure#packer-s-plugin-directory). - - -The easiest way to manually install a plugin is to name it correctly, then place -it in the proper directory. To name a plugin correctly, make sure the binary is -named `packer-COMPONENT-NAME`. For example, `packer-provisioner-comment` for a "plugin" -binary named "comment". This binary will make a single provisioner named `comment` available to -use. Valid types for plugins are down this page. - -The valid types for plugins are: - -- `plugin` - A plugin binary that can contain one or more of each Packer component - type. - -- `builder` - Plugins responsible for building images for a specific - platform. + -- `post-processor` - A post-processor responsible for taking an artifact from - a builder and turning it into something else. +If you have obtained or built a plugin binary for your OS/Architecture and want to +use it with Packer, you can install it manually. For Packer to load the plugin, +it must be named with the convention `packer-plugin-NAME`, and placed in Packer's plugin +directory, as documented in +[Configuring Packer](https://developer.hashicorp.com/packer/docs/configure#packer-s-plugin-directory). -- `provisioner` - A provisioner to install software on images created by a - builder. +For example, if your configuration directory is located in `~/.config/packer`, +you can copy the binary to `~/.config/plugins/packer-plugin-NAME`, and +Packer will be able to load it afterwards. From 35d20c25b92ddb6fc0ba04c78625f10cb0b2168e Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 28 Nov 2023 10:49:17 -0500 Subject: [PATCH 242/381] docs: rm implicit github urls from install guide This section is redundant with the explanations given above, and can therefore be removed from the docs. --- .../content/docs/plugins/install-plugins.mdx | 24 ++----------------- 1 file changed, 2 insertions(+), 22 deletions(-) diff --git a/website/content/docs/plugins/install-plugins.mdx b/website/content/docs/plugins/install-plugins.mdx index c885d53665c..fad795bbb59 100644 --- a/website/content/docs/plugins/install-plugins.mdx +++ b/website/content/docs/plugins/install-plugins.mdx @@ -149,8 +149,8 @@ various outputs, like error messages. * [`packer init`](/packer/docs/commands/init) will install plugins in the **last** directory in the following numbered list. -1. `PACKER_PLUGIN_PATH` if set will be the sole location for installing plugins. All other -plugin directories will be ignored. +1. `PACKER_PLUGIN_PATH` if set will be the sole location for installing plugins. All other +plugin directories will be ignored. 1. `PACKER_CONFIG_DIR`\plugins on Windows systems, or `PACKER_CONFIG_DIR`/plugins on all other systems. * During the initialization of Packer, any plugin required in the @@ -173,26 +173,6 @@ The SHA256SUM file will be automatically generated when a plugin is installed vi was installed manually into `PACKER_CONFIG_DIR/plugins/github.com/azr/happycloud/` then the file `PACKER_CONFIG_DIR/plugins/github.com/azr/happycloud/packer-plugin-happycloud_*_x5.0_darwin_amd64_SHA256SUM` must be generated manually as well. -## Implicit Github urls - -Using the following example : - -```hcl - required_plugins { - happycloud = { - version = ">= 2.7.0" - source = "github.com/azr/happycloud" - } - } -``` - -The plugin getter will look for plugins located at: - -- github.com/azr/packer-plugin-happycloud - -Packer will error if you set the `packer-plugin-` prefix in a `source`. This -will avoid conflicting with other plugins for other tools, like Terraform. - From 24430e27be03f7fe4d7a52b3a98861e1d17a8fe9 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 29 Nov 2023 09:55:58 -0500 Subject: [PATCH 243/381] docs: reorganise plugin installation docs The current documentation about installing plugins does not explain (outside of the `packer init' section) how Packer discovers plugins, what the expected file system hierarchy should be, and the quirk of how this takes precedence over the rest when `required_plugins' is specified. This commit addresses that by reorganising the page to highlight general usage questions on sources and plugins, and simplifies the tabs below to only highlight installation methods. --- .../content/docs/plugins/install-plugins.mdx | 202 ++++++++++-------- 1 file changed, 113 insertions(+), 89 deletions(-) diff --git a/website/content/docs/plugins/install-plugins.mdx b/website/content/docs/plugins/install-plugins.mdx index fad795bbb59..1c2b602823f 100644 --- a/website/content/docs/plugins/install-plugins.mdx +++ b/website/content/docs/plugins/install-plugins.mdx @@ -8,34 +8,113 @@ page_title: Install Plugins Packer plugins are separate, standalone applications that perform tasks during each build. -You do not need to install the builder, provisioner, or -post-processor components that ship with the Packer binary. Packer automatically knows how to find and launch these built-in plugins. +You do not need to install the components that ship with the Packer binary. +Packer automatically knows how to find and launch these built-in plugins. This page explains how to install custom external plugins. Refer to [External Plugins](/packer/plugins) for a list of available plugins and their documentation. -## Plugin Loading Order +Depending on the template type you're using (HCL2 or legacy JSON), the methods for installing plugins may differ. -@include "plugins/plugin-location.mdx" +If you're using HCL2, `packer init` is recommended as you can install all your requirements with one +command, and those requirements are explicitly documented in the template. + +`packer plugins install` is also used to automate the installation from a source, and will need to +be repeated for as many plugins as you need. +We recommend this for JSON as the template cannot contain the information about the required plugins. + +Finally, you can manually install any plugin. This is mostly useful if you're in an environment with +restricted internet access, or if you're installing non-final versions of plugins. + +Refer to the [Installation Guides](#installation-guides) section of this page for information about +each, including usage examples. + +The remainder of this document will serve as documentation on how Packer interacts with plugins. +We encourage you to read this to get familiar with this process, as it will help you troubleshoot +your builds if you encounter problems with that. + +## Source Addresses + +A plugin's source address is its global identifier. It also tells Packer where +to download it. + +Source addresses consist of three parts delimited by slashes (`/`), as +follows: + +`//` + +- **Hostname:** The hostname of the location/service that + distributes the plugin. Currently, the only valid "hostname" is github.com, + but we plan to eventually support plugins downloaded from other domains. + +- **Namespace:** An organizational namespace within the specified host. + This often is the organization that publishes the plugin. + +- **Type:** A short name for the platform or system the plugin manages. The + type is usually the plugin's preferred local name. + +For example, the fictional `myawesomecloud` plugin could belong to the +`hashicorp` namespace on `github.com`, so its `source` could be +`github.com/hashicorp/myawesomecloud`, + +-> Note: the actual _repository_ that myawesomecloud comes from must always have +the name format `github.com/hashicorp/packer-plugin-myawesomecloud`, but the +`required_plugins` block omits the redundant `packer-plugin-` repository prefix +for brevity. + +The source address with all three components given explicitly is called the +plugin's _fully-qualified address_. You will see fully-qualified address in +various outputs, like error messages. + +## Plugin Loading Workflow + +At initialization, Packer attempts to discover the plugins installed locally. The +logic follows what's described in Configuring Packer's +[plugin directory](https://developer.hashicorp.com/packer/docs/configure#packer-s-plugin-directory) +section. + +While Packer is not verbose during this step, you can peek into what it is discovering +with `PACKER_LOG=1` enabled, where you can find log lines similar to the following: + +```shell +[TRACE] discovering plugins in [...] +[INFO] Discovered potential plugin: [...] +``` + +This logic however is ignored when plugins are defined in `required_plugins` blocks; +instead, for every plugin required in this way, Packer will only consider them if they're +installed in Packer's plugin directory, under a directory hierarchy that matches the +source, with the plugin name respecting a convention. + +For example, if we install the `github.com/hashicorp/amazon` plugin in version 1.2.8 through +either `packer init` or `packer plugins install`, this will yield the following (in a +Linux x86_64 environment): + +```shell + +└── github.com + └── hashicorp + └── amazon + ├── packer-plugin-amazon_v1.2.8_x5.0_linux_amd64 + └── packer-plugin-amazon_v1.2.8_x5.0_linux_amd64_SHA256SUM +``` + +Both the plugin's binary, and the related SHA256SUM file must be placed alongside +each other for Packer to consider them for a `required_plugins` constraint. ## Installation Guides --> **Note:** Only _multi-component plugin binaries_ -- plugins named -packer-plugin-\*, like the `packer-plugin-amazon` -- are expected to work with -Packer init. The legacy `builder`, `post-processor` and `provisioner` plugin -types will continue to be detected but Packer cannot install them automatically. -If a plugin you use has not been upgraded to use the multi-component plugin -architecture, contact your maintainer to request an upgrade. +In order to use `packer init` for managing installation of your plugins, there are +two steps required. -## Create a required_plugins block +First, add a [`required_plugins`](/packer/docs/templates/hcl_templates/blocks/packer#specifying-plugin-requirements) +block to your [packer block](/packer/docs/templates/hcl_templates/blocks/packer). -1. Add a - [`required_plugins`](/packer/docs/templates/hcl_templates/blocks/packer#specifying-plugin-requirements) - block to your [packer block](/packer/docs/templates/hcl_templates/blocks/packer). Each block will tell Packer what version(s) of a - particular plugin can be installed. Make sure to set a valid [version - constraint string](/packer/docs/templates/hcl_templates/blocks/packer#version-constraints). +Each block will tell Packer what version(s) of a particular plugin can be installed. +Make sure to set a valid +[version constraint string](/packer/docs/templates/hcl_templates/blocks/packer#version-constraints). Here is an example `required_plugins` block: @@ -54,17 +133,18 @@ packer { } ``` -2. Run [`packer init`](/packer/docs/commands/init) from your project directory (the - directory containing your Packer templates) to install all missing plugin - binaries. Given the above example, Packer will try to look for a GitHub - repository owned by user or organization `azr` named - `packer-plugin-myawesomecloud` and `packer-plugin-happycloud`. +Once your template contains those `required_plugins`, run +[`packer init`](/packer/docs/commands/init) to install all missing plugin +binaries. +Given the above example, Packer will try to look for a GitHub +repository owned by user or organization `azr` named +`packer-plugin-myawesomecloud` and `packer-plugin-happycloud`. ## Names and Addresses Each plugin has two identifiers: -- A `source` address, which is necessary when requiring a plugin not bundled with the Packer binary. +- A `source` address, which is where the plugin is downloaded from. - A unique **local name**, which is used everywhere else in a Packer configuration. ## Local Names @@ -111,81 +191,21 @@ source "foo-ebs" "example" { } ``` -## Source Addresses - -A plugin's source address is its global identifier. It also tells Packer where -to download it. - -Source addresses consist of three parts delimited by slashes (`/`), as -follows: - -`//` - -- **Hostname:** The hostname of the location/service that - distributes the plugin. Currently, the only valid "hostname" is github.com, - but we plan to eventually support plugins downloaded from other domains. - -- **Namespace:** An organizational namespace within the specified host. - This often is the organization that publishes the plugin. - -- **Type:** A short name for the platform or system the plugin manages. The - type is usually the plugin's preferred local name. - -For example, the fictional `myawesomecloud` plugin could belong to the -`hashicorp` namespace on `github.com`, so its `source` could be -`github.com/hashicorp/myawesomecloud`, - --> Note: the actual _repository_ that myawesomecloud comes from must always have -the name format `github.com/hashicorp/packer-plugin-myawesomecloud`, but the -`required_plugins` block omits the redundant `packer-plugin-` repository prefix -for brevity. - -The source address with all three components given explicitly is called the -plugin's _fully-qualified address_. You will see fully-qualified address in -various outputs, like error messages. - -## Plugin Installation Workflow - -* [`packer init`](/packer/docs/commands/init) will install plugins in the **last** directory -in the following numbered list. - -1. `PACKER_PLUGIN_PATH` if set will be the sole location for installing plugins. All other -plugin directories will be ignored. -1. `PACKER_CONFIG_DIR`\plugins on Windows systems, or `PACKER_CONFIG_DIR`/plugins on all other systems. - -* During the initialization of Packer, any plugin required in the -**`required_plugins`** section will be looked up in all entries of the following -list. **First** plugin found takes precedence. Two binaries of the same plugin -with two different version will be considered as two different plugins. Highest -found version matching `required_plugins` will be taken into consideration. - -During initialization, on a `darwin_amd64` system, Packer will look-up for the -following files: - -* `PACKER_PLUGIN_PATH/github.com/azr/happycloud/packer-plugin-happycloud_*_x5.0_darwin_amd64` -* `PACKER_CONFIG_DIR/plugins/github.com/azr/happycloud/packer-plugin-happycloud_*_x5.0_darwin_amd64` - -The first plugin-name/version files found will take precedence. - -For plugins located under the `github.com/azr/happycloud/` directory structure an accompanying SHA256SUM file -will be required in order for `packer init` to ensure the plugin being loaded has not been tampered with. -The SHA256SUM file will be automatically generated when a plugin is installed via `packer init` if the plugin -was installed manually into `PACKER_CONFIG_DIR/plugins/github.com/azr/happycloud/` then the file -`PACKER_CONFIG_DIR/plugins/github.com/azr/happycloud/packer-plugin-happycloud_*_x5.0_darwin_amd64_SHA256SUM` must be generated manually as well. - -Plugin installation via `packer plugins install` works similar to that of the `packer init` command, with the following -exceptions no `required_plugins` block required and can be used with both legacy JSON and HCL2 templates. - --> The [`packer plugins`](/packer/docs/commands/plugins), available from Packer v1.8.0, command allows -you to install plugins without going through `init`. +Plugin installation via `packer plugins install` works similar to that of the `packer init` command, but +no `required_plugins` block are required, and thus can be used with both legacy JSON and HCL2 templates. ```shell packer plugins install github.com/hashicorp/vagrant ``` +-> You can only install one plugin per invocation of the command. If you need to install + a specific version of a plugin, you can specify a version to install as an optional + argument to the command line. + e.g.: `packer plugins install "github.com/hashicorp/vagrant" "v1.0.1"` + The command will install the plugin in the `PACKER_CONFIG_DIR` set, or its default location, which depends on the OS/environment, as documented in [Configuring Packer](https://developer.hashicorp.com/packer/docs/configure#packer-s-plugin-directory). @@ -203,5 +223,9 @@ For example, if your configuration directory is located in `~/.config/packer`, you can copy the binary to `~/.config/plugins/packer-plugin-NAME`, and Packer will be able to load it afterwards. +If you have a `required_plugins` for the plugin you're manually installing, make sure +it respects the constraints described in the [Plugin loading workflow](#plugin-loading-workflow) +section, otherwise Packer will not be able to load it. + From 327d8a4f73ad9f17c7ecceb63a94ebdf8367dbd3 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 4 Dec 2023 13:05:02 -0500 Subject: [PATCH 244/381] Update CHANGELOG for upcoming releases --- CHANGELOG.md | 79 +++++++++++++++++++++++++++++++++++----------------- 1 file changed, 54 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 447935f4a91..30979d0f987 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,64 +1,93 @@ ## 1.10.0 (Upcoming) ### NOTES: -This release contains breaking changes for those users who may be relying on plugins previously bundled into Packer. -As specified in the [Bundled Plugins Removal announcement](https://www.hashicorp.com/blog/announcing-the-removal-of-bundled-plugins-in-hashicorp-packer) HashiCorp maintained plugins -will no longer be shipped with Packer. Users are encouraged to use `packer init` or `packer plugins [...]` for managing required plugins needed for executing their -builds. [GH-12660](https://github.com/hashicorp/packer/pull/12660) +This release contains breaking changes for practitioner relying on plugins + previously bundled into Packer. As specified in the [Bundled Plugins Removal announcement](https://www.hashicorp.com/blog/announcing-the-removal-of-bundled-plugins-in-hashicorp-packer) + HashiCorp maintained plugins will no longer be shipped with Packer. + Users are encouraged to use `packer init` or `packer plugins [...]` when managing required plugins + needed for executing their builds. + [GH-12660](https://github.com/hashicorp/packer/pull/12660) The affected plugins include: -* packer-plugin-amazon -* packer-plugin-ansible -* packer-plugin-azure -* packer-plugin-docker -* packer-plugin-googlcompute -* packer-plugin-qemu -* packer-plugin-vagrant -* packer-plugin-virtualbox -* packer-plugin-vmware -* packer-plugin-vsphere +* [packer-plugin-amazon](https://github.com/hashicorp/packer-plugin-amazon) +* [packer-plugin-ansible](https://github.com/hashicorp/packer-plugin-ansible) +* [packer-plugin-azure](https://github.com/hashicorp/packer-plugin-azure) +* [packer-plugin-docker](https://github.com/hashicorp/packer-plugin-docker) +* [packer-plugin-googlecompute](https://github.com/hashicorp/packer-plugin-googlecompute) +* [packer-plugin-qemu](https://github.com/hashicorp/packer-plugin-qemu) +* [packer-plugin-vagrant](https://github.com/hashicorp/packer-plugin-vagrant) +* [packer-plugin-virtualbox](https://github.com/hashicorp/packer-plugin-virtualbox) +* [packer-plugin-vmware](https://github.com/hashicorp/packer-plugin-vmware) +* [packer-plugin-vsphere](https://github.com/hashicorp/packer-plugin-vsphere) ### SECURITY: +* Bump github.com/go-jose/go-jose/v3 to address GO-2023-2334. There have been + no reported issues with Packer but we are bumping given that it is a + secondary + dependency. [GH-12723](https://github.com/hashicorp/packer/pull/12723) +* Bump Go to 1.20.10 to Address CVE-2023-44487 / CVE-2023-39325. + [GH-12661](https://github.com/hashicorp/packer/pull/12661) * Bump Go to 1.20.11 CVE-2023-45283. There have been no reported issues with Packer but we are bumping given its usage of the path/filepath pkg. [GH-12690](https://github.com/hashicorp/packer/pull/12690) -* Bump Go to 1.20.10 to Address CVE-2023-44487 / CVE-2023-39325. - [GH-12661](https://github.com/hashicorp/packer/pull/12661) +* Bump Packer Plugin SDK to v0.5.2. + [GH-12717](https://github.com/hashicorp/packer/pull/12717) ### PLUGINS: * Removed all HashiCorp vendored plugins from being bundled into the Packer binary. -[GH-12660](https://github.com/hashicorp/packer/pull/12660) +[GH-12660](https://github.com/hashicorp/packer/pull/12660), [GH-12720](https://github.com/hashicorp/packer/pull/12720) * packer-plugin-hcloud: The Hetzner Cloud plugin has been handed over to the Hetzner integrations team. New releases for this plugin are available at https://github.com/hetznercloud/packer-plugin-hcloud. Existing references to the plugin will continue to work but users are advised to update the `required_plugins` block to use the new plugin source address. ``` - required_plugins { + required_plugins { parallels = { source = "github.com/hetznercloud/hcloud" version = "~> 1" - } + } } ``` - ### IMPROVEMENTS: -* cmd/init: warn users running `packer init` on configuration templates with a +* cmd/init: Warn users running `packer init` on configuration templates with a missing `required_plugins` blocks. [GH-12638](https://github.com/hashicorp/packer/pull/12638) -* cmd/plugins: install SHA256SUM file with 0644 perms. +* cmd/plugins: Install SHA256SUM file with 0644 perms. [GH-12665](https://github.com/hashicorp/packer/pull/12665) -* cmd/plugins: remove SHA256SUM file on plugin removal. +* cmd/plugins: Remove SHA256SUM file on plugin removal. [GH-12666](https://github.com/hashicorp/packer/pull/12666) -* cmd/plugins: remove will error if it fails to find the plugin being selected +* cmd/plugins: Remove will error if it fails to find the plugin being selected for removal. [GH-12669](https://github.com/hashicorp/packer/pull/12669) -* core/hcl: rework to remove the recursive execution of data sources with other +* core/hcl2: Remove empty source file reference on unset variable errors. + [GH-12712](https://github.com/hashicorp/packer/pull/12712) +* core/hcl: Improve the recursive execution of data sources with other data source dependencies. [GH-12608](https://github.com/hashicorp/packer/pull/12608) +* core: Bump github.com/hashicorp/hcp-sdk-go from 0.73.0 to 0.74.0 - + [GH-12704](https://github.com/hashicorp/packer/pull/12704) +* core: Bump Packer Plugin SDK to v0.5.2. + [GH-12717](https://github.com/hashicorp/packer/pull/12717) +* core: Provide integration link as hint in error message if a plugin component + is unknown. [GH-12705](https://github.com/hashicorp/packer/pull/12705) * core: Update version output for `packer -v` and `packer --version` to match `packer version`. [GH-12569](https://github.com/hashicorp/packer/pull/12569) +* docs: Update plugin installation guides with supported methods for 1.10.0 and + above. [GH-12713](https://github.com/hashicorp/packer/pull/12713) + +## 1.9.5 (December 4, 2023) + +### SECURITY + +* Bump github.com/go-jose/go-jose/v3 to address GO-2023-2334. + [GH-12723](https://github.com/hashicorp/packer/pull/12723) + +### BUG FIXES: + +* Add VirtualBox as known plugin prefix to prevent endless bundled plugin warning. + [GH-12719](https://github.com/hashicorp/packer/pull/12719) ## 1.9.4 (August 18, 2023) From 6f43a82e024e8835975beb21fa848a375907ba08 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 3 Oct 2023 11:52:48 -0400 Subject: [PATCH 245/381] command: add packer plugins install path flag This new flag allows the `packer plugins install' command to install a plugin from a local binary rather than from Github. This command will only call `describe' on the plugin, and won't do any further checks for functionality. The SHA256SUM will be directly computed from the binary, so as with anything manual and potentially sourced by the community, extra care should be applied when invoking this. --- command/plugins_install.go | 237 ++++++++++++++++++++++++++++++-- command/plugins_install_test.go | 5 +- 2 files changed, 231 insertions(+), 11 deletions(-) diff --git a/command/plugins_install.go b/command/plugins_install.go index 3037c0959d0..e584ea778de 100644 --- a/command/plugins_install.go +++ b/command/plugins_install.go @@ -6,18 +6,24 @@ package command import ( "context" "crypto/sha256" + "encoding/json" + "flag" "fmt" + "io" + "os" + "os/exec" "runtime" "strings" "github.com/hashicorp/go-version" + "github.com/hashicorp/hcl/v2" + "github.com/hashicorp/packer-plugin-sdk/plugin" pluginsdk "github.com/hashicorp/packer-plugin-sdk/plugin" "github.com/hashicorp/packer/hcl2template/addrs" "github.com/hashicorp/packer/packer" plugingetter "github.com/hashicorp/packer/packer/plugin-getter" "github.com/hashicorp/packer/packer/plugin-getter/github" pkrversion "github.com/hashicorp/packer/version" - "github.com/mitchellh/cli" ) type PluginsInstallCommand struct { @@ -30,7 +36,7 @@ func (c *PluginsInstallCommand) Synopsis() string { func (c *PluginsInstallCommand) Help() string { helpText := ` -Usage: packer plugins install [] +Usage: packer plugins install [OPTIONS...] [] This command will install the most recent compatible Packer plugin matching version constraint. @@ -38,6 +44,12 @@ Usage: packer plugins install [] installed. Ex: packer plugins install github.com/hashicorp/happycloud v1.2.3 + +Options: + - path : install the plugin from a locally-sourced plugin binary. This + installs the plugin where a normal invocation would, but will + not try to download it from a web server, but instead directly + install the binary for Packer to be able to load it later on. ` return strings.TrimSpace(helpText) @@ -47,14 +59,55 @@ func (c *PluginsInstallCommand) Run(args []string) int { ctx, cleanup := handleTermInterrupt(c.Ui) defer cleanup() - return c.RunContext(ctx, args) + cmdArgs, ret := c.ParseArgs(args) + if ret != 0 { + return ret + } + + return c.RunContext(ctx, cmdArgs) +} + +type PluginsInstallArgs struct { + MetaArgs + PluginName string + PluginPath string + Version string +} + +func (pa *PluginsInstallArgs) AddFlagSets(flags *flag.FlagSet) { + flags.StringVar(&pa.PluginPath, "path", "", "install the plugin from a specific path") + pa.MetaArgs.AddFlagSets(flags) } -func (c *PluginsInstallCommand) RunContext(buildCtx context.Context, args []string) int { +func (c *PluginsInstallCommand) ParseArgs(args []string) (*PluginsInstallArgs, int) { + pa := &PluginsInstallArgs{} + + flags := c.Meta.FlagSet("plugins install") + flags.Usage = func() { c.Ui.Say(c.Help()) } + pa.AddFlagSets(flags) + err := flags.Parse(args) + if err != nil { + c.Ui.Error(fmt.Sprintf("Failed to parse options: %s", err)) + return pa, 1 + } + + args = flags.Args() if len(args) < 1 || len(args) > 2 { - return cli.RunResultHelp + c.Ui.Error(fmt.Sprintf("Invalid arguments, expected either 1 or 2 positional arguments, got %d", len(args))) + flags.Usage() + return pa, 1 + } + + if len(args) == 2 { + pa.Version = args[1] } + pa.PluginName = args[0] + + return pa, 0 +} + +func (c *PluginsInstallCommand) RunContext(buildCtx context.Context, args *PluginsInstallArgs) int { opts := plugingetter.ListInstallationsOptions{ FromFolders: c.Meta.CoreConfig.Components.PluginConfig.KnownPluginFolders, BinaryInstallationOptions: plugingetter.BinaryInstallationOptions{ @@ -68,19 +121,25 @@ func (c *PluginsInstallCommand) RunContext(buildCtx context.Context, args []stri }, } - plugin, diags := addrs.ParsePluginSourceString(args[0]) + plugin, diags := addrs.ParsePluginSourceString(args.PluginName) if diags.HasErrors() { c.Ui.Error(diags.Error()) return 1 } + // If we did specify a binary to install the plugin from, we ignore + // the Github-based getter in favour of installing it directly. + if args.PluginPath != "" { + return c.InstallFromBinary(args) + } + // a plugin requirement that matches them all pluginRequirement := plugingetter.Requirement{ Identifier: plugin, } - if len(args) > 1 { - constraints, err := version.NewConstraint(args[1]) + if args.Version != "" { + constraints, err := version.NewConstraint(args.Version) if err != nil { c.Ui.Error(err.Error()) return 1 @@ -128,3 +187,165 @@ func (c *PluginsInstallCommand) RunContext(buildCtx context.Context, args []stri return 0 } + +func (c *PluginsInstallCommand) InstallFromBinary(args *PluginsInstallArgs) int { + pluginDirs := c.Meta.CoreConfig.Components.PluginConfig.KnownPluginFolders + + if len(pluginDirs) == 0 { + c.Ui.Say(`Error: cannot find a place to install the plugin to + +In order to install the plugin for later use, Packer needs to know where to +install them. + +This can be specified through the PACKER_CONFIG_DIR environment variable, +but should be automatically inferred by Packer. + +If you see this message, this is likely a Packer bug, please consider opening +an issue on our Github repo to signal it.`) + } + + pluginSlugParts := strings.Split(args.PluginName, "/") + if len(pluginSlugParts) != 3 { + return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Invalid plugin name specifier", + Detail: fmt.Sprintf("The plugin name specified provided (%q) does not conform to the mandated format of //.", args.PluginName), + }}) + } + + // As with the other commands, we get the last plugin directory as it + // has precedence over the others, and is where we'll install the + // plugins to. + pluginDir := pluginDirs[len(pluginDirs)-1] + + s, err := os.Stat(args.PluginPath) + if err != nil { + return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Unable to find plugin to promote", + Detail: fmt.Sprintf("The plugin %q failed to be opened because of an error: %s", args.PluginName, err), + }}) + } + + if s.IsDir() { + return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Plugin to promote cannot be a directory", + Detail: "The packer plugin promote command can only install binaries, not directories", + }}) + } + + describeCmd, err := exec.Command(args.PluginPath, "describe").Output() + if err != nil { + return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Failed to describe the plugin", + Detail: fmt.Sprintf("Packer failed to run %s describe: %s", args.PluginPath, err), + }}) + } + var desc plugin.SetDescription + if err := json.Unmarshal(describeCmd, &desc); err != nil { + return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Failed to decode plugin describe info", + Detail: fmt.Sprintf("'%s describe' produced information that Packer couldn't decode: %s", args.PluginPath, err), + }}) + } + + // Let's override the plugin's version if we specify it in the options + // of the command + if args.Version != "" { + desc.Version = args.Version + } + + pluginBinary, err := os.Open(args.PluginPath) + if err != nil { + return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Failed to open plugin binary", + Detail: fmt.Sprintf("Failed to open plugin binary from %q: %s", args.PluginPath, err), + }}) + } + defer pluginBinary.Close() + + // We'll install the SHA256SUM file alongside the plugin, based on the + // contents of the plugin being passed. + // + // This will make our loaders happy as they require a valid checksum + // for loading plugins installed this way. + shasum := sha256.New() + _, err = io.Copy(shasum, pluginBinary) + if err != nil { + return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Failed to read plugin binary's contents", + Detail: fmt.Sprintf("Failed to read plugin binary from %q: %s", args.PluginPath, err), + }}) + } + + // At this point, we know the provided binary behaves correctly with + // describe, so it's very likely to be a plugin, let's install it. + installDir := fmt.Sprintf("%s/%s", pluginDir, args.PluginName) + err = os.MkdirAll(installDir, 0755) + if err != nil { + return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Failed to create output directory", + Detail: fmt.Sprintf("The installation directory %q failed to be created because of an error: %s", installDir, err), + }}) + } + + binaryPath := fmt.Sprintf( + "%s/packer-plugin-%s_v%s_%s_%s_%s", + installDir, + pluginSlugParts[2], + desc.Version, + desc.APIVersion, + runtime.GOOS, + runtime.GOARCH, + ) + outputPlugin, err := os.OpenFile(binaryPath, os.O_CREATE|os.O_TRUNC|os.O_RDWR, 0755) + if err != nil { + return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Failed to create plugin binary", + Detail: fmt.Sprintf("Failed to create plugin binary at %q: %s", binaryPath, err), + }}) + } + defer outputPlugin.Close() + + _, err = pluginBinary.Seek(0, 0) + if err != nil { + return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Failed to reset plugin's reader", + Detail: fmt.Sprintf("Failed to seek offset 0 while attempting to reset the buffer for the plugin to install: %s", err), + }}) + } + + _, err = io.Copy(outputPlugin, pluginBinary) + if err != nil { + return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Failed to copy plugin binary's contents", + Detail: fmt.Sprintf("Failed to copy plugin binary from %q to %q: %s", args.PluginPath, binaryPath, err), + }}) + } + + shasumPath := fmt.Sprintf("%s_SHA256SUM", binaryPath) + shaFile, err := os.OpenFile(shasumPath, os.O_CREATE|os.O_TRUNC|os.O_RDWR, 0644) + if err != nil { + return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Failed to create plugin SHA256SUM file", + Detail: fmt.Sprintf("Failed to create SHA256SUM file at %q: %s", shasumPath, err), + }}) + } + defer shaFile.Close() + + fmt.Fprintf(shaFile, "%x", shasum.Sum([]byte{})) + + c.Ui.Say(fmt.Sprintf("Successfully installed plugin %s from %s to %s", args.PluginName, args.PluginPath, binaryPath)) + + return 0 +} diff --git a/command/plugins_install_test.go b/command/plugins_install_test.go index 105b9b00067..5461360c36e 100644 --- a/command/plugins_install_test.go +++ b/command/plugins_install_test.go @@ -13,7 +13,6 @@ import ( "testing" "github.com/google/go-cmp/cmp" - "github.com/mitchellh/cli" "golang.org/x/mod/sumdb/dirhash" ) @@ -109,7 +108,7 @@ func TestPluginsInstallCommand_Run(t *testing.T) { expectedPackerConfigDirHashBeforeInstall: "h1:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", packerConfigDir: cfg.dir("4_pkr_plugins_config"), pluginSourceArgs: []string{"github.com/sylviamoss/comment", "v0.2.18", "github.com/sylviamoss/comment", "v0.2.19"}, - want: cli.RunResultHelp, + want: 1, dirFiles: nil, expectedPackerConfigDirHashAfterInstall: "h1:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", }, @@ -120,7 +119,7 @@ func TestPluginsInstallCommand_Run(t *testing.T) { expectedPackerConfigDirHashBeforeInstall: "h1:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", packerConfigDir: cfg.dir("5_pkr_plugins_config"), pluginSourceArgs: []string{}, - want: cli.RunResultHelp, + want: 1, dirFiles: nil, expectedPackerConfigDirHashAfterInstall: "h1:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", }, From a2d9c9dce4a70e7361ade0c4717b48423b686008 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 25 Oct 2023 11:56:30 -0400 Subject: [PATCH 246/381] command: add --force option to init/install The --force option for packer init and packer plugins install enforces installation of a plugin, even if it is already locally installed. This will become useful if for some reason a pre-existing plugin binary/version is already installed, and we want to overwrite it. --- command/cli.go | 2 ++ command/init.go | 14 +++++++++++--- command/plugins_install.go | 4 ++++ packer/plugin-getter/plugins.go | 5 ++++- packer/plugin-getter/plugins_test.go | 8 ++++++++ 5 files changed, 29 insertions(+), 4 deletions(-) diff --git a/command/cli.go b/command/cli.go index 4ad80440f0e..2dfc57dbd0d 100644 --- a/command/cli.go +++ b/command/cli.go @@ -104,6 +104,7 @@ type BuildArgs struct { func (ia *InitArgs) AddFlagSets(flags *flag.FlagSet) { flags.BoolVar(&ia.Upgrade, "upgrade", false, "upgrade any present plugin to the highest allowed version.") + flags.BoolVar(&ia.Force, "force", false, "force installation of a plugin, even if already installed") ia.MetaArgs.AddFlagSets(flags) } @@ -112,6 +113,7 @@ func (ia *InitArgs) AddFlagSets(flags *flag.FlagSet) { type InitArgs struct { MetaArgs Upgrade bool + Force bool } // PluginsRequiredArgs represents a parsed cli line for a `packer plugins required ` diff --git a/command/init.go b/command/init.go index 71332d57d25..2b8cdd7595a 100644 --- a/command/init.go +++ b/command/init.go @@ -11,6 +11,7 @@ import ( "runtime" "strings" + gversion "github.com/hashicorp/go-version" pluginsdk "github.com/hashicorp/packer-plugin-sdk/plugin" "github.com/hashicorp/packer/packer" plugingetter "github.com/hashicorp/packer/packer/plugin-getter" @@ -120,16 +121,21 @@ for more info.`) return 1 } - log.Printf("[TRACE] for plugin %s found %d matching installation(s)", pluginRequirement.Identifier, len(installs)) + if len(installs) > 0 { + if !cla.Force && !cla.Upgrade { + continue + } - if len(installs) > 0 && cla.Upgrade == false { - continue + if cla.Force && !cla.Upgrade { + pluginRequirement.VersionConstraints, _ = gversion.NewConstraint(fmt.Sprintf("=%s", installs[len(installs)-1].Version)) + } } newInstall, err := pluginRequirement.InstallLatest(plugingetter.InstallOptions{ InFolders: opts.FromFolders, BinaryInstallationOptions: opts.BinaryInstallationOptions, Getters: getters, + Force: cla.Force, }) if err != nil { c.Ui.Error(fmt.Sprintf("Failed getting the %q plugin:", pluginRequirement.Identifier)) @@ -163,6 +169,8 @@ Options: version, if there is a new higher one. Note that this still takes into consideration the version constraint of the config. + -force Forces installation of plugins, even if already + installed. ` return strings.TrimSpace(helpText) diff --git a/command/plugins_install.go b/command/plugins_install.go index e584ea778de..fbb2876cda5 100644 --- a/command/plugins_install.go +++ b/command/plugins_install.go @@ -50,6 +50,7 @@ Options: installs the plugin where a normal invocation would, but will not try to download it from a web server, but instead directly install the binary for Packer to be able to load it later on. + - force: forces installation of a plugin, even if it is already there. ` return strings.TrimSpace(helpText) @@ -72,10 +73,12 @@ type PluginsInstallArgs struct { PluginName string PluginPath string Version string + Force bool } func (pa *PluginsInstallArgs) AddFlagSets(flags *flag.FlagSet) { flags.StringVar(&pa.PluginPath, "path", "", "install the plugin from a specific path") + flags.BoolVar(&pa.Force, "force", false, "force installation of a plugin, even if already installed") pa.MetaArgs.AddFlagSets(flags) } @@ -168,6 +171,7 @@ func (c *PluginsInstallCommand) RunContext(buildCtx context.Context, args *Plugi InFolders: opts.FromFolders, BinaryInstallationOptions: opts.BinaryInstallationOptions, Getters: getters, + Force: args.Force, }) if err != nil { diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index c9fbd0b9d97..29b34da1c04 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -244,6 +244,9 @@ type InstallOptions struct { // folder of this list. InFolders []string + // Forces installation of the plugin, even if already installed. + Force bool + BinaryInstallationOptions } @@ -582,7 +585,7 @@ func (pr *Requirement) InstallLatest(opts InstallOptions) (*Installation, error) log.Printf("[TRACE] found a pre-exising %q checksum file", potentialChecksumer.Type) // if outputFile is there and matches the checksum: do nothing more. - if err := localChecksum.ChecksumFile(localChecksum.Expected, potentialOutputFilename); err == nil { + if err := localChecksum.ChecksumFile(localChecksum.Expected, potentialOutputFilename); err == nil && !opts.Force { log.Printf("[INFO] %s v%s plugin is already correctly installed in %q", pr.Identifier, version, potentialOutputFilename) return nil, nil // success } diff --git a/packer/plugin-getter/plugins_test.go b/packer/plugin-getter/plugins_test.go index dfb28767067..513f2c4993b 100644 --- a/packer/plugin-getter/plugins_test.go +++ b/packer/plugin-getter/plugins_test.go @@ -349,6 +349,7 @@ func TestRequirement_InstallLatest(t *testing.T) { pluginFolderOne, pluginFolderTwo, }, + false, BinaryInstallationOptions{ APIVersionMajor: "5", APIVersionMinor: "0", OS: "darwin", ARCH: "amd64", @@ -385,6 +386,7 @@ func TestRequirement_InstallLatest(t *testing.T) { pluginFolderOne, pluginFolderTwo, }, + false, BinaryInstallationOptions{ APIVersionMajor: "5", APIVersionMinor: "1", OS: "darwin", ARCH: "amd64", @@ -430,6 +432,7 @@ func TestRequirement_InstallLatest(t *testing.T) { pluginFolderOne, pluginFolderTwo, }, + false, BinaryInstallationOptions{ APIVersionMajor: "5", APIVersionMinor: "0", OS: "darwin", ARCH: "amd64", @@ -477,6 +480,7 @@ func TestRequirement_InstallLatest(t *testing.T) { pluginFolderOne, pluginFolderTwo, }, + false, BinaryInstallationOptions{ APIVersionMajor: "6", APIVersionMinor: "1", OS: "darwin", ARCH: "amd64", @@ -527,6 +531,7 @@ func TestRequirement_InstallLatest(t *testing.T) { pluginFolderOne, pluginFolderTwo, }, + false, BinaryInstallationOptions{ APIVersionMajor: "6", APIVersionMinor: "1", OS: "darwin", ARCH: "amd64", @@ -577,6 +582,7 @@ func TestRequirement_InstallLatest(t *testing.T) { pluginFolderOne, pluginFolderTwo, }, + false, BinaryInstallationOptions{ APIVersionMajor: "6", APIVersionMinor: "1", OS: "linux", ARCH: "amd64", @@ -621,6 +627,7 @@ func TestRequirement_InstallLatest(t *testing.T) { pluginFolderOne, pluginFolderTwo, }, + false, BinaryInstallationOptions{ APIVersionMajor: "6", APIVersionMinor: "1", OS: "darwin", ARCH: "amd64", @@ -662,6 +669,7 @@ func TestRequirement_InstallLatest(t *testing.T) { []string{ pluginFolderWrongChecksums, }, + false, BinaryInstallationOptions{ APIVersionMajor: "6", APIVersionMinor: "1", OS: "darwin", ARCH: "amd64", From ae5b91864c54a5e45304e7a0c25829221632854f Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 24 Nov 2023 10:56:01 -0500 Subject: [PATCH 247/381] command: reject version with --path for install To avoid plugins being installed with a specific version when a path is used for installing a plugin from a locally sourced plugin binary, we explicitly reject the combination of both a path and a version for plugins install. --- command/plugins_install.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/command/plugins_install.go b/command/plugins_install.go index fbb2876cda5..81b74cbd601 100644 --- a/command/plugins_install.go +++ b/command/plugins_install.go @@ -50,6 +50,7 @@ Options: installs the plugin where a normal invocation would, but will not try to download it from a web server, but instead directly install the binary for Packer to be able to load it later on. + This option cannot be specified with a version constraint. - force: forces installation of a plugin, even if it is already there. ` @@ -105,6 +106,12 @@ func (c *PluginsInstallCommand) ParseArgs(args []string) (*PluginsInstallArgs, i pa.Version = args[1] } + if pa.Path != "" && pa.Version != "" { + c.Ui.Error("Invalid arguments: a version cannot be specified with --path") + flags.Usage() + return pa, 1 + } + pa.PluginName = args[0] return pa, 0 @@ -256,12 +263,6 @@ an issue on our Github repo to signal it.`) }}) } - // Let's override the plugin's version if we specify it in the options - // of the command - if args.Version != "" { - desc.Version = args.Version - } - pluginBinary, err := os.Open(args.PluginPath) if err != nil { return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ From e293f2d890b21fe130e4cdf53dd086778b914b55 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 24 Nov 2023 11:20:54 -0500 Subject: [PATCH 248/381] command: plugins install reject non-releases When installing a plugin with packer plugins install --path, we only accept release versions of a plugin, as otherwise the loading can be inconsistent if for example a user specifies a required_plugins block in their template, in which case the plugins will be ignored. Until we have a simpler loading scheme then, we will reject non-release versions of plugins to avoid confusion. --- command/plugins_install.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/command/plugins_install.go b/command/plugins_install.go index 81b74cbd601..f6d7b11086e 100644 --- a/command/plugins_install.go +++ b/command/plugins_install.go @@ -263,6 +263,14 @@ an issue on our Github repo to signal it.`) }}) } + if strings.Contains(desc.Version, "-") { + return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Invalid version", + Detail: fmt.Sprintf("Packer can only install plugin releases with this command (ex: 1.0.0), the binary's reported version is %q", desc.Version), + }}) + } + pluginBinary, err := os.Open(args.PluginPath) if err != nil { return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ From 8e2a22e58391292f4af26c03c9bc147a9f588e74 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 1 Dec 2023 13:14:08 -0500 Subject: [PATCH 249/381] command: simplify local binary installation Read original binary into memory to fix case when installation destination and source were the same, resulting in an empty binary. --- command/plugins_install.go | 130 +++++++++++++++++-------------------- 1 file changed, 61 insertions(+), 69 deletions(-) diff --git a/command/plugins_install.go b/command/plugins_install.go index f6d7b11086e..b467eee5f4d 100644 --- a/command/plugins_install.go +++ b/command/plugins_install.go @@ -4,6 +4,7 @@ package command import ( + "bytes" "context" "crypto/sha256" "encoding/json" @@ -12,6 +13,7 @@ import ( "io" "os" "os/exec" + "path/filepath" "runtime" "strings" @@ -44,12 +46,13 @@ Usage: packer plugins install [OPTIONS...] [] installed. Ex: packer plugins install github.com/hashicorp/happycloud v1.2.3 + packer plugins install --path ./packer-plugin-happycloud "github.com/hashicorp/happycloud" Options: - path : install the plugin from a locally-sourced plugin binary. This installs the plugin where a normal invocation would, but will - not try to download it from a web server, but instead directly - install the binary for Packer to be able to load it later on. + not try to download it from a remote location, and instead + install the binary in the Packer plugins path. This option cannot be specified with a version constraint. - force: forces installation of a plugin, even if it is already there. ` @@ -71,15 +74,15 @@ func (c *PluginsInstallCommand) Run(args []string) int { type PluginsInstallArgs struct { MetaArgs - PluginName string - PluginPath string - Version string - Force bool + PluginIdentifier string + PluginPath string + Version string + Force bool } func (pa *PluginsInstallArgs) AddFlagSets(flags *flag.FlagSet) { - flags.StringVar(&pa.PluginPath, "path", "", "install the plugin from a specific path") - flags.BoolVar(&pa.Force, "force", false, "force installation of a plugin, even if already installed") + flags.StringVar(&pa.PluginPath, "path", "", "install the binary specified by path as a Packer plugin.") + flags.BoolVar(&pa.Force, "force", false, "force installation of the specified plugin, even if already installed.") pa.MetaArgs.AddFlagSets(flags) } @@ -107,13 +110,12 @@ func (c *PluginsInstallCommand) ParseArgs(args []string) (*PluginsInstallArgs, i } if pa.Path != "" && pa.Version != "" { - c.Ui.Error("Invalid arguments: a version cannot be specified with --path") + c.Ui.Error("Invalid arguments: a version cannot be specified when using --path to install a local plugin binary") flags.Usage() return pa, 1 } - pa.PluginName = args[0] - + pa.PluginIdentifier = args[0] return pa, 0 } @@ -130,8 +132,11 @@ func (c *PluginsInstallCommand) RunContext(buildCtx context.Context, args *Plugi }, }, } + if runtime.GOOS == "windows" { + opts.BinaryInstallationOptions.Ext = ".exe" + } - plugin, diags := addrs.ParsePluginSourceString(args.PluginName) + plugin, diags := addrs.ParsePluginSourceString(args.PluginIdentifier) if diags.HasErrors() { c.Ui.Error(diags.Error()) return 1 @@ -140,7 +145,7 @@ func (c *PluginsInstallCommand) RunContext(buildCtx context.Context, args *Plugi // If we did specify a binary to install the plugin from, we ignore // the Github-based getter in favour of installing it directly. if args.PluginPath != "" { - return c.InstallFromBinary(args) + return c.InstallFromBinary(opts, plugin, args) } // a plugin requirement that matches them all @@ -157,10 +162,6 @@ func (c *PluginsInstallCommand) RunContext(buildCtx context.Context, args *Plugi pluginRequirement.VersionConstraints = constraints } - if runtime.GOOS == "windows" && opts.Ext == "" { - opts.BinaryInstallationOptions.Ext = ".exe" - } - getters := []plugingetter.Getter{ &github.Getter{ // In the past some terraform plugins downloads were blocked from a @@ -199,42 +200,29 @@ func (c *PluginsInstallCommand) RunContext(buildCtx context.Context, args *Plugi return 0 } -func (c *PluginsInstallCommand) InstallFromBinary(args *PluginsInstallArgs) int { - pluginDirs := c.Meta.CoreConfig.Components.PluginConfig.KnownPluginFolders - - if len(pluginDirs) == 0 { - c.Ui.Say(`Error: cannot find a place to install the plugin to - -In order to install the plugin for later use, Packer needs to know where to -install them. - -This can be specified through the PACKER_CONFIG_DIR environment variable, -but should be automatically inferred by Packer. +func (c *PluginsInstallCommand) InstallFromBinary(opts plugingetter.ListInstallationsOptions, pluginIdentifier *addrs.Plugin, args *PluginsInstallArgs) int { + // As with the other commands, we get the last plugin directory as it + // has precedence over the others, and is where we'll install the + // plugins to. + pluginDir := opts.FromFolders[len(opts.FromFolders)-1] -If you see this message, this is likely a Packer bug, please consider opening -an issue on our Github repo to signal it.`) - } + var err error - pluginSlugParts := strings.Split(args.PluginName, "/") - if len(pluginSlugParts) != 3 { + args.PluginPath, err = filepath.Abs(args.PluginPath) + if err != nil { return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ Severity: hcl.DiagError, - Summary: "Invalid plugin name specifier", - Detail: fmt.Sprintf("The plugin name specified provided (%q) does not conform to the mandated format of //.", args.PluginName), + Summary: "Failed to transform path", + Detail: fmt.Sprintf("Failed to transform the given path to an absolute one: %s", err), }}) } - // As with the other commands, we get the last plugin directory as it - // has precedence over the others, and is where we'll install the - // plugins to. - pluginDir := pluginDirs[len(pluginDirs)-1] - s, err := os.Stat(args.PluginPath) if err != nil { return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ Severity: hcl.DiagError, Summary: "Unable to find plugin to promote", - Detail: fmt.Sprintf("The plugin %q failed to be opened because of an error: %s", args.PluginName, err), + Detail: fmt.Sprintf("The plugin %q failed to be opened because of an error: %s", args.PluginIdentifier, err), }}) } @@ -254,6 +242,7 @@ an issue on our Github repo to signal it.`) Detail: fmt.Sprintf("Packer failed to run %s describe: %s", args.PluginPath, err), }}) } + var desc plugin.SetDescription if err := json.Unmarshal(describeCmd, &desc); err != nil { return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ @@ -263,7 +252,15 @@ an issue on our Github repo to signal it.`) }}) } - if strings.Contains(desc.Version, "-") { + semver, err := version.NewSemver(desc.Version) + if err != nil { + return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Invalid version", + Detail: fmt.Sprintf("Plugin's reported version (%q) is not semver-compatible: %s", desc.Version, err), + }}) + } + if semver.Prerelease() != "" { return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ Severity: hcl.DiagError, Summary: "Invalid version", @@ -279,15 +276,9 @@ an issue on our Github repo to signal it.`) Detail: fmt.Sprintf("Failed to open plugin binary from %q: %s", args.PluginPath, err), }}) } - defer pluginBinary.Close() - // We'll install the SHA256SUM file alongside the plugin, based on the - // contents of the plugin being passed. - // - // This will make our loaders happy as they require a valid checksum - // for loading plugins installed this way. - shasum := sha256.New() - _, err = io.Copy(shasum, pluginBinary) + pluginContents := bytes.Buffer{} + _, err = io.Copy(&pluginContents, pluginBinary) if err != nil { return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ Severity: hcl.DiagError, @@ -295,10 +286,14 @@ an issue on our Github repo to signal it.`) Detail: fmt.Sprintf("Failed to read plugin binary from %q: %s", args.PluginPath, err), }}) } + _ = pluginBinary.Close() // At this point, we know the provided binary behaves correctly with // describe, so it's very likely to be a plugin, let's install it. - installDir := fmt.Sprintf("%s/%s", pluginDir, args.PluginName) + installDir := filepath.Join( + pluginDir, + filepath.Join(pluginIdentifier.Parts()...), + ) err = os.MkdirAll(installDir, 0755) if err != nil { return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ @@ -308,15 +303,17 @@ an issue on our Github repo to signal it.`) }}) } - binaryPath := fmt.Sprintf( - "%s/packer-plugin-%s_v%s_%s_%s_%s", - installDir, - pluginSlugParts[2], + outputPrefix := fmt.Sprintf( + "packer-plugin-%s_v%s_%s", + pluginIdentifier.Type, desc.Version, desc.APIVersion, - runtime.GOOS, - runtime.GOARCH, ) + binaryPath := filepath.Join( + installDir, + outputPrefix+opts.BinaryInstallationOptions.FilenameSuffix(), + ) + outputPlugin, err := os.OpenFile(binaryPath, os.O_CREATE|os.O_TRUNC|os.O_RDWR, 0755) if err != nil { return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ @@ -327,16 +324,7 @@ an issue on our Github repo to signal it.`) } defer outputPlugin.Close() - _, err = pluginBinary.Seek(0, 0) - if err != nil { - return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ - Severity: hcl.DiagError, - Summary: "Failed to reset plugin's reader", - Detail: fmt.Sprintf("Failed to seek offset 0 while attempting to reset the buffer for the plugin to install: %s", err), - }}) - } - - _, err = io.Copy(outputPlugin, pluginBinary) + _, err = outputPlugin.Write(pluginContents.Bytes()) if err != nil { return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ Severity: hcl.DiagError, @@ -345,6 +333,11 @@ an issue on our Github repo to signal it.`) }}) } + // We'll install the SHA256SUM file alongside the plugin, based on the + // contents of the plugin being passed. + shasum := sha256.New() + _, _ = shasum.Write(pluginContents.Bytes()) + shasumPath := fmt.Sprintf("%s_SHA256SUM", binaryPath) shaFile, err := os.OpenFile(shasumPath, os.O_CREATE|os.O_TRUNC|os.O_RDWR, 0644) if err != nil { @@ -357,8 +350,7 @@ an issue on our Github repo to signal it.`) defer shaFile.Close() fmt.Fprintf(shaFile, "%x", shasum.Sum([]byte{})) - - c.Ui.Say(fmt.Sprintf("Successfully installed plugin %s from %s to %s", args.PluginName, args.PluginPath, binaryPath)) + c.Ui.Say(fmt.Sprintf("Successfully installed plugin %s from %s to %s", args.PluginIdentifier, args.PluginPath, binaryPath)) return 0 } From 97e2e9e637bd7025edc1a90c1df967ff42c7a319 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Mon, 4 Dec 2023 09:50:02 -0500 Subject: [PATCH 250/381] docs: add exerpt on packer plugins install --path --- command/init.go | 2 +- command/plugins_install.go | 2 +- website/content/docs/plugins/install-plugins.mdx | 10 ++++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/command/init.go b/command/init.go index 2b8cdd7595a..9e5b82f04ba 100644 --- a/command/init.go +++ b/command/init.go @@ -169,7 +169,7 @@ Options: version, if there is a new higher one. Note that this still takes into consideration the version constraint of the config. - -force Forces installation of plugins, even if already + -force Forces reinstallation of plugins, even if already installed. ` diff --git a/command/plugins_install.go b/command/plugins_install.go index b467eee5f4d..4d8434a2780 100644 --- a/command/plugins_install.go +++ b/command/plugins_install.go @@ -54,7 +54,7 @@ Options: not try to download it from a remote location, and instead install the binary in the Packer plugins path. This option cannot be specified with a version constraint. - - force: forces installation of a plugin, even if it is already there. + - force: forces reinstallation of plugins, even if already installed. ` return strings.TrimSpace(helpText) diff --git a/website/content/docs/plugins/install-plugins.mdx b/website/content/docs/plugins/install-plugins.mdx index 1c2b602823f..b2d97975216 100644 --- a/website/content/docs/plugins/install-plugins.mdx +++ b/website/content/docs/plugins/install-plugins.mdx @@ -227,5 +227,15 @@ If you have a `required_plugins` for the plugin you're manually installing, make it respects the constraints described in the [Plugin loading workflow](#plugin-loading-workflow) section, otherwise Packer will not be able to load it. +Starting with v1.10.0 of Packer, you can also use `packer plugins install` with the +`--path` flag to install a plugin from a binary, following the layout that is required to +work with `required_plugins` block. + +```shell +packer plugins install --path github.com/hashicorp/vagrant +``` + +-> packer plugins install --path only works with release versions of plugins. + From 91a16aa8e070a67e6c13f5aa25b19f8aaa28f229 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 5 Dec 2023 06:36:24 -0500 Subject: [PATCH 251/381] Remove migrated plugins from old plugin docs framework This change removes the following plugins from the old docs framework, as they have been fully migrated to the integrations framework. * ethanmdavidson/packer-plugin-git * linode/packer-plugin-linode * parallels/packer-plugin-parallels * ivoronin/packer-plugin-sshkey * cirruslabs/packer-plugin-tart --- website/data/plugins-manifest.json | 36 ------------------------------ 1 file changed, 36 deletions(-) diff --git a/website/data/plugins-manifest.json b/website/data/plugins-manifest.json index 5a3c0034ad6..525d5ede175 100644 --- a/website/data/plugins-manifest.json +++ b/website/data/plugins-manifest.json @@ -22,13 +22,6 @@ "version": "latest", "sourceBranch": "main" }, - { - "title": "Git", - "path": "git", - "repo": "ethanmdavidson/packer-plugin-git", - "version": "latest", - "sourceBranch": "main" - }, { "title": "Gridscale", "path": "gridscale", @@ -52,14 +45,6 @@ "pluginTier": "community", "version": "latest" }, - { - "title": "Linode", - "path": "linode", - "repo": "linode/packer-plugin-linode", - "pluginTier": "verified", - "version": "latest", - "isHcpPackerReady": true - }, { "title": "Libvirt", "path": "libvirt", @@ -90,13 +75,6 @@ "pluginTier": "verified", "isHcpPackerReady": true }, - { - "title": "Parallels", - "path": "parallels", - "repo": "parallels/packer-plugin-parallels", - "version": "latest", - "pluginTier": "verified" - }, { "title": "Scaleway", "path": "scaleway", @@ -104,20 +82,6 @@ "pluginTier": "verified", "version": "latest" }, - { - "title": "SSH Key", - "path": "sshkey", - "repo": "ivoronin/packer-plugin-sshkey", - "pluginTier": "community", - "version": "latest" - }, - { - "title": "Tart", - "path": "tart", - "repo": "cirruslabs/packer-plugin-tart", - "pluginTier": "community", - "version": "latest" - }, { "title": "UCloud", "path": "ucloud", From da97f46958d7bf51fd4d2f6427bc3d4f16edbbe5 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Mon, 4 Dec 2023 10:38:44 -0500 Subject: [PATCH 252/381] plugin-getter: don't rely only on version for list The plugins installed command list installed plugins, and prints out all their paths and versions. The results are listed in a list of unique versions, in ascending order. When listing plugins outside of a specific identifier however, because of the insertion in the list works, we only consider the version number, and ignore all subsequent insertions with the same version. This causes a problem when we have multiple plugins installed with the same version, as only the first one that is discovered (typically the one with lexicographical precedence) gets inserted, and the others are ignored. To support such a use case, we change the insertion routine to not only support versions, but also paths when finding a spot to insert the installation into. --- packer/plugin-getter/plugins.go | 18 +----- packer/plugin-getter/plugins_test.go | 56 ++++++++++++++++++- ...cker-plugin-alazon_v1.2.5_x5.0_linux_amd64 | 1 + ...n-alazon_v1.2.5_x5.0_linux_amd64_SHA256SUM | 1 + ...cker-plugin-amazon_v1.2.5_x5.0_linux_amd64 | 1 + ...n-amazon_v1.2.5_x5.0_linux_amd64_SHA256SUM | 1 + 6 files changed, 60 insertions(+), 18 deletions(-) create mode 100644 packer/plugin-getter/testdata/plugins_3/github.com/hashicorp/alazon/packer-plugin-alazon_v1.2.5_x5.0_linux_amd64 create mode 100644 packer/plugin-getter/testdata/plugins_3/github.com/hashicorp/alazon/packer-plugin-alazon_v1.2.5_x5.0_linux_amd64_SHA256SUM create mode 100644 packer/plugin-getter/testdata/plugins_3/github.com/hashicorp/amazon/packer-plugin-amazon_v1.2.5_x5.0_linux_amd64 create mode 100644 packer/plugin-getter/testdata/plugins_3/github.com/hashicorp/amazon/packer-plugin-amazon_v1.2.5_x5.0_linux_amd64_SHA256SUM diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index 29b34da1c04..d6f52ebcc22 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -177,7 +177,7 @@ func (pr Requirement) ListInstallations(opts ListInstallationsOptions) (InstallL continue } - res.InsertSortedUniq(&Installation{ + res = append(res, &Installation{ BinaryPath: path, Version: pluginVersionStr, }) @@ -206,22 +206,6 @@ func (l InstallList) String() string { return v.String() } -// InsertSortedUniq inserts the installation in the right spot in the list by -// comparing the version lexicographically. -// A Duplicate version will replace any already present version. -func (l *InstallList) InsertSortedUniq(install *Installation) { - pos := sort.Search(len(*l), func(i int) bool { return (*l)[i].Version >= install.Version }) - if len(*l) > pos && (*l)[pos].Version == install.Version { - // already detected, let's ignore any new foundings, this way any plugin - // close to cwd or the packer exec takes precedence; this will be better - // for plugin development/tests. - return - } - (*l) = append((*l), nil) - copy((*l)[pos+1:], (*l)[pos:]) - (*l)[pos] = install -} - // Installation describes a plugin installation type Installation struct { // path to where binary is installed, if installed. diff --git a/packer/plugin-getter/plugins_test.go b/packer/plugin-getter/plugins_test.go index 513f2c4993b..e13f8cb3825 100644 --- a/packer/plugin-getter/plugins_test.go +++ b/packer/plugin-getter/plugins_test.go @@ -27,6 +27,8 @@ var ( pluginFolderTwo = filepath.Join("testdata", "plugins_2") + pluginFolderThree = filepath.Join("testdata", "plugins_3") + pluginFolderWrongChecksums = filepath.Join("testdata", "wrong_checksums") ) @@ -106,8 +108,8 @@ func TestPlugin_ListInstallations(t *testing.T) { BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "amazon", "packer-plugin-amazon_v1.2.5_x5.0_windows_amd64.exe"), }, { - BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "google", "packer-plugin-google_v4.5.6_x5.0_windows_amd64.exe"), Version: "v4.5.6", + BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "google", "packer-plugin-google_v4.5.6_x5.0_windows_amd64.exe"), }, { Version: "v4.5.7", @@ -117,10 +119,22 @@ func TestPlugin_ListInstallations(t *testing.T) { Version: "v4.5.8", BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "google", "packer-plugin-google_v4.5.8_x5.0_windows_amd64.exe"), }, + { + Version: "v4.5.6", + BinaryPath: filepath.Join(pluginFolderTwo, "github.com", "hashicorp", "google", "packer-plugin-google_v4.5.6_x5.0_windows_amd64.exe"), + }, { Version: "v4.5.9", BinaryPath: filepath.Join(pluginFolderTwo, "github.com", "hashicorp", "google", "packer-plugin-google_v4.5.9_x5.0_windows_amd64.exe"), }, + { + Version: "v4.5.6", + BinaryPath: filepath.Join(pluginFolderTwo, "github.com", "hashicorp copy", "google", "packer-plugin-google_v4.5.6_x5.0_windows_amd64.exe"), + }, + { + Version: "v4.5.9", + BinaryPath: filepath.Join(pluginFolderTwo, "github.com", "hashicorp copy", "google", "packer-plugin-google_v4.5.9_x5.0_windows_amd64.exe"), + }, }, }, @@ -188,6 +202,10 @@ func TestPlugin_ListInstallations(t *testing.T) { Version: "v1.2.3", BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "amazon", "packer-plugin-amazon_v1.2.3_x5.0_darwin_amd64"), }, + { + Version: "v1.2.3", + BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "amazon", "packer-plugin-amazon_v1.2.3_x5.1_darwin_amd64"), + }, { Version: "v1.2.4", BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "amazon", "packer-plugin-amazon_v1.2.4_x5.0_darwin_amd64"), @@ -276,12 +294,48 @@ func TestPlugin_ListInstallations(t *testing.T) { Version: "v4.5.8", BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "google", "packer-plugin-google_v4.5.8_x5.0_windows_amd64.exe"), }, + { + Version: "v4.5.6", + BinaryPath: filepath.Join(pluginFolderTwo, "github.com", "hashicorp", "google", "packer-plugin-google_v4.5.6_x5.0_windows_amd64.exe"), + }, { Version: "v4.5.9", BinaryPath: filepath.Join(pluginFolderTwo, "github.com", "hashicorp", "google", "packer-plugin-google_v4.5.9_x5.0_windows_amd64.exe"), }, }, }, + { + "test nil identifier - multiple plugins with same version", + fields{ + Identifier: "", + }, + ListInstallationsOptions{ + []string{ + pluginFolderThree, + }, + BinaryInstallationOptions{ + APIVersionMajor: "5", APIVersionMinor: "0", + OS: "linux", ARCH: "amd64", + Checksummers: []Checksummer{ + { + Type: "sha256", + Hash: sha256.New(), + }, + }, + }, + }, + false, + []*Installation{ + { + Version: "v1.2.5", + BinaryPath: filepath.Join(pluginFolderThree, "github.com", "hashicorp", "alazon", "packer-plugin-alazon_v1.2.5_x5.0_linux_amd64"), + }, + { + Version: "v1.2.5", + BinaryPath: filepath.Join(pluginFolderThree, "github.com", "hashicorp", "amazon", "packer-plugin-amazon_v1.2.5_x5.0_linux_amd64"), + }, + }, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { diff --git a/packer/plugin-getter/testdata/plugins_3/github.com/hashicorp/alazon/packer-plugin-alazon_v1.2.5_x5.0_linux_amd64 b/packer/plugin-getter/testdata/plugins_3/github.com/hashicorp/alazon/packer-plugin-alazon_v1.2.5_x5.0_linux_amd64 new file mode 100644 index 00000000000..7813681f5b4 --- /dev/null +++ b/packer/plugin-getter/testdata/plugins_3/github.com/hashicorp/alazon/packer-plugin-alazon_v1.2.5_x5.0_linux_amd64 @@ -0,0 +1 @@ +5 \ No newline at end of file diff --git a/packer/plugin-getter/testdata/plugins_3/github.com/hashicorp/alazon/packer-plugin-alazon_v1.2.5_x5.0_linux_amd64_SHA256SUM b/packer/plugin-getter/testdata/plugins_3/github.com/hashicorp/alazon/packer-plugin-alazon_v1.2.5_x5.0_linux_amd64_SHA256SUM new file mode 100644 index 00000000000..2ef9d7d4c35 --- /dev/null +++ b/packer/plugin-getter/testdata/plugins_3/github.com/hashicorp/alazon/packer-plugin-alazon_v1.2.5_x5.0_linux_amd64_SHA256SUM @@ -0,0 +1 @@ +ef2d127de37b942baad06145e54b0c619a1f22327b2ebbcfbec78f5564afe39d \ No newline at end of file diff --git a/packer/plugin-getter/testdata/plugins_3/github.com/hashicorp/amazon/packer-plugin-amazon_v1.2.5_x5.0_linux_amd64 b/packer/plugin-getter/testdata/plugins_3/github.com/hashicorp/amazon/packer-plugin-amazon_v1.2.5_x5.0_linux_amd64 new file mode 100644 index 00000000000..7813681f5b4 --- /dev/null +++ b/packer/plugin-getter/testdata/plugins_3/github.com/hashicorp/amazon/packer-plugin-amazon_v1.2.5_x5.0_linux_amd64 @@ -0,0 +1 @@ +5 \ No newline at end of file diff --git a/packer/plugin-getter/testdata/plugins_3/github.com/hashicorp/amazon/packer-plugin-amazon_v1.2.5_x5.0_linux_amd64_SHA256SUM b/packer/plugin-getter/testdata/plugins_3/github.com/hashicorp/amazon/packer-plugin-amazon_v1.2.5_x5.0_linux_amd64_SHA256SUM new file mode 100644 index 00000000000..2ef9d7d4c35 --- /dev/null +++ b/packer/plugin-getter/testdata/plugins_3/github.com/hashicorp/amazon/packer-plugin-amazon_v1.2.5_x5.0_linux_amd64_SHA256SUM @@ -0,0 +1 @@ +ef2d127de37b942baad06145e54b0c619a1f22327b2ebbcfbec78f5564afe39d \ No newline at end of file From 4d5f1a3607fc16309d527777d165935a712d8f61 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 5 Dec 2023 09:40:19 -0500 Subject: [PATCH 253/381] Update CHANGELOG for 1.10.0 release --- CHANGELOG.md | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 30979d0f987..81da4bcc5e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,6 @@ -## 1.10.0 (Upcoming) +## 1.10.1 (Upcoming) + +## 1.10.0 (December 5, 2023) ### NOTES: This release contains breaking changes for practitioner relying on plugins @@ -54,6 +56,9 @@ The affected plugins include: * cmd/init: Warn users running `packer init` on configuration templates with a missing `required_plugins` blocks. [GH-12638](https://github.com/hashicorp/packer/pull/12638) +* cmd/plugins: Add `--path` flag to `packer plugins install` subcommand to + support installation of plugins from a local binary rather than from + GitHub. [GH-12643](https://github.com/hashicorp/packer/pull/12643) * cmd/plugins: Install SHA256SUM file with 0644 perms. [GH-12665](https://github.com/hashicorp/packer/pull/12665) * cmd/plugins: Remove SHA256SUM file on plugin removal. @@ -62,8 +67,8 @@ The affected plugins include: for removal. [GH-12669](https://github.com/hashicorp/packer/pull/12669) * core/hcl2: Remove empty source file reference on unset variable errors. [GH-12712](https://github.com/hashicorp/packer/pull/12712) -* core/hcl: Improve the recursive execution of data sources with other - data source dependencies. +* core/hcl: Improve the recursive execution of data sources with other data + source dependencies. [GH-12608](https://github.com/hashicorp/packer/pull/12608) * core: Bump github.com/hashicorp/hcp-sdk-go from 0.73.0 to 0.74.0 - [GH-12704](https://github.com/hashicorp/packer/pull/12704) @@ -77,6 +82,13 @@ The affected plugins include: * docs: Update plugin installation guides with supported methods for 1.10.0 and above. [GH-12713](https://github.com/hashicorp/packer/pull/12713) +### BUG FIXES: + +* cmd/plugins: Update `packer plugin installed` to show all installed plugin + binaries, including any duplicate versions or binaries copied from a + different source URI. + [GH-12731](https://github.com/hashicorp/packer/pull/12731) + ## 1.9.5 (December 4, 2023) ### SECURITY From c0de07c32ecbcc42cbd5c300cfd291aedc50af0d Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 20 Nov 2023 14:07:07 -0500 Subject: [PATCH 254/381] Document process for registering a plugin as a Packer Integration --- .github/ISSUE_TEMPLATE/plugin_integration.md | 21 +++++ .../content/docs/plugins/creation/index.mdx | 94 +++++-------------- 2 files changed, 42 insertions(+), 73 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/plugin_integration.md diff --git a/.github/ISSUE_TEMPLATE/plugin_integration.md b/.github/ISSUE_TEMPLATE/plugin_integration.md new file mode 100644 index 00000000000..c84da673895 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/plugin_integration.md @@ -0,0 +1,21 @@ +--- +name: Plugin Integration Request +about: Open request to add your plugin as a Packer integration (https://developer.hashicorp.com/packer/integrations) +labels: integration-request +--- + +#### Description + +A written description of your plugin along with a link to the plugin repository. + +#### Integration Tier + + +#### Checklist +- [] Has valid [`metadata.hcl`](https://github.com/hashicorp/integration-template) file in plugin repository. +- [] Has added integration scripts [packer-plugin-scaffolding](https://github.com/hashicorp/packer-plugin-scoffolding) to plugin repository. +- [] Has added top-level integration README.md file to plugin `docs` directory. +- [] All plugins components have one README.md describing their usage. +- [] Has a fully synced `.web-docs` directory ready for publishing to the integrations portal. + diff --git a/website/content/docs/plugins/creation/index.mdx b/website/content/docs/plugins/creation/index.mdx index 32537f160d3..3ba19fee600 100644 --- a/website/content/docs/plugins/creation/index.mdx +++ b/website/content/docs/plugins/creation/index.mdx @@ -214,87 +214,35 @@ Here's what you need to create releases using GitHub Actions: to install a plugin using `packer init`, see the [init docs](/packer/docs/commands/init). -## Registering Plugin Documentation +## Registering Plugins -~> Note: Registering a remote plugin's plugin documentation requires the use of [Packer's plugin docs configuration](https://github.com/hashicorp/packer-plugin-scaffolding/tree/main/docs). +~> Note: Registering a remote as an integration requires the use of [Packer's plugin docs configuration](https://github.com/hashicorp/packer-plugin-scaffolding/tree/main/docs). -`packer init` allows users to require and install remote Packer plugins, those not bundled with Packer core, that have been published to GitHub automatically. -To help with the discovery of remote Packer plugins on GitHub, plugins maintainers can choose to register plugin documentation for each component directly on the [Packer Documentation Page](/packer/docs). +`packer init` allows users to require and install remote Packer plugins published to GitHub. +To help with the discovery of remote Packer plugins, plugins maintainers can choose to register their plugin as a [Packer Integration](/packer/integrations). -The registration process requires the creation of a `docs.zip` file archive containing the `.mdx` files for each of the plugin components in the remote plugin's repository. A working example can be seen at the [packer-plugin-docker repository](https://github.com/hashicorp/packer-plugin-docker/releases/latest). +The registration process requires [metadata configuration](https://github.com/hashicorp/integration-template#metadata-configuration) be added to your plugin repository for configuring the Packer integration pipeline and plugin documentation for rendering +on the [Packer Integrations](/packer/integrations) portal. -Once in place the remote plugin can be added to Packer's website builds by opening a pull-request against [hashicorp/packer](https://github.com/hashicorp/packer), with the needed configuration for pulling in the remote documentation. +The following steps are required for registering your plugin as an integration -Remote plugins will have their components listed under the respected types (i.e builders, provisioners, etc) using the names specified in the remote block configuration, and labeled with their respective [tier and namespace](/packer/docs/plugins#tiers-and-namespaces). +1. Update your plugin documentation structure according to the templated defined with the [Packer Plugin Scaffolding template]. +New plugins generated from this template may have the necessary structure in place. If so you can jump to step 4. +1. For the integrations library, only one top-level README per integration is supported. Any top-level index.mdx files that exist +within a plugins existing documentation will need to migrate to a top-level README. +1. Update your top-level integration README to include a description, plugin installation steps, available components section, and, any, additional sections +needed to inform users on how to work with your integration. Refer to [Packer scaffolding plugin](https://github.com/hashicorp/packer-plugin-scaffolding/blob/main/docs/README.md) for an example. +1. Update the top-level README for each of the components within your integration to follow the structure defined in the scaffolding template. +1. Open a request for integration issue with the Packer team - [Open Request](https://github.com/hashicorp/packer/issues/new/choose). +Please provide all the requested information to help expedite the integration request. -To register a plugin follow one of the following setups +By opening an integration request, you are asking a member of the to Packer team to review your plugin integration configuration, plugin documentation, +and, finally, to open an internal pull-request to finalize the integration setup. - - - -Documentation for a plugin is maintained within the `docs` directory and served on GitHub. - -To include plugin docs on the website, a global pre-hook has been added to the main scaffolding [.goreleaser.yml](https://github.com/hashicorp/packer-plugin-scaffolding/blob/42e5b0b1e575879b0477cb6d4291e027f4d92f85/.goreleaser.yml#L10) file, that if uncommented will generate and include a docs.zip file as part of the plugin release. - -The `docs.zip` file contains all of the `.mdx` files under the plugins root `docs/` directory that the website can consume remotely. - - - - - -You can generate the required documentation structure manually by creating a zip file called `docs.zip` of the docs directory and including that zip file in the plugin release. - -```/bin/bash -[[ -d docs/ ]] && zip -r docs.zip docs/ -``` - - - - -Once the first `docs.zip` file has been included into a release you will need to open a one time pull-request against [hashicorp/packer](https://github.com/hashicorp/packer) to register the plugin docs. - -This is done by adding the block below for the respective plugin to the file [website/data/plugins-manifest.json](https://github.com/hashicorp/packer/blob/main/website/data/plugins-manifest.json). - -```json -{ - "title": "Scaffolding", - "path": "scaffolding", - "repo": "hashicorp/packer-plugin-scaffolding", - "version": "latest", - "sourceBranch": "main" -} -``` - -If a plugin maintainer wishes to only include a specific version of released docs, then the `"version"` key in the above configuration should be set to a released version of the plugin. Otherwise it should be set to `"latest"`. - -The `"sourceBranch"` key in the above configuration ensures potential contributors can link back to source files in the plugin repository from the Packer docs site. If a `"sourceBranch"` value is not present, it will default to `"main"`. - -### Testing Plugin Documentation - -Before publishing the `docs.zip` file, you might want to preview your documentation changes. -We provide a mechanism that allows to preview how the docs will look like within -the Packer documentation. - -Follow the next steps to get the Packer website running and preview the documentation changes: - -- Get the [Packer source code](https://github.com/hashicorp/packer). Our website code is under the [website folder](https://github.com/hashicorp/packer/tree/main/website). -- Generate the `docs.zip` file. You can find above the steps to do so. -- Add the `zipFile` attribute to the plugin entry in `plugins-manifest.json`. The value should be the full path of the `docs.zip` generated. For example: - -```json -{ - "title": "Scaffolding", - "path": "scaffolding", - "repo": "hashicorp/packer-plugin-scaffolding", - "version": "latest", - "sourceBranch": "main", - "zipFile": "/Users/myuser/Packer/plugins/packer-plugin-scaffolding/docs.zip" -} -``` +Plugin integrations will be listed as a [Packer Integration](/packer/integrations), with details on how to install and use your the plugin. -- Go to the [website folder](https://github.com/hashicorp/packer/tree/main/website). - In the website README, follow the steps to [run the website with node](https://github.com/hashicorp/packer/tree/main/website#with-node). -- Once the website is up and running, the plugin documentation should be available in `http://localhost:3000/docs`. +Plugin integrations, once deployed, can be updated manually, or automatically upon a new release, by the plugin authors. Changes to the defined documentation structure +or parent repository should be communicated to the Packer team to ensure a working integration pipeline. ## Plugin Development Tips and FAQs From 6d7d266bb62a1bfe14b2e4e45b77cae672099f37 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 30 Nov 2023 17:13:55 -0500 Subject: [PATCH 255/381] Replace relative links --- website/content/docs/plugins/creation/index.mdx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/website/content/docs/plugins/creation/index.mdx b/website/content/docs/plugins/creation/index.mdx index 3ba19fee600..55425367b7b 100644 --- a/website/content/docs/plugins/creation/index.mdx +++ b/website/content/docs/plugins/creation/index.mdx @@ -9,7 +9,7 @@ page_title: Extending # Developing Plugins Packer is extensible and supports plugins that let you -create and use custom builders, provisioners, post-processors, and data sources. This page explains how to develop Packer plugins. Before you begin, we recommend reviewing the Packer documentation and the instructions for [installing external plugins](/packer/docs/plugins/install-plugins). +create and use custom builders, provisioners, post-processors, and data sources. This page explains how to develop Packer plugins. Before you begin, we recommend reviewing the Packer documentation and the instructions for [installing external plugins](https://developer.hashicorp.com/packer/docs/plugins/install-plugins). ~> **Warning** This is an advanced topic. You should have strong knowledge of Packer before you start writing plugins. @@ -146,7 +146,7 @@ because the `packer init` command only supports multi-component plugins. Next, build your plugin as you would any other Go application. The resulting binary is the plugin that can be installed using -[standard installation procedures](/packer/docs/plugins#installing-plugins). +[standard installation procedures](https://developer.hashicorp.com/packer/docs/plugins#installing-plugins). This documentation explains how to implement each type of plugin interface: builders, data sources, provisioners, and post-processors. @@ -212,17 +212,17 @@ Here's what you need to create releases using GitHub Actions: releaser is working. The tag must be a valid [Semantic Version](https://semver.org/) preceded with a `v`. Once the tag is pushed, the github actions you just configured will automatically build release binaries that Packer can download using `packer init`. For more details on how to install a plugin using `packer init`, see the - [init docs](/packer/docs/commands/init). + [init docs](https://developer.hashicorp.com/packer/docs/commands/init). ## Registering Plugins ~> Note: Registering a remote as an integration requires the use of [Packer's plugin docs configuration](https://github.com/hashicorp/packer-plugin-scaffolding/tree/main/docs). `packer init` allows users to require and install remote Packer plugins published to GitHub. -To help with the discovery of remote Packer plugins, plugins maintainers can choose to register their plugin as a [Packer Integration](/packer/integrations). +To help with the discovery of remote Packer plugins, plugins maintainers can choose to register their plugin as a [Packer Integration](https://developer.hashicorp.com/packer/integrations). The registration process requires [metadata configuration](https://github.com/hashicorp/integration-template#metadata-configuration) be added to your plugin repository for configuring the Packer integration pipeline and plugin documentation for rendering -on the [Packer Integrations](/packer/integrations) portal. +on the [Packer Integrations](https://developer.hashicorp.com/packer/integrations) portal. The following steps are required for registering your plugin as an integration @@ -239,7 +239,7 @@ Please provide all the requested information to help expedite the integration re By opening an integration request, you are asking a member of the to Packer team to review your plugin integration configuration, plugin documentation, and, finally, to open an internal pull-request to finalize the integration setup. -Plugin integrations will be listed as a [Packer Integration](/packer/integrations), with details on how to install and use your the plugin. +Plugin integrations will be listed as a [Packer Integration](https://developer.hashicorp.com/packer/integrations), with details on how to install and use your the plugin. Plugin integrations, once deployed, can be updated manually, or automatically upon a new release, by the plugin authors. Changes to the defined documentation structure or parent repository should be communicated to the Packer team to ensure a working integration pipeline. From 149a8095e1cc0660c2a9e5263a1300c2139c2496 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 1 Dec 2023 08:00:41 -0500 Subject: [PATCH 256/381] Address review feedback --- website/content/docs/plugins/creation/index.mdx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/website/content/docs/plugins/creation/index.mdx b/website/content/docs/plugins/creation/index.mdx index 55425367b7b..5cb3d8d3c00 100644 --- a/website/content/docs/plugins/creation/index.mdx +++ b/website/content/docs/plugins/creation/index.mdx @@ -216,23 +216,23 @@ Here's what you need to create releases using GitHub Actions: ## Registering Plugins -~> Note: Registering a remote as an integration requires the use of [Packer's plugin docs configuration](https://github.com/hashicorp/packer-plugin-scaffolding/tree/main/docs). +~> Note: Registering a plugin as an integration requires the use of [Packer's Incofiguration configuration](https://github.com/hashicorp/packer-plugin-scaffolding/tree/main/docs). -`packer init` allows users to require and install remote Packer plugins published to GitHub. -To help with the discovery of remote Packer plugins, plugins maintainers can choose to register their plugin as a [Packer Integration](https://developer.hashicorp.com/packer/integrations). +To help with the discovery of Packer plugins, plugins maintainers can choose to register their plugin as a [Packer Integration](https://developer.hashicorp.com/packer/integrations). -The registration process requires [metadata configuration](https://github.com/hashicorp/integration-template#metadata-configuration) be added to your plugin repository for configuring the Packer integration pipeline and plugin documentation for rendering -on the [Packer Integrations](https://developer.hashicorp.com/packer/integrations) portal. +The registration process requires [metadata configuration](https://github.com/hashicorp/integration-template#metadata-configuration) be added to your plugin repository for configuring the Packer integration pipeline and +a specific directory structure for plugin documentation to be render on the [Packer Integrations](https://developer.hashicorp.com/packer/integrations) portal. -The following steps are required for registering your plugin as an integration +You can execute the following steps to register your plugin as an integration: -1. Update your plugin documentation structure according to the templated defined with the [Packer Plugin Scaffolding template]. -New plugins generated from this template may have the necessary structure in place. If so you can jump to step 4. +1. Update your plugin documentation structure according to the template defined with the [Packer Plugin Scaffolding template]. +New plugins generated from this template may have the necessary structure in place. If so you can jump to step 3. 1. For the integrations library, only one top-level README per integration is supported. Any top-level index.mdx files that exist within a plugins existing documentation will need to migrate to a top-level README. 1. Update your top-level integration README to include a description, plugin installation steps, available components section, and, any, additional sections needed to inform users on how to work with your integration. Refer to [Packer scaffolding plugin](https://github.com/hashicorp/packer-plugin-scaffolding/blob/main/docs/README.md) for an example. 1. Update the top-level README for each of the components within your integration to follow the structure defined in the scaffolding template. +1. Add the integration configuration file [metadata.hcl](https://github.com/hashicorp/packer-plugin-scaffolding/blob/main/.web-docs/metadata.hcl) to the plugins `.web-docs` directory. 1. Open a request for integration issue with the Packer team - [Open Request](https://github.com/hashicorp/packer/issues/new/choose). Please provide all the requested information to help expedite the integration request. From e2a2a08f56aba8d65014253456961be5b1be9dc0 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 1 Dec 2023 08:45:44 -0500 Subject: [PATCH 257/381] Add example shell commands for copying integration files into plugin repository --- .../content/docs/plugins/creation/index.mdx | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/website/content/docs/plugins/creation/index.mdx b/website/content/docs/plugins/creation/index.mdx index 5cb3d8d3c00..273144bfbcd 100644 --- a/website/content/docs/plugins/creation/index.mdx +++ b/website/content/docs/plugins/creation/index.mdx @@ -236,6 +236,33 @@ needed to inform users on how to work with your integration. Refer to [Packer sc 1. Open a request for integration issue with the Packer team - [Open Request](https://github.com/hashicorp/packer/issues/new/choose). Please provide all the requested information to help expedite the integration request. +#### [Example] Add integration files to existing plugin repository + +```shell +## Update Plugin repository with integration config, workflows, and scripts +cd packer-plugin-name +mkdir -p .web-docs/scripts + +# Download packer-plugin-scaffolding repo copy files +curl -L -O https://github.com/hashicorp/packer-plugin-scaffolding/archive/refs/heads/main.zip +unzip main.zip +cp packer-plugin-scaffolding-main/.web-docs/metadata.hcl .web-docs/ +cp -r packer-plugin-scaffolding-main/.web-docs/scripts/ .web-docs/scripts/ +cp .github/workflows/notify-integration-release-via-* .github/workflows/ + +# Remove downloaded scaffolding project +rm main.zip +rm -rf packer-plugin-scaffolding-main + +# Add the following commands to your plugin GNUmakefile +generate: install-packer-sdc + @go generate ./... + @rm -rf .docs + @packer-sdc renderdocs -src docs -partials docs-partials/ -dst .docs/ + @./.web-docs/scripts/compile-to-webdocs.sh "." ".docs" ".web-docs" "" + @rm -r ".docs" +``` + By opening an integration request, you are asking a member of the to Packer team to review your plugin integration configuration, plugin documentation, and, finally, to open an internal pull-request to finalize the integration setup. From 9565eca354eb601f37121c45959885c928a68504 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Fri, 1 Dec 2023 09:59:50 -0500 Subject: [PATCH 258/381] Remove reference to deprecated single components --- .../content/docs/plugins/creation/index.mdx | 47 +------------------ 1 file changed, 1 insertion(+), 46 deletions(-) diff --git a/website/content/docs/plugins/creation/index.mdx b/website/content/docs/plugins/creation/index.mdx index 273144bfbcd..7d7939f4683 100644 --- a/website/content/docs/plugins/creation/index.mdx +++ b/website/content/docs/plugins/creation/index.mdx @@ -49,15 +49,7 @@ danger of colliding dependencies. - [`github.com/hashicorp/packer-plugin-sdk/plugin`](https://pkg.go.dev/github.com/hashicorp/packer-plugin-sdk/plugin) - Contains the code to serve the plugin. This handles all the inter-process communication. -Basic examples of serving your component are shown below. Note that if you -define a multi-component plugin, you can (but do not need to) add more than one -component per plugin binary. The multi-component plugin is also compatible with -download and installation via `packer init`, whereas the single-component plugin -is not. - - - - +Basic examples of serving your component are shown below. ```go // main.go @@ -107,43 +99,6 @@ the following components available: - the `my-foo` post-processor - the `my-bar` provisioner - - - - -```go -// main.go - -import ( - "github.com/hashicorp/packer-plugin-sdk/plugin" -) - -// Assume this implements the packer.Builder interface -type Builder struct{} - -func main() { - server, err := plugin.Server() - if err != nil { - panic(err) - } - server.RegisterBuilder(new(Builder)) - server.Serve() -} -``` - -This `server.Serve()` invocation handles all the details of communicating with -Packer core and serving your component over RPC. As long as your struct being -registered implements one of the component interfaces, Packer will now be able -to launch your plugin and use it. - -Please note that single-component plugins exist for backwards-compatability. We -would rather you register your component using the multi-component method shown -in the other tab, even if you only have one component in your binary. This is -because the `packer init` command only supports multi-component plugins. - - - - Next, build your plugin as you would any other Go application. The resulting binary is the plugin that can be installed using [standard installation procedures](https://developer.hashicorp.com/packer/docs/plugins#installing-plugins). From 9d46c90c034525dcc1d57d016003e51edd558423 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 5 Dec 2023 15:31:03 -0500 Subject: [PATCH 259/381] Apply suggestions from code review Co-authored-by: Lucas Bajolet <105649352+lbajolet-hashicorp@users.noreply.github.com> Co-authored-by: Sylvia Moss --- .../content/docs/plugins/creation/index.mdx | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/website/content/docs/plugins/creation/index.mdx b/website/content/docs/plugins/creation/index.mdx index 7d7939f4683..cb6d7d70682 100644 --- a/website/content/docs/plugins/creation/index.mdx +++ b/website/content/docs/plugins/creation/index.mdx @@ -171,25 +171,25 @@ Here's what you need to create releases using GitHub Actions: ## Registering Plugins -~> Note: Registering a plugin as an integration requires the use of [Packer's Incofiguration configuration](https://github.com/hashicorp/packer-plugin-scaffolding/tree/main/docs). +~> Note: Registering a plugin as an integration requires the documentation to match the [Scaffolding example layout](https://github.com/hashicorp/packer-plugin-scaffolding/tree/main/.web-docs). To help with the discovery of Packer plugins, plugins maintainers can choose to register their plugin as a [Packer Integration](https://developer.hashicorp.com/packer/integrations). -The registration process requires [metadata configuration](https://github.com/hashicorp/integration-template#metadata-configuration) be added to your plugin repository for configuring the Packer integration pipeline and -a specific directory structure for plugin documentation to be render on the [Packer Integrations](https://developer.hashicorp.com/packer/integrations) portal. +The registration process requires [metadata configuration](https://github.com/hashicorp/integration-template#metadata-configuration) to be added to your plugin repository for configuring the Packer integration pipeline and +a specific directory structure for plugin documentation to be rendered on the [Packer Integrations](https://developer.hashicorp.com/packer/integrations) portal. You can execute the following steps to register your plugin as an integration: -1. Update your plugin documentation structure according to the template defined with the [Packer Plugin Scaffolding template]. -New plugins generated from this template may have the necessary structure in place. If so you can jump to step 3. +1. Update your plugin documentation structure to match the [Scaffolding example layout](https://github.com/hashicorp/packer-plugin-scaffolding/tree/main/.web-docs). +New plugins generated from this template have the necessary structure in place. If so you can jump to step 3. 1. For the integrations library, only one top-level README per integration is supported. Any top-level index.mdx files that exist -within a plugins existing documentation will need to migrate to a top-level README. +within a plugin's existing documentation will need to migrate to a top-level README. 1. Update your top-level integration README to include a description, plugin installation steps, available components section, and, any, additional sections needed to inform users on how to work with your integration. Refer to [Packer scaffolding plugin](https://github.com/hashicorp/packer-plugin-scaffolding/blob/main/docs/README.md) for an example. 1. Update the top-level README for each of the components within your integration to follow the structure defined in the scaffolding template. 1. Add the integration configuration file [metadata.hcl](https://github.com/hashicorp/packer-plugin-scaffolding/blob/main/.web-docs/metadata.hcl) to the plugins `.web-docs` directory. -1. Open a request for integration issue with the Packer team - [Open Request](https://github.com/hashicorp/packer/issues/new/choose). -Please provide all the requested information to help expedite the integration request. +1. Open a request for integration issue with the Packer team - [Open Request](https://github.com/hashicorp/packer/issues/new?labels=new-plugin-contribution&template=plugin_integration.md). +Provide all the requested information to help expedite the integration request. #### [Example] Add integration files to existing plugin repository @@ -199,7 +199,7 @@ cd packer-plugin-name mkdir -p .web-docs/scripts # Download packer-plugin-scaffolding repo copy files -curl -L -O https://github.com/hashicorp/packer-plugin-scaffolding/archive/refs/heads/main.zip +wget https://github.com/hashicorp/packer-plugin-scaffolding/archive/refs/heads/main.zip unzip main.zip cp packer-plugin-scaffolding-main/.web-docs/metadata.hcl .web-docs/ cp -r packer-plugin-scaffolding-main/.web-docs/scripts/ .web-docs/scripts/ From 2241b1fba7253732fdb59284c57b376ae8ad0dff Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 5 Dec 2023 14:15:57 -0500 Subject: [PATCH 260/381] Update spacing for flags within Help text Before Change ``` Options: - path : install the plugin from a locally-sourced plugin binary. This installs the plugin where a normal invocation would, but will not try to download it from a remote location, and instead install the binary in the Packer plugins path. This option cannot be specified with a version constraint. - force: forces reinstallation of plugins, even if already installed. ``` After Change ``` Options: -path Install the plugin from a locally-sourced plugin binary. This installs the plugin where a normal invocation would, but will not try to download it from a remote location, and instead install the binary in the Packer plugins path. This option cannot be specified with a version constraint. -force Forces reinstallation of plugins, even if already installed. ``` --- command/plugins_install.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/command/plugins_install.go b/command/plugins_install.go index 4d8434a2780..753d2d558ba 100644 --- a/command/plugins_install.go +++ b/command/plugins_install.go @@ -49,12 +49,12 @@ Usage: packer plugins install [OPTIONS...] [] packer plugins install --path ./packer-plugin-happycloud "github.com/hashicorp/happycloud" Options: - - path : install the plugin from a locally-sourced plugin binary. This - installs the plugin where a normal invocation would, but will - not try to download it from a remote location, and instead - install the binary in the Packer plugins path. - This option cannot be specified with a version constraint. - - force: forces reinstallation of plugins, even if already installed. + -path Install the plugin from a locally-sourced plugin binary. + This installs the plugin where a normal invocation would, but will + not try to download it from a remote location, and instead + install the binary in the Packer plugins path. This option cannot + be specified with a version constraint. + -force Forces reinstallation of plugins, even if already installed. ` return strings.TrimSpace(helpText) From fd7fc49f17bcf8c87c58657cfbc411720eab8fcd Mon Sep 17 00:00:00 2001 From: hc-github-team-es-release-engineering <82989873+hc-github-team-es-release-engineering@users.noreply.github.com> Date: Wed, 6 Dec 2023 12:43:42 -0800 Subject: [PATCH 261/381] update year in license files --- .copywrite.hcl | 2 +- LICENSE | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.copywrite.hcl b/.copywrite.hcl index 3cbd1daa501..459f9e10287 100644 --- a/.copywrite.hcl +++ b/.copywrite.hcl @@ -1,6 +1,6 @@ project { license = "BUSL-1.1" - copyright_year = 2023 + copyright_year = 2024 header_ignore = [ "*.hcl2spec.go", # generated code specs, since they'll be wiped out until we support adding the headers at generation-time "hcl2template/testdata/**", diff --git a/LICENSE b/LICENSE index 0918b4a93f4..91ed1781f82 100644 --- a/LICENSE +++ b/LICENSE @@ -4,7 +4,7 @@ License text copyright (c) 2020 MariaDB Corporation Ab, All Rights Reserved. Parameters Licensor: HashiCorp, Inc. -Licensed Work: Packer Version 1.10.0 or later. The Licensed Work is (c) 2023 +Licensed Work: Packer Version 1.10.0 or later. The Licensed Work is (c) 2024 HashiCorp, Inc. Additional Use Grant: You may make production use of the Licensed Work, provided Your use does not include offering the Licensed Work to third From 699c0f814cc141054de1de5d215eb3d9cbc4260f Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 13 Dec 2023 14:47:39 -0500 Subject: [PATCH 262/381] Update plugin_integration.md Fix todo list markdown formatting --- .github/ISSUE_TEMPLATE/plugin_integration.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/plugin_integration.md b/.github/ISSUE_TEMPLATE/plugin_integration.md index c84da673895..540e437fe6e 100644 --- a/.github/ISSUE_TEMPLATE/plugin_integration.md +++ b/.github/ISSUE_TEMPLATE/plugin_integration.md @@ -13,9 +13,9 @@ A written description of your plugin along with a link to the plugin repository. HashiCorp Technology partners https://www.hashicorp.com/partners/find-a-partner will be registered as a partner once verified. ---> #### Checklist -- [] Has valid [`metadata.hcl`](https://github.com/hashicorp/integration-template) file in plugin repository. -- [] Has added integration scripts [packer-plugin-scaffolding](https://github.com/hashicorp/packer-plugin-scoffolding) to plugin repository. -- [] Has added top-level integration README.md file to plugin `docs` directory. -- [] All plugins components have one README.md describing their usage. -- [] Has a fully synced `.web-docs` directory ready for publishing to the integrations portal. +- [ ] Has valid [`metadata.hcl`](https://github.com/hashicorp/integration-template) file in plugin repository. +- [ ] Has added integration scripts [packer-plugin-scaffolding](https://github.com/hashicorp/packer-plugin-scoffolding) to plugin repository. +- [ ] Has added top-level integration README.md file to plugin `docs` directory. +- [ ] All plugins components have one README.md describing their usage. +- [ ] Has a fully synced `.web-docs` directory ready for publishing to the integrations portal. From 9afafd962f731d816d56e000967a4d44e9add170 Mon Sep 17 00:00:00 2001 From: Brian McClain Date: Wed, 3 Jan 2024 13:36:05 -0500 Subject: [PATCH 263/381] Pin UpCloud plugin version --- website/data/plugins-manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/data/plugins-manifest.json b/website/data/plugins-manifest.json index 525d5ede175..870e16d7f43 100644 --- a/website/data/plugins-manifest.json +++ b/website/data/plugins-manifest.json @@ -93,7 +93,7 @@ "title": "UpCloud", "path": "upcloud", "repo": "UpCloudLtd/packer-plugin-upcloud", - "version": "latest", + "version": "v1.5.2", "pluginTier": "verified", "sourceBranch": "master", "isHcpPackerReady": true From 311a3b1d6a93f1977575b8ad94879b8cf444ba39 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Mon, 8 Jan 2024 09:20:05 -0500 Subject: [PATCH 264/381] website: remove UpCloud from manifest Since the UpCloud plugin has moved to the integrations model, we don't want to continue looking for a docs.zip in their repo, as it doesn't exist anymore with this migration. --- website/data/plugins-manifest.json | 9 --------- 1 file changed, 9 deletions(-) diff --git a/website/data/plugins-manifest.json b/website/data/plugins-manifest.json index 870e16d7f43..8405f6a459a 100644 --- a/website/data/plugins-manifest.json +++ b/website/data/plugins-manifest.json @@ -89,15 +89,6 @@ "version": "latest", "pluginTier": "community" }, - { - "title": "UpCloud", - "path": "upcloud", - "repo": "UpCloudLtd/packer-plugin-upcloud", - "version": "v1.5.2", - "pluginTier": "verified", - "sourceBranch": "master", - "isHcpPackerReady": true - }, { "title": "Volcengine", "path": "volcengine", From 0b06cb58a35f856510249d80786ef71b2dc96c86 Mon Sep 17 00:00:00 2001 From: Aidan Mundy Date: Fri, 22 Dec 2023 16:47:19 -0500 Subject: [PATCH 265/381] Fix Typo `make check-generate` -> `make generate-check` --- .github/CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 60063f93b23..2696178f861 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -274,7 +274,7 @@ does not attempt to track the latest version for each dependency. Packer relies on `go generate` to generate a [peg parser for boot commands](https://github.com/hashicorp/packer/blob/master/packer-plugin-sdk/bootcommand/boot_command.go), [docs](https://github.com/hashicorp/packer/blob/master/website/pages/partials/builder/amazon/chroot/_Config-not-required.mdx) -and HCL2's bridging code. Packer's testing suite will run `make check-generate` +and HCL2's bridging code. Packer's testing suite will run `make generate-check` to check that all the generated files Packer needs are what they should be. `make generate` re-generates all these file and can take a while depending on your machine's performances. To make it faster it is recommended to run From 0a64a5fb9077cfa19a781d65f4a873d1f048fef2 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 8 Jan 2024 10:53:07 -0500 Subject: [PATCH 266/381] Bump Go version to 1.20.12 Bumped to pull in security fixes to the go command, the net/http package, and path/filepath package. --- .go-version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.go-version b/.go-version index 4bb1a22f8ec..3b9e4a0c187 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.20.11 +1.20.12 From 2515aa27a7f82a73466746a92f20152eb7ac4d57 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 8 Jan 2024 10:55:19 -0500 Subject: [PATCH 267/381] Bump golang.org/x/crypto to address CVE-2023-48795 --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 8b8d0a2f210..a2cb0ba0c33 100644 --- a/go.mod +++ b/go.mod @@ -44,13 +44,13 @@ require ( github.com/ulikunitz/xz v0.5.10 github.com/zclconf/go-cty v1.13.3 github.com/zclconf/go-cty-yaml v1.0.1 - golang.org/x/crypto v0.15.0 // indirect + golang.org/x/crypto v0.17.0 // indirect golang.org/x/mod v0.13.0 golang.org/x/net v0.18.0 golang.org/x/oauth2 v0.14.0 golang.org/x/sync v0.4.0 - golang.org/x/sys v0.14.0 // indirect - golang.org/x/term v0.14.0 // indirect + golang.org/x/sys v0.15.0 // indirect + golang.org/x/term v0.15.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.14.0 google.golang.org/api v0.128.0 // indirect diff --git a/go.sum b/go.sum index 27c538c47c5..1888c776dbd 100644 --- a/go.sum +++ b/go.sum @@ -589,8 +589,8 @@ golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= -golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= @@ -681,12 +681,12 @@ golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= -golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8= -golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= +golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= From bfc3f8b56421a1a4123e007af790cdf9709edb12 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 8 Jan 2024 10:58:21 -0500 Subject: [PATCH 268/381] Bump github.com/go-git/go-git/v5 to address CVE-2023-49568 --- go.mod | 27 +++++++++------- go.sum | 100 ++++++++++++++++++++++++++++++++------------------------- 2 files changed, 71 insertions(+), 56 deletions(-) diff --git a/go.mod b/go.mod index a2cb0ba0c33..a3f1228dbab 100644 --- a/go.mod +++ b/go.mod @@ -6,12 +6,12 @@ require ( github.com/cheggaaa/pb v1.0.27 github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e github.com/dsnet/compress v0.0.1 - github.com/go-git/go-git/v5 v5.4.2 + github.com/go-git/go-git/v5 v5.11.0 github.com/go-openapi/runtime v0.26.0 github.com/gobwas/glob v0.2.3 github.com/gofrs/flock v0.8.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/google/go-cmp v0.5.9 + github.com/google/go-cmp v0.6.0 github.com/google/go-github/v33 v33.0.1-0.20210113204525-9318e629ec69 github.com/google/go-querystring v1.1.0 // indirect github.com/hako/durafmt v0.0.0-20200710122514-c0fb7b4da026 @@ -46,7 +46,7 @@ require ( github.com/zclconf/go-cty-yaml v1.0.1 golang.org/x/crypto v0.17.0 // indirect golang.org/x/mod v0.13.0 - golang.org/x/net v0.18.0 + golang.org/x/net v0.19.0 golang.org/x/oauth2 v0.14.0 golang.org/x/sync v0.4.0 golang.org/x/sys v0.15.0 // indirect @@ -69,14 +69,14 @@ require ( cloud.google.com/go/compute/metadata v0.2.3 // indirect cloud.google.com/go/iam v1.1.2 // indirect cloud.google.com/go/storage v1.30.1 // indirect + dario.cat/mergo v1.0.0 // indirect github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c // indirect github.com/ChrisTrenkamp/goxpath v0.0.0-20210404020558-97928f7e12b6 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.1.1 // indirect github.com/Masterminds/sprig/v3 v3.2.1 // indirect - github.com/Microsoft/go-winio v0.4.16 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect - github.com/acomagu/bufpipe v1.0.3 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/apparentlymart/go-cidr v1.0.1 // indirect github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect @@ -90,12 +90,14 @@ require ( github.com/bmatcuk/doublestar v1.1.5 // indirect github.com/cenkalti/backoff/v3 v3.2.2 // indirect github.com/chzyer/test v1.0.0 // indirect + github.com/cloudflare/circl v1.3.3 // indirect + github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dylanmei/iso8601 v0.1.0 // indirect - github.com/emirpasic/gods v1.12.0 // indirect + github.com/emirpasic/gods v1.18.1 // indirect github.com/fatih/color v1.14.1 // indirect - github.com/go-git/gcfg v1.5.0 // indirect - github.com/go-git/go-billy/v5 v5.3.1 // indirect + github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect + github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/go-jose/go-jose/v3 v3.0.1 // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect @@ -138,12 +140,11 @@ require ( github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect - github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect + github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/kr/fs v0.1.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786 // indirect - github.com/matryer/is v1.4.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.17 // indirect github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect @@ -154,6 +155,7 @@ require ( github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect + github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect github.com/rivo/uniseg v0.2.0 // indirect @@ -161,12 +163,13 @@ require ( github.com/sergi/go-diff v1.1.0 // indirect github.com/shoenig/go-m1cpu v0.1.5 // indirect github.com/shopspring/decimal v1.2.0 // indirect + github.com/skeema/knownhosts v1.2.1 // indirect github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 // indirect github.com/spf13/cast v1.3.1 // indirect github.com/tklauser/go-sysconf v0.3.11 // indirect github.com/tklauser/numcpus v0.6.0 // indirect github.com/ugorji/go/codec v1.2.6 // indirect - github.com/xanzy/ssh-agent v0.3.0 // indirect + github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect go.mongodb.org/mongo-driver v1.12.0 // indirect diff --git a/go.sum b/go.sum index 1888c776dbd..37acc1fcf98 100644 --- a/go.sum +++ b/go.sum @@ -10,6 +10,8 @@ cloud.google.com/go/iam v1.1.2 h1:gacbrBdWcoVmGLozRuStX45YKvJtzIjJdAolzUs1sm4= cloud.google.com/go/iam v1.1.2/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= cloud.google.com/go/storage v1.30.1 h1:uOdMxAs8HExqBlnLtnQyP0YkvbiDpdGShGKtx6U/oNM= cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= +dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= +dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/go-ntlmssp v0.0.0-20180810175552-4a21cbd618b4/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c h1:/IBSNwUN8+eKzUzbJPqhK839ygXJ82sde8x3ogr6R28= @@ -26,21 +28,18 @@ github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030I github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= github.com/Masterminds/sprig/v3 v3.2.1 h1:n6EPaDyLSvCEa3frruQvAiHuNp2dhBlMSmkEr+HuzGc= github.com/Masterminds/sprig/v3 v3.2.1/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk= -github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= -github.com/Microsoft/go-winio v0.4.16 h1:FtSW/jqD+l4ba5iPBj9CODVtgfYAD8w2wS923g/cFDk= -github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C67SkzkDfmQuVln04ygHj3vjZfd9FL+GmQQ= -github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= -github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk= -github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= +github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= +github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA= -github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/antchfx/xmlquery v1.3.5 h1:I7TuBRqsnfFuL11ruavGm911Awx9IqSdiU6W/ztSmVw= github.com/antchfx/xpath v1.1.11 h1:WOFtK8TVAjLm3lbgqeP0arlHpvCEeTANeWZ/csPpJkQ= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= @@ -59,7 +58,6 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= @@ -78,6 +76,7 @@ github.com/biogo/hts v1.4.3 h1:vir2yUTiRkPvtp6ZTpzh9lWTKQJZXJKZ563rpAQAsRM= github.com/biogo/hts v1.4.3/go.mod h1:eW40HJ1l2ExK9C+yvvoRSftInqWsf3ue+zAEjzCGWjA= github.com/bmatcuk/doublestar v1.1.5 h1:2bNwBOmhyFEFcoB3tGvTD5xanq+4kyOZlB8wFYbMjkk= github.com/bmatcuk/doublestar v1.1.5/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE= +github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/cenkalti/backoff/v3 v3.2.2 h1:cfUAAO3yvKMYKPrvhDuHSwQnhZNk/RMHKdZqKTxfm6M= github.com/cenkalti/backoff/v3 v3.2.2/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -93,6 +92,8 @@ github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38 github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= +github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= @@ -100,6 +101,8 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= +github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= @@ -110,8 +113,9 @@ github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdf github.com/dylanmei/iso8601 v0.1.0 h1:812NGQDBcqquTfH5Yeo7lwR0nzx/cKdsmf3qMjPURUI= github.com/dylanmei/iso8601 v0.1.0/go.mod h1:w9KhXSgIyROl1DefbMYIE7UVSIvELTbMrCfx+QkYnoQ= github.com/dylanmei/winrmtest v0.0.0-20210303004826-fbc9ae56efb6 h1:zWydSUQBJApHwpQ4guHi+mGyQN/8yN6xbKWdDtL3ZNM= -github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= -github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= +github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= +github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -123,19 +127,15 @@ github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.14.1 h1:qfhVLaG5s+nCROl1zJsZRxFeYrHLqWroPOQ8BWiNb4w= github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg= -github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= -github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= -github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= -github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= -github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= -github.com/go-git/go-billy/v5 v5.3.1 h1:CPiOUAzKtMRvolEKw+bG1PLRpT7D3LIs3/3ey4Aiu34= -github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= -github.com/go-git/go-git-fixtures/v4 v4.2.1 h1:n9gGL1Ct/yIw+nfsfr8s4+sbhT+Ncu2SubfXjIWgci8= -github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0= -github.com/go-git/go-git/v5 v5.4.2 h1:BXyZu9t0VkbiHtqrsvdq39UDhGJTl1h55VW6CSC4aY4= -github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= +github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= +github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= +github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= +github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= +github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-jose/go-jose/v3 v3.0.1 h1:pWmKFVtt+Jl0vBZTIpz/eAKwsm6LkIxDVVbFHKkchhA= github.com/go-jose/go-jose/v3 v3.0.1/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= @@ -225,8 +225,9 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github/v33 v33.0.1-0.20210113204525-9318e629ec69 h1:zL0/Ug5CMhV0XRb3A6vnK1SQ9kJM3VIyRxPQ5t9w8Bg= github.com/google/go-github/v33 v33.0.1-0.20210113204525-9318e629ec69/go.mod h1:GMdDnVZY/2TsWgp/lkYnpSAh6TrzhANBBwm6k6TTEXg= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= @@ -336,7 +337,6 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOl github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 h1:IPJ3dvxmJ4uczJe5YQdrYB16oTJlGSC/OyZDqUk9xX4= github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869/go.mod h1:cJ6Cj7dQo+O6GJNiMx+Pa94qKj+TG8ONdKHgMNIyyag= -github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= @@ -347,8 +347,8 @@ github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFF github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck= -github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= +github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= @@ -381,9 +381,6 @@ github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786 h1:2ZKn+w/BJeL github.com/masterzen/simplexml v0.0.0-20190410153822-31eea3082786/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= github.com/masterzen/winrm v0.0.0-20210623064412-3b76017826b0 h1:KqYuDbSr8I2X8H65InN8SafDEa0UaLRy6WEmxDqd0F0= github.com/masterzen/winrm v0.0.0-20210623064412-3b76017826b0/go.mod h1:l31LCh9VvG43RJ83A5JLkFPjuz48cZAxBSLQLaIn1p8= -github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= -github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= -github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= @@ -452,6 +449,7 @@ github.com/nywilken/go-cty v1.13.3 h1:03U99oXf3j3g9xgqAE3YGpixCjM8Mg09KZ0Ji9LzX0 github.com/nywilken/go-cty v1.13.3/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/packer-community/winrmcp v0.0.0-20180921211025-c76d91c1e7db h1:9uViuKtx1jrlXLBW/pMnhOfzn3iSEdLase/But/IZRU= @@ -461,6 +459,8 @@ github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0Mw github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= +github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -508,8 +508,10 @@ github.com/shoenig/test v0.6.3/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnj github.com/shopspring/decimal v1.2.0 h1:abSATXmQEYyShuxI4/vyW3tV1MrKAJzCZ/0zLUXYbsQ= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= +github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 h1:JIAuq3EEf9cgbU6AtGPK4CTG3Zf6CKMNqf0MHTggAUA= github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= @@ -546,8 +548,8 @@ github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/vmihailenco/msgpack/v5 v5.3.5/go.mod h1:7xyJ9e+0+9SaZT0Wt1RGleJXzli6Q/V5KbhBonMG9jc= github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= -github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= -github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= +github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= +github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4= @@ -574,7 +576,6 @@ go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyK go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190222235706-ffb98f73852f/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -584,11 +585,12 @@ golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200422194213-44a606286825/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -604,6 +606,7 @@ golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -621,13 +624,15 @@ golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.18.0 h1:mIYleuAkSbHh0tCv7RvjL3F6ZVbLjq4+R7zbOn3Kokg= -golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0= @@ -639,6 +644,7 @@ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -650,7 +656,6 @@ golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -658,33 +663,37 @@ golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -693,7 +702,9 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= @@ -707,6 +718,7 @@ golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From a9000f3a702eb788966b0e1e742ba9a8422b5c50 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jan 2024 16:15:15 +0000 Subject: [PATCH 269/381] build(deps): bump github.com/hashicorp/hcp-sdk-go from 0.74.0 to 0.79.0 Bumps [github.com/hashicorp/hcp-sdk-go](https://github.com/hashicorp/hcp-sdk-go) from 0.74.0 to 0.79.0. - [Release notes](https://github.com/hashicorp/hcp-sdk-go/releases) - [Changelog](https://github.com/hashicorp/hcp-sdk-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/hcp-sdk-go/compare/v0.74.0...v0.79.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/hcp-sdk-go dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 35 ++++++++++---------- go.sum | 100 +++++++++++++++++++++------------------------------------ 2 files changed, 55 insertions(+), 80 deletions(-) diff --git a/go.mod b/go.mod index a3f1228dbab..3630bed21ec 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e github.com/dsnet/compress v0.0.1 github.com/go-git/go-git/v5 v5.11.0 - github.com/go-openapi/runtime v0.26.0 + github.com/go-openapi/runtime v0.26.2 github.com/gobwas/glob v0.2.3 github.com/gofrs/flock v0.8.1 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect @@ -22,7 +22,7 @@ require ( github.com/hashicorp/go-uuid v1.0.3 github.com/hashicorp/go-version v1.6.0 github.com/hashicorp/hcl/v2 v2.19.1 - github.com/hashicorp/hcp-sdk-go v0.74.0 + github.com/hashicorp/hcp-sdk-go v0.79.0 github.com/hashicorp/packer-plugin-amazon v1.2.1 github.com/hashicorp/packer-plugin-sdk v0.5.2 github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 @@ -47,7 +47,7 @@ require ( golang.org/x/crypto v0.17.0 // indirect golang.org/x/mod v0.13.0 golang.org/x/net v0.19.0 - golang.org/x/oauth2 v0.14.0 + golang.org/x/oauth2 v0.15.0 golang.org/x/sync v0.4.0 golang.org/x/sys v0.15.0 // indirect golang.org/x/term v0.15.0 // indirect @@ -58,7 +58,7 @@ require ( ) require ( - github.com/go-openapi/strfmt v0.21.7 + github.com/go-openapi/strfmt v0.21.10 github.com/oklog/ulid v1.3.1 github.com/pierrec/lz4/v4 v4.1.18 github.com/shirou/gopsutil/v3 v3.23.4 @@ -99,21 +99,21 @@ require ( github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/go-jose/go-jose/v3 v3.0.1 // indirect - github.com/go-logr/logr v1.2.3 // indirect + github.com/go-logr/logr v1.3.0 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect - github.com/go-openapi/analysis v0.21.4 // indirect - github.com/go-openapi/errors v0.20.4 // indirect - github.com/go-openapi/jsonpointer v0.20.0 // indirect - github.com/go-openapi/jsonreference v0.20.2 // indirect - github.com/go-openapi/loads v0.21.2 // indirect - github.com/go-openapi/spec v0.20.9 // indirect - github.com/go-openapi/swag v0.22.4 // indirect - github.com/go-openapi/validate v0.22.2 // indirect + github.com/go-openapi/analysis v0.21.5 // indirect + github.com/go-openapi/errors v0.21.0 // indirect + github.com/go-openapi/jsonpointer v0.20.1 // indirect + github.com/go-openapi/jsonreference v0.20.3 // indirect + github.com/go-openapi/loads v0.21.3 // indirect + github.com/go-openapi/spec v0.20.12 // indirect + github.com/go-openapi/swag v0.22.5 // indirect + github.com/go-openapi/validate v0.22.4 // indirect github.com/gofrs/uuid v4.0.0+incompatible // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/google/s2a-go v0.1.4 // indirect - github.com/google/uuid v1.3.1 // indirect + github.com/google/uuid v1.4.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.4 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/hashicorp/aws-sdk-go-base v0.7.1 // indirect @@ -172,10 +172,11 @@ require ( github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect - go.mongodb.org/mongo-driver v1.12.0 // indirect + go.mongodb.org/mongo-driver v1.13.1 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/otel v1.14.0 // indirect - go.opentelemetry.io/otel/trace v1.14.0 // indirect + go.opentelemetry.io/otel v1.17.0 // indirect + go.opentelemetry.io/otel/metric v1.17.0 // indirect + go.opentelemetry.io/otel/trace v1.17.0 // indirect golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect diff --git a/go.sum b/go.sum index 37acc1fcf98..78ce3680a49 100644 --- a/go.sum +++ b/go.sum @@ -58,7 +58,6 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= -github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/aws/aws-sdk-go v1.31.9/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= @@ -100,7 +99,6 @@ github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XP github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -144,43 +142,32 @@ github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2 github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/go-openapi/analysis v0.21.4 h1:ZDFLvSNxpDaomuCueM0BlSXxpANBlFYiBvr+GXrvIHc= -github.com/go-openapi/analysis v0.21.4/go.mod h1:4zQ35W4neeZTqh3ol0rv/O8JBbka9QyAgQRPp9y3pfo= -github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/errors v0.20.4 h1:unTcVm6PispJsMECE3zWgvG4xTiKda1LIR5rCRWLG6M= -github.com/go-openapi/errors v0.20.4/go.mod h1:Z3FlZ4I8jEGxjUK+bugx3on2mIAk4txuAOhlsB1FSgk= -github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonpointer v0.20.0 h1:ESKJdU9ASRfaPNOPRx12IUyA1vn3R9GiE3KYD14BXdQ= -github.com/go-openapi/jsonpointer v0.20.0/go.mod h1:6PGzBjjIIumbLYysB73Klnms1mwnU4G3YHOECG3CedA= -github.com/go-openapi/jsonreference v0.20.0/go.mod h1:Ag74Ico3lPc+zR+qjn4XBUmXymS4zJbYVCZmcgkasdo= -github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= -github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -github.com/go-openapi/loads v0.21.2 h1:r2a/xFIYeZ4Qd2TnGpWDIQNcP80dIaZgf704za8enro= -github.com/go-openapi/loads v0.21.2/go.mod h1:Jq58Os6SSGz0rzh62ptiu8Z31I+OTHqmULx5e/gJbNw= -github.com/go-openapi/runtime v0.26.0 h1:HYOFtG00FM1UvqrcxbEJg/SwvDRvYLQKGhw2zaQjTcc= -github.com/go-openapi/runtime v0.26.0/go.mod h1:QgRGeZwrUcSHdeh4Ka9Glvo0ug1LC5WyE+EV88plZrQ= -github.com/go-openapi/spec v0.20.6/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= -github.com/go-openapi/spec v0.20.9 h1:xnlYNQAwKd2VQRRfwTEI0DcK+2cbuvI/0c7jx3gA8/8= -github.com/go-openapi/spec v0.20.9/go.mod h1:2OpW+JddWPrpXSCIX8eOx7lZ5iyuWj3RYR6VaaBKcWA= -github.com/go-openapi/strfmt v0.21.3/go.mod h1:k+RzNO0Da+k3FrrynSNN8F7n/peCmQQqbbXjtDfvmGg= -github.com/go-openapi/strfmt v0.21.7 h1:rspiXgNWgeUzhjo1YU01do6qsahtJNByjLVbPLNHb8k= -github.com/go-openapi/strfmt v0.21.7/go.mod h1:adeGTkxE44sPyLk0JV235VQAO/ZXUr8KAzYjclFs3ew= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-openapi/swag v0.22.4 h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogBU= -github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= -github.com/go-openapi/validate v0.22.2 h1:Lda8nadL/5kIvS5mdXCAIuZ7IVXvKFIppLnw+EZh+n0= -github.com/go-openapi/validate v0.22.2/go.mod h1:kVxh31KbfsxU8ZyoHaDbLBWU5CnMdqBUEtadQ2G4d5M= +github.com/go-openapi/analysis v0.21.5 h1:3tHfEBh6Ia8eKc4M7khOGjPOAlWKJ10d877Cr9teujI= +github.com/go-openapi/analysis v0.21.5/go.mod h1:25YcZosX9Lwz2wBsrFrrsL8bmjjXdlyP6zsr2AMy29M= +github.com/go-openapi/errors v0.21.0 h1:FhChC/duCnfoLj1gZ0BgaBmzhJC2SL/sJr8a2vAobSY= +github.com/go-openapi/errors v0.21.0/go.mod h1:jxNTMUxRCKj65yb/okJGEtahVd7uvWnuWfj53bse4ho= +github.com/go-openapi/jsonpointer v0.20.1 h1:MkK4VEIEZMj4wT9PmjaUmGflVBr9nvud4Q4UVFbDoBE= +github.com/go-openapi/jsonpointer v0.20.1/go.mod h1:bHen+N0u1KEO3YlmqOjTT9Adn1RfD91Ar825/PuiRVs= +github.com/go-openapi/jsonreference v0.20.3 h1:EjGcjTW8pD1mRis6+w/gmoBdqv5+RbE9B85D1NgDOVQ= +github.com/go-openapi/jsonreference v0.20.3/go.mod h1:FviDZ46i9ivh810gqzFLl5NttD5q3tSlMLqLr6okedM= +github.com/go-openapi/loads v0.21.3 h1:8sSH2FIm/SnbDUGv572md4YqVMFne/a9Eubvcd3anew= +github.com/go-openapi/loads v0.21.3/go.mod h1:Y3aMR24iHbKHppOj91nQ/SHc0cuPbAr4ndY4a02xydc= +github.com/go-openapi/runtime v0.26.2 h1:elWyB9MacRzvIVgAZCBJmqTi7hBzU0hlKD4IvfX0Zl0= +github.com/go-openapi/runtime v0.26.2/go.mod h1:O034jyRZ557uJKzngbMDJXkcKJVzXJiymdSfgejrcRw= +github.com/go-openapi/spec v0.20.12 h1:cgSLbrsmziAP2iais+Vz7kSazwZ8rsUZd6TUzdDgkVI= +github.com/go-openapi/spec v0.20.12/go.mod h1:iSCgnBcwbMW9SfzJb8iYynXvcY6C/QFrI7otzF7xGM4= +github.com/go-openapi/strfmt v0.21.10 h1:JIsly3KXZB/Qf4UzvzJpg4OELH/0ASDQsyk//TTBDDk= +github.com/go-openapi/strfmt v0.21.10/go.mod h1:vNDMwbilnl7xKiO/Ve/8H8Bb2JIInBnH+lqiw6QWgis= +github.com/go-openapi/swag v0.22.5 h1:fVS63IE3M0lsuWRzuom3RLwUMVI2peDH01s6M70ugys= +github.com/go-openapi/swag v0.22.5/go.mod h1:Gl91UqO+btAM0plGGxHqJcQZ1ZTy6jbmridBTsDy8A0= +github.com/go-openapi/validate v0.22.4 h1:5v3jmMyIPKTR8Lv9syBAIRxG6lY0RqeBPB1LKEijzk8= +github.com/go-openapi/validate v0.22.4/go.mod h1:qm6O8ZIcPVdSY5219468Jv7kBdGvkiZLPOmqnqTUZ2A= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= @@ -239,8 +226,8 @@ github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= -github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.2.4 h1:uGy6JWR/uMIILU8wbf+OkstIrNiMjGpEIyhx8f6W7s4= github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= @@ -311,8 +298,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= -github.com/hashicorp/hcp-sdk-go v0.74.0 h1:41AS+wk78UgB4wM6oAwkB7lMSmOUQTOYQ9pT2Gc2glA= -github.com/hashicorp/hcp-sdk-go v0.74.0/go.mod h1:5GwdT+HGhEQsh4n1yK+RADnQkfOo6vHgr2BpYUt2t9U= +github.com/hashicorp/hcp-sdk-go v0.79.0 h1:tcAbyWtRnn7rI306YPMav/VpbzcpDf3yRsHKiCUQtuc= +github.com/hashicorp/hcp-sdk-go v0.79.0/go.mod h1:vQ4fzdL1AmhIAbCw+4zmFe5Hbpajj3NvRWkJoVuxmAk= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR/prTM= @@ -362,18 +349,13 @@ github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= @@ -425,7 +407,6 @@ github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTS github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= @@ -442,7 +423,6 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d h1:VhgPp6v9qf9Agr/56bj7Y/xa04UccTW04VP0Qed4vnQ= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U= github.com/nywilken/go-cty v1.13.3 h1:03U99oXf3j3g9xgqAE3YGpixCjM8Mg09KZ0Ji9LzX0o= @@ -534,7 +514,6 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tklauser/go-sysconf v0.3.11 h1:89WgdJhk5SNwJfu+GKyYveZ4IaJ7xAkecBo+KdJV0CM= github.com/tklauser/go-sysconf v0.3.11/go.mod h1:GqXfhXY3kiPa0nAXPDIQIWzJbMCB7AmcWpGR8lSZfqI= github.com/tklauser/numcpus v0.6.0 h1:kebhY2Qt+3U6RNK7UqpYNA+tJ23IBEGKkB7JQBfDYms= @@ -551,9 +530,7 @@ github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= -github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g= github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4= -github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8= github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= @@ -564,16 +541,17 @@ github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQ github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b h1:FosyBZYxY34Wul7O/MSKey3txpPYyCqVO5ZyceuQJEI= github.com/zclconf/go-cty-yaml v1.0.1 h1:up11wlgAaDvlAGENcFDnZgkn0qUJurso7k6EpURKNF8= github.com/zclconf/go-cty-yaml v1.0.1/go.mod h1:IP3Ylp0wQpYm50IHK8OZWKMu6sPJIUgKa8XhiVHura0= -go.mongodb.org/mongo-driver v1.10.0/go.mod h1:wsihk0Kdgv8Kqu1Anit4sfK+22vSFbUrAVEYRhCXrA8= -go.mongodb.org/mongo-driver v1.12.0 h1:aPx33jmn/rQuJXPQLZQ8NtfPQG8CaqgLThFtqRb0PiE= -go.mongodb.org/mongo-driver v1.12.0/go.mod h1:AZkxhPnFJUoH7kZlFkVKucV20K387miPfm7oimrSmK0= +go.mongodb.org/mongo-driver v1.13.1 h1:YIc7HTYsKndGK4RFzJ3covLz1byri52x0IoMB0Pt/vk= +go.mongodb.org/mongo-driver v1.13.1/go.mod h1:wcDf1JBCXy2mOW0bWHwO/IOYqdca1MPCwDtFu/Z9+eo= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM= -go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU= -go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY= -go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M= -go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8= +go.opentelemetry.io/otel v1.17.0 h1:MW+phZ6WZ5/uk2nd93ANk/6yJ+dVrvNWUjGhnnFU5jM= +go.opentelemetry.io/otel v1.17.0/go.mod h1:I2vmBGtFaODIVMBSTPVDlJSzBDNf93k60E6Ft0nyjo0= +go.opentelemetry.io/otel/metric v1.17.0 h1:iG6LGVz5Gh+IuO0jmgvpTB6YVrCGngi8QGm+pMd8Pdc= +go.opentelemetry.io/otel/metric v1.17.0/go.mod h1:h4skoxdZI17AxwITdmdZjjYJQH5nzijUUjm+wtPph5o= +go.opentelemetry.io/otel/sdk v1.17.0 h1:FLN2X66Ke/k5Sg3V623Q7h7nt3cHXaW1FOvKKrW0IpE= +go.opentelemetry.io/otel/trace v1.17.0 h1:/SWhSRHmDPOImIAetP1QAeMnZYiQXrTy4fMMYOdSKWQ= +go.opentelemetry.io/otel/trace v1.17.0/go.mod h1:I/4vKTgFclIsXRVucpH25X0mpFSczM7aHeaz0ZBLWjY= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190222235706-ffb98f73852f/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -635,8 +613,8 @@ golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0= -golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= +golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ= +golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -769,9 +747,7 @@ gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLks gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.28 h1:n1tBJnnK2r7g9OW2btFH91V92STTUevLXYFb8gy9EMk= gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= @@ -786,8 +762,6 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From beb5fcf4701d136cb5c5bc8adfe653260e99fd66 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 10 Jan 2024 10:03:51 -0500 Subject: [PATCH 270/381] Bump github.com/cloudflare/circl to address GHSA-9763-4f94-gfch (#12781) --- go.mod | 2 +- go.sum | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 3630bed21ec..19833e27c6a 100644 --- a/go.mod +++ b/go.mod @@ -90,7 +90,7 @@ require ( github.com/bmatcuk/doublestar v1.1.5 // indirect github.com/cenkalti/backoff/v3 v3.2.2 // indirect github.com/chzyer/test v1.0.0 // indirect - github.com/cloudflare/circl v1.3.3 // indirect + github.com/cloudflare/circl v1.3.7 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dylanmei/iso8601 v0.1.0 // indirect diff --git a/go.sum b/go.sum index 78ce3680a49..33dfdef406d 100644 --- a/go.sum +++ b/go.sum @@ -91,8 +91,9 @@ github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38 github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= +github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= +github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= From 6c99f387a036de7ef310b4f9b04628ff943d004b Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Thu, 11 Jan 2024 14:23:13 -0500 Subject: [PATCH 271/381] packer: remove single-component plugins Single-component plugins are a relic from the past that has been deprecated from version 1.7.0 and onwards. Since we're revisiting how plugins are installed/loaded, and the changes will be incompatible with those, we remove them in preparation of this work. --- command/init_test.go | 95 ---------------------------- packer/plugin.go | 89 -------------------------- packer/plugin_discover_test.go | 112 --------------------------------- 3 files changed, 296 deletions(-) diff --git a/command/init_test.go b/command/init_test.go index 57ab1781d04..d39699ee51c 100644 --- a/command/init_test.go +++ b/command/init_test.go @@ -10,7 +10,6 @@ import ( "fmt" "log" "os" - "path/filepath" "runtime" "sort" "strings" @@ -203,100 +202,6 @@ func TestInitCommand_Run(t *testing.T) { "h1:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", nil, }, - { - "manually-installed-single-component-plugin-works", - []func(t *testing.T, tc testCaseInit){ - skipInitTestUnlessEnVar(acctest.TestEnvVar).fn, - initTestGoGetPlugin{ - Src: "https://github.com/azr/packer-provisioner-comment/releases/download/v1.0.0/" + - "packer-provisioner-comment_v1.0.0_" + runtime.GOOS + "_" + runtime.GOARCH + ".zip", - Dst: filepath.Join(cfg.dir("4_pkr_config"), defaultConfigDir, "plugins"), - }.fn, - }, - TestMetaFile(t), - nil, - map[string]string{ - "darwin": "h1:nVebbXToeehPUASRbvV9M4qaA9+UgoR5AMp7LjTrSBk=", - "linux": "h1:/U5vdeMtOpRKNu0ld8+qf4t6WC+BsfCQ6JRo9Dh/khI=", - "windows": "h1:0nkdNCjtTHTgBNkzVKG++/VYmWAvq/o236GGTxrIf/Q=", - }[runtime.GOOS], - map[string]string{ - `source.pkr.hcl`: ` - source "null" "test" { - communicator = "none" - } - `, - `build.pkr.hcl`: ` - build { - sources = ["source.null.test"] - provisioner "comment" { - comment = "Begin ¡" - ui = true - bubble_text = true - } - } - `, - }, - cfg.dir("4_pkr_config"), - cfg.dir("4_pkr_user_folder"), - 0, - nil, - map[string]string{ - "darwin": "h1:nVebbXToeehPUASRbvV9M4qaA9+UgoR5AMp7LjTrSBk=", - "linux": "h1:/U5vdeMtOpRKNu0ld8+qf4t6WC+BsfCQ6JRo9Dh/khI=", - "windows": "h1:0nkdNCjtTHTgBNkzVKG++/VYmWAvq/o236GGTxrIf/Q=", - }[runtime.GOOS], - []func(*testing.T, testCaseInit){ - testBuild{want: 0}.fn, - }, - }, - { - "manually-installed-single-component-plugin-old-api-fails", - []func(t *testing.T, tc testCaseInit){ - skipInitTestUnlessEnVar(acctest.TestEnvVar).fn, - initTestGoGetPlugin{ - Src: "https://github.com/azr/packer-provisioner-comment/releases/download/v0.0.0/" + - "packer-provisioner-comment_v0.0.0_" + runtime.GOOS + "_" + runtime.GOARCH + ".zip", - Dst: filepath.Join(cfg.dir("5_pkr_config"), defaultConfigDir, "plugins"), - }.fn, - }, - TestMetaFile(t), - nil, - map[string]string{ - "darwin": "h1:gW4gzpDXeu3cDrXgHJj9iWAN7Pyak626Gq8Bu2LG1kY=", - "linux": "h1:wQ2H5+J7VXwQzqR9DgpWtjhw9OVEFbcKQL6dgm/+zwo=", - "windows": "h1:BqRdW3c5H1PZ2Q4DOaKWja21v3nDlY5Nn8kqahhHGSw=", - }[runtime.GOOS], - map[string]string{ - `source.pkr.hcl`: ` - source "null" "test" { - communicator = "none" - } - `, - `build.pkr.hcl`: ` - build { - sources = ["source.null.test"] - provisioner "comment" { - comment = "Begin ¡" - ui = true - bubble_text = true - } - } - `, - }, - cfg.dir("5_pkr_config"), - cfg.dir("5_pkr_user_folder"), - 0, - nil, - map[string]string{ - "darwin": "h1:gW4gzpDXeu3cDrXgHJj9iWAN7Pyak626Gq8Bu2LG1kY=", - "linux": "h1:wQ2H5+J7VXwQzqR9DgpWtjhw9OVEFbcKQL6dgm/+zwo=", - "windows": "h1:BqRdW3c5H1PZ2Q4DOaKWja21v3nDlY5Nn8kqahhHGSw=", - }[runtime.GOOS], - []func(*testing.T, testCaseInit){ - testBuild{want: 1}.fn, - }, - }, { "unsupported-non-github-source-address", []func(t *testing.T, tc testCaseInit){ diff --git a/packer/plugin.go b/packer/plugin.go index 313ef2db31e..86e02289f5c 100644 --- a/packer/plugin.go +++ b/packer/plugin.go @@ -72,13 +72,6 @@ func (c *PluginConfig) Discover() error { c.KnownPluginFolders = PluginFolders(".") } - // TODO after JSON is deprecated remove support for legacy component plugins. - for _, knownFolder := range c.KnownPluginFolders { - if err := c.discoverLegacyMonoComponents(knownFolder); err != nil { - return err - } - } - // Pick last folder as it's the one with the highest priority // This is the same logic used when installing plugins via Packer's plugin installation commands. pluginInstallationPath := c.KnownPluginFolders[len(c.KnownPluginFolders)-1] @@ -107,88 +100,6 @@ func (c *PluginConfig) Discover() error { return nil } -func (c *PluginConfig) discoverLegacyMonoComponents(path string) error { - var err error - log.Printf("[TRACE] discovering plugins in %s", path) - - if !filepath.IsAbs(path) { - path, err = filepath.Abs(path) - if err != nil { - return err - } - } - var externallyUsed []string - - pluginPaths, err := c.discoverSingle(filepath.Join(path, "packer-builder-*")) - if err != nil { - return err - } - for pluginName, pluginPath := range pluginPaths { - newPath := pluginPath // this needs to be stored in a new variable for the func below - c.Builders.Set(pluginName, func() (packersdk.Builder, error) { - return c.Client(newPath).Builder() - }) - externallyUsed = append(externallyUsed, pluginName) - } - if len(externallyUsed) > 0 { - sort.Strings(externallyUsed) - log.Printf("[INFO] using external builders: %v", externallyUsed) - externallyUsed = nil - } - - pluginPaths, err = c.discoverSingle(filepath.Join(path, "packer-post-processor-*")) - if err != nil { - return err - } - for pluginName, pluginPath := range pluginPaths { - newPath := pluginPath // this needs to be stored in a new variable for the func below - c.PostProcessors.Set(pluginName, func() (packersdk.PostProcessor, error) { - return c.Client(newPath).PostProcessor() - }) - externallyUsed = append(externallyUsed, pluginName) - } - if len(externallyUsed) > 0 { - sort.Strings(externallyUsed) - log.Printf("using external post-processors %v", externallyUsed) - externallyUsed = nil - } - - pluginPaths, err = c.discoverSingle(filepath.Join(path, "packer-provisioner-*")) - if err != nil { - return err - } - for pluginName, pluginPath := range pluginPaths { - newPath := pluginPath // this needs to be stored in a new variable for the func below - c.Provisioners.Set(pluginName, func() (packersdk.Provisioner, error) { - return c.Client(newPath).Provisioner() - }) - externallyUsed = append(externallyUsed, pluginName) - } - if len(externallyUsed) > 0 { - sort.Strings(externallyUsed) - log.Printf("using external provisioners %v", externallyUsed) - externallyUsed = nil - } - - pluginPaths, err = c.discoverSingle(filepath.Join(path, "packer-datasource-*")) - if err != nil { - return err - } - for pluginName, pluginPath := range pluginPaths { - newPath := pluginPath // this needs to be stored in a new variable for the func below - c.DataSources.Set(pluginName, func() (packersdk.Datasource, error) { - return c.Client(newPath).Datasource() - }) - externallyUsed = append(externallyUsed, pluginName) - } - if len(externallyUsed) > 0 { - sort.Strings(externallyUsed) - log.Printf("using external datasource %v", externallyUsed) - } - - return nil -} - func (c *PluginConfig) discoverSingle(glob string) (map[string]string, error) { matches, err := filepath.Glob(glob) if err != nil { diff --git a/packer/plugin_discover_test.go b/packer/plugin_discover_test.go index 901c3d42f1d..6dbe8589b2e 100644 --- a/packer/plugin_discover_test.go +++ b/packer/plugin_discover_test.go @@ -42,118 +42,6 @@ func TestDiscoverReturnsIfMagicCookieSet(t *testing.T) { } } -func TestEnvVarPackerPluginPath(t *testing.T) { - // Create a temporary directory to store plugins in - dir, _, cleanUpFunc, err := generateFakePlugins("custom_plugin_dir", - []string{"packer-provisioner-partyparrot"}) - if err != nil { - t.Fatalf("Error creating fake custom plugins: %s", err) - } - - defer cleanUpFunc() - - // Add temp dir to path. - t.Setenv("PACKER_PLUGIN_PATH", dir) - - config := newPluginConfig() - - err = config.Discover() - if err != nil { - t.Fatalf("Should not have errored: %s", err) - } - - if len(config.Provisioners.List()) == 0 { - t.Fatalf("Should have found partyparrot provisioner") - } - if !config.Provisioners.Has("partyparrot") { - t.Fatalf("Should have found partyparrot provisioner.") - } -} - -func TestEnvVarPackerPluginPath_MultiplePaths(t *testing.T) { - // Create a temporary directory to store plugins in - dir, _, cleanUpFunc, err := generateFakePlugins("custom_plugin_dir", - []string{"packer-provisioner-partyparrot"}) - if err != nil { - t.Fatalf("Error creating fake custom plugins: %s", err) - } - - defer cleanUpFunc() - - pathsep := ":" - if runtime.GOOS == "windows" { - pathsep = ";" - } - - // Create a second dir to look in that will be empty - decoyDir, err := os.MkdirTemp("", "decoy") - if err != nil { - t.Fatalf("Failed to create a temporary test dir.") - } - defer os.Remove(decoyDir) - - pluginPath := dir + pathsep + decoyDir - - // Add temp dir to path. - t.Setenv("PACKER_PLUGIN_PATH", pluginPath) - - config := newPluginConfig() - - err = config.Discover() - if err != nil { - t.Fatalf("Should not have errored: %s", err) - } - - if len(config.Provisioners.List()) == 0 { - t.Fatalf("Should have found partyparrot provisioner") - } - if !config.Provisioners.Has("partyparrot") { - t.Fatalf("Should have found partyparrot provisioner.") - } -} - -func TestDiscoverDatasource(t *testing.T) { - // Create a temporary directory to store plugins in - dir, _, cleanUpFunc, err := generateFakePlugins("custom_plugin_dir", - []string{"packer-datasource-partyparrot"}) - if err != nil { - t.Fatalf("Error creating fake custom plugins: %s", err) - } - - defer cleanUpFunc() - - pathsep := ":" - if runtime.GOOS == "windows" { - pathsep = ";" - } - - // Create a second dir to look in that will be empty - decoyDir, err := os.MkdirTemp("", "decoy") - if err != nil { - t.Fatalf("Failed to create a temporary test dir.") - } - defer os.Remove(decoyDir) - - pluginPath := dir + pathsep + decoyDir - - // Add temp dir to path. - t.Setenv("PACKER_PLUGIN_PATH", pluginPath) - - config := newPluginConfig() - - err = config.Discover() - if err != nil { - t.Fatalf("Should not have errored: %s", err) - } - - if len(config.DataSources.List()) == 0 { - t.Fatalf("Should have found partyparrot datasource") - } - if !config.DataSources.Has("partyparrot") { - t.Fatalf("Should have found partyparrot datasource.") - } -} - func TestMultiPlugin_describe(t *testing.T) { createMockPlugins(t, mockPlugins) pluginDir := os.Getenv("PACKER_PLUGIN_PATH") From 96755d2f7b27a2db40b67932b864ba6ff6b85a18 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 17 Jan 2024 06:13:04 -0500 Subject: [PATCH 272/381] Remove migrated integrations from plugin manifest This change removes Scaleway and Mondoo from the external plugins manifest in favor of the integration framework, which they have migrated to. --- website/data/plugins-manifest.json | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/website/data/plugins-manifest.json b/website/data/plugins-manifest.json index 8405f6a459a..49e5221c9e1 100644 --- a/website/data/plugins-manifest.json +++ b/website/data/plugins-manifest.json @@ -52,13 +52,6 @@ "pluginTier": "community", "version": "latest" }, - { - "title": "Mondoo", - "path": "mondoo", - "repo": "mondoohq/packer-plugin-mondoo", - "pluginTier": "verified", - "version": "latest" - }, { "title": "Nutanix", "path": "nutanix", @@ -75,13 +68,6 @@ "pluginTier": "verified", "isHcpPackerReady": true }, - { - "title": "Scaleway", - "path": "scaleway", - "repo": "scaleway/packer-plugin-scaleway", - "pluginTier": "verified", - "version": "latest" - }, { "title": "UCloud", "path": "ucloud", From 91ce018cf1a25ed05d7425f61ac1208c88868d87 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Jan 2024 19:55:21 +0000 Subject: [PATCH 273/381] build(deps): bump github.com/hashicorp/hcp-sdk-go from 0.79.0 to 0.81.0 Bumps [github.com/hashicorp/hcp-sdk-go](https://github.com/hashicorp/hcp-sdk-go) from 0.79.0 to 0.81.0. - [Release notes](https://github.com/hashicorp/hcp-sdk-go/releases) - [Changelog](https://github.com/hashicorp/hcp-sdk-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/hcp-sdk-go/compare/v0.79.0...v0.81.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/hcp-sdk-go dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 19833e27c6a..ff209b6cb7f 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/hashicorp/go-uuid v1.0.3 github.com/hashicorp/go-version v1.6.0 github.com/hashicorp/hcl/v2 v2.19.1 - github.com/hashicorp/hcp-sdk-go v0.79.0 + github.com/hashicorp/hcp-sdk-go v0.81.0 github.com/hashicorp/packer-plugin-amazon v1.2.1 github.com/hashicorp/packer-plugin-sdk v0.5.2 github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 diff --git a/go.sum b/go.sum index 33dfdef406d..b0ad567bd92 100644 --- a/go.sum +++ b/go.sum @@ -299,8 +299,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= -github.com/hashicorp/hcp-sdk-go v0.79.0 h1:tcAbyWtRnn7rI306YPMav/VpbzcpDf3yRsHKiCUQtuc= -github.com/hashicorp/hcp-sdk-go v0.79.0/go.mod h1:vQ4fzdL1AmhIAbCw+4zmFe5Hbpajj3NvRWkJoVuxmAk= +github.com/hashicorp/hcp-sdk-go v0.81.0 h1:7p/kO7ysGmn0mk7ssAjUvHQROQm3mXoHoxcBnRFdQls= +github.com/hashicorp/hcp-sdk-go v0.81.0/go.mod h1:vQ4fzdL1AmhIAbCw+4zmFe5Hbpajj3NvRWkJoVuxmAk= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR/prTM= From 3fa637c608a2310b65bec6c9fce456038f9bdace Mon Sep 17 00:00:00 2001 From: Devashish Date: Wed, 24 Jan 2024 13:17:35 -0500 Subject: [PATCH 274/381] Migrate HCP Packer to API V2 and new nomenclature changes (#12794) * add hcp packer new nomenclature updates * Update docs with nomenclature changes * Update navigation bar links * Bump github.com/hashicorp/hcp-sdk-go from 0.81.0 to 0.82.0 * fix acceptance test template --------- Co-authored-by: sylviamoss Co-authored-by: Wilken Rivera --- command/build.go | 6 +- command/plugin.go | 4 + datasource/hcp-packer-artifact/data.go | 251 ++++++++++ .../hcp-packer-artifact/data.hcl2spec.go | 98 ++++ datasource/hcp-packer-image/data.go | 18 +- datasource/hcp-packer-iteration/data.go | 4 +- .../hcp-packer-iteration/data_acc_test.go | 42 +- .../test-fixtures/hcp-setup-build.pkr.hcl | 16 + .../test-fixtures/template.pkr.hcl | 14 +- datasource/hcp-packer-version/data.go | 149 ++++++ .../hcp-packer-version/data.hcl2spec.go | 88 ++++ .../hcp-packer-version/data_acc_test.go | 69 +++ .../test-fixtures/hcp-setup-build.pkr.hcl | 16 + .../test-fixtures/template.pkr.hcl | 33 ++ go.mod | 3 +- go.sum | 7 +- internal/hcp/api/client.go | 12 +- internal/hcp/api/deprecated_client.go | 55 +++ internal/hcp/api/deprecated_service.go | 79 +++ internal/hcp/api/mock_service.go | 211 ++++---- internal/hcp/api/service.go | 253 ---------- internal/hcp/api/service_bucket.go | 66 +++ internal/hcp/api/service_build.go | 93 ++++ internal/hcp/api/service_channel.go | 35 ++ internal/hcp/api/service_version.go | 61 +++ internal/hcp/registry/artifact.go | 8 +- internal/hcp/registry/deprecated_ds_config.go | 131 +++++ internal/hcp/registry/ds_config.go | 129 +++++ internal/hcp/registry/errors.go | 3 +- internal/hcp/registry/hcl.go | 177 ++----- internal/hcp/registry/hcp.go | 25 +- internal/hcp/registry/json.go | 32 +- internal/hcp/registry/null_registry.go | 4 +- internal/hcp/registry/registry.go | 10 +- internal/hcp/registry/types.bucket.go | 457 ++++++++++-------- .../hcp/registry/types.bucket_service_test.go | 204 ++++---- internal/hcp/registry/types.bucket_test.go | 102 ++-- internal/hcp/registry/types.builds.go | 82 ++-- internal/hcp/registry/types.iterations.go | 177 ------- internal/hcp/registry/types.version.go | 176 +++++++ ...erations_test.go => types.version_test.go} | 8 +- .../datasources/hcp/hcp-packer-artifact.mdx | 105 ++++ .../docs/datasources/hcp/hcp-packer-image.mdx | 4 +- .../datasources/hcp/hcp-packer-iteration.mdx | 4 +- .../datasources/hcp/hcp-packer-version.mdx | 96 ++++ .../content/docs/datasources/hcp/index.mdx | 28 +- website/content/docs/hcp/index.mdx | 106 ++-- website/content/docs/index.mdx | 4 +- .../Config-not-required.mdx | 6 + .../hcp-packer-artifact/Config-required.mdx | 22 + .../hcp-packer-artifact/DatasourceOutput.mdx | 31 ++ .../hcp-packer-image/Config-required.mdx | 4 +- .../hcp-packer-version/Config-required.mdx | 7 + .../hcp-packer-version/DatasourceOutput.mdx | 25 + website/data/docs-nav-data.json | 8 + 55 files changed, 2651 insertions(+), 1207 deletions(-) create mode 100644 datasource/hcp-packer-artifact/data.go create mode 100644 datasource/hcp-packer-artifact/data.hcl2spec.go create mode 100644 datasource/hcp-packer-iteration/test-fixtures/hcp-setup-build.pkr.hcl create mode 100644 datasource/hcp-packer-version/data.go create mode 100644 datasource/hcp-packer-version/data.hcl2spec.go create mode 100644 datasource/hcp-packer-version/data_acc_test.go create mode 100644 datasource/hcp-packer-version/test-fixtures/hcp-setup-build.pkr.hcl create mode 100644 datasource/hcp-packer-version/test-fixtures/template.pkr.hcl create mode 100644 internal/hcp/api/deprecated_client.go create mode 100644 internal/hcp/api/deprecated_service.go delete mode 100644 internal/hcp/api/service.go create mode 100644 internal/hcp/api/service_bucket.go create mode 100644 internal/hcp/api/service_build.go create mode 100644 internal/hcp/api/service_channel.go create mode 100644 internal/hcp/api/service_version.go create mode 100644 internal/hcp/registry/deprecated_ds_config.go create mode 100644 internal/hcp/registry/ds_config.go delete mode 100644 internal/hcp/registry/types.iterations.go create mode 100644 internal/hcp/registry/types.version.go rename internal/hcp/registry/{types.iterations_test.go => types.version_test.go} (88%) create mode 100644 website/content/docs/datasources/hcp/hcp-packer-artifact.mdx create mode 100644 website/content/docs/datasources/hcp/hcp-packer-version.mdx create mode 100644 website/content/partials/datasource/hcp-packer-artifact/Config-not-required.mdx create mode 100644 website/content/partials/datasource/hcp-packer-artifact/Config-required.mdx create mode 100644 website/content/partials/datasource/hcp-packer-artifact/DatasourceOutput.mdx create mode 100644 website/content/partials/datasource/hcp-packer-version/Config-required.mdx create mode 100644 website/content/partials/datasource/hcp-packer-version/DatasourceOutput.mdx diff --git a/command/build.go b/command/build.go index c9f7a537d1c..7d231a5b7b3 100644 --- a/command/build.go +++ b/command/build.go @@ -105,13 +105,13 @@ func (c *BuildCommand) RunContext(buildCtx context.Context, cla *BuildArgs) int return ret } - defer hcpRegistry.IterationStatusSummary() + defer hcpRegistry.VersionStatusSummary() - err := hcpRegistry.PopulateIteration(buildCtx) + err := hcpRegistry.PopulateVersion(buildCtx) if err != nil { return writeDiags(c.Ui, nil, hcl.Diagnostics{ &hcl.Diagnostic{ - Summary: "HCP: populating iteration failed", + Summary: "HCP: populating version failed", Severity: hcl.DiagError, Detail: err.Error(), }, diff --git a/command/plugin.go b/command/plugin.go index 50699654918..6cb92b86818 100644 --- a/command/plugin.go +++ b/command/plugin.go @@ -15,8 +15,10 @@ import ( filebuilder "github.com/hashicorp/packer/builder/file" nullbuilder "github.com/hashicorp/packer/builder/null" + hcppackerartifactdatasource "github.com/hashicorp/packer/datasource/hcp-packer-artifact" hcppackerimagedatasource "github.com/hashicorp/packer/datasource/hcp-packer-image" hcppackeriterationdatasource "github.com/hashicorp/packer/datasource/hcp-packer-iteration" + hcppackerversiondatasource "github.com/hashicorp/packer/datasource/hcp-packer-version" httpdatasource "github.com/hashicorp/packer/datasource/http" nulldatasource "github.com/hashicorp/packer/datasource/null" artificepostprocessor "github.com/hashicorp/packer/post-processor/artifice" @@ -63,8 +65,10 @@ var PostProcessors = map[string]packersdk.PostProcessor{ } var Datasources = map[string]packersdk.Datasource{ + "hcp-packer-artifact": new(hcppackerartifactdatasource.Datasource), "hcp-packer-image": new(hcppackerimagedatasource.Datasource), "hcp-packer-iteration": new(hcppackeriterationdatasource.Datasource), + "hcp-packer-version": new(hcppackerversiondatasource.Datasource), "http": new(httpdatasource.Datasource), "null": new(nulldatasource.Datasource), } diff --git a/datasource/hcp-packer-artifact/data.go b/datasource/hcp-packer-artifact/data.go new file mode 100644 index 00000000000..f148c3a35d2 --- /dev/null +++ b/datasource/hcp-packer-artifact/data.go @@ -0,0 +1,251 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: BUSL-1.1 + +//go:generate packer-sdc struct-markdown +//go:generate packer-sdc mapstructure-to-hcl2 -type DatasourceOutput,Config +package hcp_packer_artifact + +import ( + "context" + "errors" + "fmt" + "log" + + "github.com/zclconf/go-cty/cty" + + "github.com/hashicorp/hcl/v2/hcldec" + hcpPackerModels "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/models" + "github.com/hashicorp/packer-plugin-sdk/common" + "github.com/hashicorp/packer-plugin-sdk/hcl2helper" + packersdk "github.com/hashicorp/packer-plugin-sdk/packer" + "github.com/hashicorp/packer-plugin-sdk/template/config" + hcpapi "github.com/hashicorp/packer/internal/hcp/api" +) + +type Datasource struct { + config Config +} + +type Config struct { + common.PackerConfig `mapstructure:",squash"` + + // The name of the bucket your artifact is in. + BucketName string `mapstructure:"bucket_name" required:"true"` + + // The name of the channel to use when retrieving your artifact. + // Either `channel_name` or `version_fingerprint` MUST be set. + // If using several artifacts from a single version, you may prefer sourcing a version first, + // and referencing it for subsequent uses, as every `hcp_packer_artifact` with the channel set will generate a + // potentially billable HCP Packer request, but if several `hcp_packer_artifact`s use a shared `hcp_packer_version` + // that will only generate one potentially billable request. + ChannelName string `mapstructure:"channel_name" required:"true"` + + // The fingerprint of the version to use when retrieving your artifact. + // Either this or `channel_name` MUST be set. + // Mutually exclusive with `channel_name` + VersionFingerprint string `mapstructure:"version_fingerprint" required:"true"` + + // The name of the platform that your artifact is for. + // For example, "aws", "azure", or "gce". + Platform string `mapstructure:"platform" required:"true"` + + // The name of the region your artifact is in. + // For example "us-east-1". + Region string `mapstructure:"region" required:"true"` + + // The specific Packer builder used to create the artifact. + // For example, "amazon-ebs.example" + ComponentType string `mapstructure:"component_type" required:"false"` +} + +func (d *Datasource) ConfigSpec() hcldec.ObjectSpec { + return d.config.FlatMapstructure().HCL2Spec() +} + +func (d *Datasource) Configure(raws ...interface{}) error { + err := config.Decode(&d.config, nil, raws...) + if err != nil { + return err + } + + var errs *packersdk.MultiError + + if d.config.BucketName == "" { + errs = packersdk.MultiErrorAppend( + errs, fmt.Errorf("the `bucket_name` must be specified"), + ) + } + + // Ensure either channel_name or version_fingerprint is set, and not both at the same time. + if d.config.ChannelName == "" && d.config.VersionFingerprint == "" { + errs = packersdk.MultiErrorAppend(errs, errors.New( + "`version_fingerprint` or `channel_name` must be specified", + )) + } + if d.config.ChannelName != "" && d.config.VersionFingerprint != "" { + errs = packersdk.MultiErrorAppend(errs, errors.New( + "`version_fingerprint` and `channel_name` cannot be specified together", + )) + } + + if d.config.Region == "" { + errs = packersdk.MultiErrorAppend(errs, + fmt.Errorf("the `region` must be specified"), + ) + } + + if d.config.Platform == "" { + errs = packersdk.MultiErrorAppend(errs, fmt.Errorf( + "the `platform` must be specified", + )) + } + + if errs != nil && len(errs.Errors) > 0 { + return errs + } + return nil +} + +// DatasourceOutput Information from []*hcpPackerModels.HashicorpCloudPacker20230101Artifact with some information +// from the parent []*hcpPackerModels.HashicorpCloudPacker20230101Build included where it seemed +// like it might be relevant. Need to copy so we can generate +type DatasourceOutput struct { + // The name of the platform that the artifact exists in. + // For example, "aws", "azure", or "gce". + Platform string `mapstructure:"platform"` + + // The specific Packer builder or post-processor used to create the artifact. + ComponentType string `mapstructure:"component_type"` + + // The date and time at which the artifact was created. + CreatedAt string `mapstructure:"created_at"` + + // The ID of the build that created the artifact. This is a ULID, which is a + // unique identifier similar to a UUID. It is created by the HCP Packer + // Registry when a build is first created, and is unique to this build. + BuildID string `mapstructure:"build_id"` + + // The version ID. This is a ULID, which is a unique identifier similar + // to a UUID. It is created by the HCP Packer Registry when a version is + // first created, and is unique to this version. + VersionID string `mapstructure:"version_id"` + + // The ID of the channel used to query the version. This value will be empty if the `version_fingerprint` was used + // directly instead of a channel. + ChannelID string `mapstructure:"channel_id"` + + // The UUID associated with the Packer run that created this artifact. + PackerRunUUID string `mapstructure:"packer_run_uuid"` + + // Identifier or URL of the remote artifact as given by a build. + // For example, ami-12345. + ExternalIdentifier string `mapstructure:"external_identifier"` + + // The region as given by `packer build`. eg. "ap-east-1". + // For locally managed clouds, this may map instead to a cluster, server or datastore. + Region string `mapstructure:"region"` + + // The key:value metadata labels associated with this build. + Labels map[string]string `mapstructure:"labels"` +} + +func (d *Datasource) OutputSpec() hcldec.ObjectSpec { + return (&DatasourceOutput{}).FlatMapstructure().HCL2Spec() +} + +func (d *Datasource) Execute() (cty.Value, error) { + ctx := context.TODO() + + cli, err := hcpapi.NewClient() + if err != nil { + return cty.NullVal(cty.EmptyObject), err + } + + var version *hcpPackerModels.HashicorpCloudPacker20230101Version + var channelID string + if d.config.VersionFingerprint != "" { + log.Printf( + "[INFO] Reading info from HCP Packer Registry (%s) "+ + "[project_id=%s, organization_id=%s, version_fingerprint=%s]", + d.config.BucketName, cli.ProjectID, cli.OrganizationID, d.config.VersionFingerprint, + ) + + version, err = cli.GetVersion(ctx, d.config.BucketName, d.config.VersionFingerprint) + if err != nil { + return cty.NullVal(cty.EmptyObject), fmt.Errorf( + "error retrieving version from HCP Packer Registry: %s", err, + ) + } + } else { + log.Printf( + "[INFO] Reading info from HCP Packer Registry (%s) "+ + "[project_id=%s, organization_id=%s, channel=%s]", + d.config.BucketName, cli.ProjectID, cli.OrganizationID, d.config.ChannelName, + ) + + var channel *hcpPackerModels.HashicorpCloudPacker20230101Channel + channel, err = cli.GetChannel(ctx, d.config.BucketName, d.config.ChannelName) + if err != nil { + return cty.NullVal(cty.EmptyObject), fmt.Errorf( + "error retrieving channel from HCP Packer Registry: %s", err.Error(), + ) + } + + if channel.Version == nil { + return cty.NullVal(cty.EmptyObject), fmt.Errorf( + "there is no version associated with the channel %s", d.config.ChannelName, + ) + } + channelID = channel.ID + version = channel.Version + } + + if *version.Status == hcpPackerModels.HashicorpCloudPacker20230101VersionStatusVERSIONREVOKED { + return cty.NullVal(cty.EmptyObject), fmt.Errorf( + "the version %s is revoked and can not be used on Packer builds", version.ID, + ) + } + + var output DatasourceOutput + + cloudAndRegions := map[string][]string{} + for _, build := range version.Builds { + if build.Platform != d.config.Platform { + continue + } + for _, artifact := range build.Artifacts { + cloudAndRegions[build.Platform] = append(cloudAndRegions[build.Platform], artifact.Region) + if artifact.Region == d.config.Region && filterBuildByComponentType(build, d.config.ComponentType) { + // This is the desired artifact. + output = DatasourceOutput{ + Platform: build.Platform, + ComponentType: build.ComponentType, + CreatedAt: artifact.CreatedAt.String(), + BuildID: build.ID, + VersionID: build.VersionID, + ChannelID: channelID, + PackerRunUUID: build.PackerRunUUID, + ExternalIdentifier: artifact.ExternalIdentifier, + Region: artifact.Region, + Labels: build.Labels, + } + return hcl2helper.HCL2ValueFromConfig(output, d.OutputSpec()), nil + } + } + } + + return cty.NullVal(cty.EmptyObject), fmt.Errorf( + "could not find a build result matching "+ + "[region=%q, platform=%q, component_type=%q]. Available: %v ", + d.config.Region, d.config.Platform, d.config.ComponentType, cloudAndRegions, + ) +} + +func filterBuildByComponentType(build *hcpPackerModels.HashicorpCloudPacker20230101Build, componentType string) bool { + // optional field is not specified, passthrough + if componentType == "" { + return true + } + // if specified, only the matched artifact metadata is returned by this effect + return build.ComponentType == componentType +} diff --git a/datasource/hcp-packer-artifact/data.hcl2spec.go b/datasource/hcp-packer-artifact/data.hcl2spec.go new file mode 100644 index 00000000000..5c34c556b5d --- /dev/null +++ b/datasource/hcp-packer-artifact/data.hcl2spec.go @@ -0,0 +1,98 @@ +// Code generated by "packer-sdc mapstructure-to-hcl2"; DO NOT EDIT. + +package hcp_packer_artifact + +import ( + "github.com/hashicorp/hcl/v2/hcldec" + "github.com/zclconf/go-cty/cty" +) + +// FlatConfig is an auto-generated flat version of Config. +// Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. +type FlatConfig struct { + PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` + PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` + PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` + PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` + PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` + PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` + PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` + PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` + BucketName *string `mapstructure:"bucket_name" required:"true" cty:"bucket_name" hcl:"bucket_name"` + ChannelName *string `mapstructure:"channel_name" required:"true" cty:"channel_name" hcl:"channel_name"` + VersionFingerprint *string `mapstructure:"version_fingerprint" required:"true" cty:"version_fingerprint" hcl:"version_fingerprint"` + Platform *string `mapstructure:"platform" required:"true" cty:"platform" hcl:"platform"` + Region *string `mapstructure:"region" required:"true" cty:"region" hcl:"region"` + ComponentType *string `mapstructure:"component_type" required:"false" cty:"component_type" hcl:"component_type"` +} + +// FlatMapstructure returns a new FlatConfig. +// FlatConfig is an auto-generated flat version of Config. +// Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. +func (*Config) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { + return new(FlatConfig) +} + +// HCL2Spec returns the hcl spec of a Config. +// This spec is used by HCL to read the fields of Config. +// The decoded values from this spec will then be applied to a FlatConfig. +func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { + s := map[string]hcldec.Spec{ + "packer_build_name": &hcldec.AttrSpec{Name: "packer_build_name", Type: cty.String, Required: false}, + "packer_builder_type": &hcldec.AttrSpec{Name: "packer_builder_type", Type: cty.String, Required: false}, + "packer_core_version": &hcldec.AttrSpec{Name: "packer_core_version", Type: cty.String, Required: false}, + "packer_debug": &hcldec.AttrSpec{Name: "packer_debug", Type: cty.Bool, Required: false}, + "packer_force": &hcldec.AttrSpec{Name: "packer_force", Type: cty.Bool, Required: false}, + "packer_on_error": &hcldec.AttrSpec{Name: "packer_on_error", Type: cty.String, Required: false}, + "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, + "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, + "bucket_name": &hcldec.AttrSpec{Name: "bucket_name", Type: cty.String, Required: false}, + "channel_name": &hcldec.AttrSpec{Name: "channel_name", Type: cty.String, Required: false}, + "version_fingerprint": &hcldec.AttrSpec{Name: "version_fingerprint", Type: cty.String, Required: false}, + "platform": &hcldec.AttrSpec{Name: "platform", Type: cty.String, Required: false}, + "region": &hcldec.AttrSpec{Name: "region", Type: cty.String, Required: false}, + "component_type": &hcldec.AttrSpec{Name: "component_type", Type: cty.String, Required: false}, + } + return s +} + +// FlatDatasourceOutput is an auto-generated flat version of DatasourceOutput. +// Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. +type FlatDatasourceOutput struct { + Platform *string `mapstructure:"platform" cty:"platform" hcl:"platform"` + ComponentType *string `mapstructure:"component_type" cty:"component_type" hcl:"component_type"` + CreatedAt *string `mapstructure:"created_at" cty:"created_at" hcl:"created_at"` + BuildID *string `mapstructure:"build_id" cty:"build_id" hcl:"build_id"` + VersionID *string `mapstructure:"version_id" cty:"version_id" hcl:"version_id"` + ChannelID *string `mapstructure:"channel_id" cty:"channel_id" hcl:"channel_id"` + PackerRunUUID *string `mapstructure:"packer_run_uuid" cty:"packer_run_uuid" hcl:"packer_run_uuid"` + ExternalIdentifier *string `mapstructure:"external_identifier" cty:"external_identifier" hcl:"external_identifier"` + Region *string `mapstructure:"region" cty:"region" hcl:"region"` + Labels map[string]string `mapstructure:"labels" cty:"labels" hcl:"labels"` +} + +// FlatMapstructure returns a new FlatDatasourceOutput. +// FlatDatasourceOutput is an auto-generated flat version of DatasourceOutput. +// Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. +func (*DatasourceOutput) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { + return new(FlatDatasourceOutput) +} + +// HCL2Spec returns the hcl spec of a DatasourceOutput. +// This spec is used by HCL to read the fields of DatasourceOutput. +// The decoded values from this spec will then be applied to a FlatDatasourceOutput. +func (*FlatDatasourceOutput) HCL2Spec() map[string]hcldec.Spec { + s := map[string]hcldec.Spec{ + "platform": &hcldec.AttrSpec{Name: "platform", Type: cty.String, Required: false}, + "component_type": &hcldec.AttrSpec{Name: "component_type", Type: cty.String, Required: false}, + "created_at": &hcldec.AttrSpec{Name: "created_at", Type: cty.String, Required: false}, + "build_id": &hcldec.AttrSpec{Name: "build_id", Type: cty.String, Required: false}, + "version_id": &hcldec.AttrSpec{Name: "version_id", Type: cty.String, Required: false}, + "channel_id": &hcldec.AttrSpec{Name: "channel_id", Type: cty.String, Required: false}, + "packer_run_uuid": &hcldec.AttrSpec{Name: "packer_run_uuid", Type: cty.String, Required: false}, + "external_identifier": &hcldec.AttrSpec{Name: "external_identifier", Type: cty.String, Required: false}, + "region": &hcldec.AttrSpec{Name: "region", Type: cty.String, Required: false}, + "labels": &hcldec.AttrSpec{Name: "labels", Type: cty.Map(cty.String), Required: false}, + } + return s +} diff --git a/datasource/hcp-packer-image/data.go b/datasource/hcp-packer-image/data.go index aba7a6d19bf..6b72366ea1d 100644 --- a/datasource/hcp-packer-image/data.go +++ b/datasource/hcp-packer-image/data.go @@ -15,7 +15,7 @@ import ( "github.com/zclconf/go-cty/cty" "github.com/hashicorp/hcl/v2/hcldec" - "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/models" + hcpPackerDeprecatedModels "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/models" "github.com/hashicorp/packer-plugin-sdk/common" "github.com/hashicorp/packer-plugin-sdk/hcl2helper" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" @@ -36,9 +36,9 @@ type Config struct { // Mutually exclusive with `iteration_id`. // If using several images from a single iteration, you may prefer // sourcing an iteration first, and referencing it for subsequent uses, - // as every `hcp_packer_image` with the channel set will generate a + // as every `hcp-packer-image` with the channel set will generate a // potentially billable HCP Packer request, but if several - // `hcp_packer_image`s use a shared `hcp_packer_iteration` that will + // `hcp-packer-image`s use a shared `hcp-packer-iteration` that will // only generate one potentially billable request. Channel string `mapstructure:"channel" required:"true"` // The ID of the iteration to use when retrieving your image @@ -101,8 +101,8 @@ func (d *Datasource) Configure(raws ...interface{}) error { return nil } -// DatasourceOutput Information from []*models.HashicorpCloudPackerImage with some information -// from the parent []*models.HashicorpCloudPackerBuild included where it seemed +// DatasourceOutput Information from []*hcpPackerDeprecatedModels.HashicorpCloudPackerImage with some information +// from the parent []*hcpPackerDeprecatedModels.HashicorpCloudPackerBuild included where it seemed // like it might be relevant. Need to copy so we can generate type DatasourceOutput struct { // The name of the cloud provider that the image exists in. For example, @@ -140,14 +140,16 @@ func (d *Datasource) OutputSpec() hcldec.ObjectSpec { } func (d *Datasource) Execute() (cty.Value, error) { + log.Printf("[WARN] Deprecation: `hcp-packer-image` datasource has been deprecated. " + + "Please use `hcp-packer-artifact` datasource instead.") ctx := context.TODO() - cli, err := hcpapi.NewClient() + cli, err := hcpapi.NewDeprecatedClient() if err != nil { return cty.NullVal(cty.EmptyObject), err } - var iteration *models.HashicorpCloudPackerIteration + var iteration *hcpPackerDeprecatedModels.HashicorpCloudPackerIteration var channelID string if d.config.IterationID != "" { log.Printf("[INFO] Reading info from HCP Packer registry (%s) [project_id=%s, organization_id=%s, iteration_id=%s]", @@ -219,7 +221,7 @@ func (d *Datasource) Execute() (cty.Value, error) { d.config.Region, d.config.CloudProvider, d.config.ComponentType, cloudAndRegions) } -func filterBuildByComponentType(build *models.HashicorpCloudPackerBuild, componentType string) bool { +func filterBuildByComponentType(build *hcpPackerDeprecatedModels.HashicorpCloudPackerBuild, componentType string) bool { // optional field is not specified, passthrough if componentType == "" { return true diff --git a/datasource/hcp-packer-iteration/data.go b/datasource/hcp-packer-iteration/data.go index ff0bbd46f34..abe92722cfb 100644 --- a/datasource/hcp-packer-iteration/data.go +++ b/datasource/hcp-packer-iteration/data.go @@ -100,9 +100,11 @@ func (d *Datasource) OutputSpec() hcldec.ObjectSpec { } func (d *Datasource) Execute() (cty.Value, error) { + log.Printf("[WARN] Deprecation: `hcp-packer-iteration` datasource has been deprecated. " + + "Please use `hcp-packer-version` datasource instead.") ctx := context.TODO() - cli, err := hcpapi.NewClient() + cli, err := hcpapi.NewDeprecatedClient() if err != nil { return cty.NullVal(cty.EmptyObject), err } diff --git a/datasource/hcp-packer-iteration/data_acc_test.go b/datasource/hcp-packer-iteration/data_acc_test.go index 82e3b78e5f7..fbb7176768d 100644 --- a/datasource/hcp-packer-iteration/data_acc_test.go +++ b/datasource/hcp-packer-iteration/data_acc_test.go @@ -8,6 +8,7 @@ import ( "fmt" "os" "os/exec" + "path/filepath" "testing" "github.com/hashicorp/packer-plugin-sdk/acctest" @@ -17,27 +18,42 @@ import ( //go:embed test-fixtures/template.pkr.hcl var testDatasourceBasic string +//go:embed test-fixtures/hcp-setup-build.pkr.hcl +var testHCPBuild string + // Acceptance tests for data sources. // -// To be successful, the HCP project you're providing credentials for must -// contain a bucket named "hardened-ubuntu-16-04", with a channel named -// "packer-acc-test". It must contain a build that references an image in AWS -// region "us-east-1". Your HCP credentials must be provided through your -// runtime environment because the template this test uses does not set them. -// -// TODO: update this acceptance to create and clean up the HCP resources this -// data source queries, to prevent plugin developers from having to have images -// as defined above. - +// Your HCP credentials must be provided through your runtime +// environment because the template this test uses does not set them. func TestAccDatasource_HCPPackerIteration(t *testing.T) { if os.Getenv(env.HCPClientID) == "" && os.Getenv(env.HCPClientSecret) == "" { t.Skipf(fmt.Sprintf("Acceptance tests skipped unless envs %q and %q are set", env.HCPClientID, env.HCPClientSecret)) return } - testCase := &acctest.PluginTestCase{ + tmpFile := filepath.Join(t.TempDir(), "hcp-target-file") + testSetup := acctest.PluginTestCase{ + Template: fmt.Sprintf(testHCPBuild, tmpFile), + Check: func(buildCommand *exec.Cmd, logfile string) error { + if buildCommand.ProcessState != nil { + if buildCommand.ProcessState.ExitCode() != 0 { + return fmt.Errorf("Bad exit code. Logfile: %s", logfile) + } + } + return nil + }, + } + acctest.TestPlugin(t, &testSetup) + + testCase := acctest.PluginTestCase{ Name: "hcp_packer_iteration_datasource_basic_test", - Template: testDatasourceBasic, + Template: fmt.Sprintf(testDatasourceBasic, filepath.Dir(tmpFile)), + Setup: func() error { + if _, err := os.Stat(tmpFile); os.IsNotExist(err) { + return err + } + return nil + }, // TODO have acc test write iteration id to a file and check it to make // sure it isn't empty. Check: func(buildCommand *exec.Cmd, logfile string) error { @@ -49,5 +65,5 @@ func TestAccDatasource_HCPPackerIteration(t *testing.T) { return nil }, } - acctest.TestPlugin(t, testCase) + acctest.TestPlugin(t, &testCase) } diff --git a/datasource/hcp-packer-iteration/test-fixtures/hcp-setup-build.pkr.hcl b/datasource/hcp-packer-iteration/test-fixtures/hcp-setup-build.pkr.hcl new file mode 100644 index 00000000000..f9b203496fb --- /dev/null +++ b/datasource/hcp-packer-iteration/test-fixtures/hcp-setup-build.pkr.hcl @@ -0,0 +1,16 @@ +variable "target" { + type = string + default = %q +} + +source "file" "test" { + content = "Lorem ipsum dolor sit amet" + target = var.target +} + +build { + hcp_packer_registry { + bucket_name = "simple-deprecated" + } + sources = ["source.file.test"] +} diff --git a/datasource/hcp-packer-iteration/test-fixtures/template.pkr.hcl b/datasource/hcp-packer-iteration/test-fixtures/template.pkr.hcl index 52bac83ee7b..931fb023168 100644 --- a/datasource/hcp-packer-iteration/test-fixtures/template.pkr.hcl +++ b/datasource/hcp-packer-iteration/test-fixtures/template.pkr.hcl @@ -3,20 +3,20 @@ source "null" "example" { } data "hcp-packer-iteration" "hardened-source" { - bucket_name = "hardened-ubuntu-16-04" - channel = "packer-acc-test" + bucket_name = "simple-deprecated" + channel = "latest" } -data "hcp-packer-image" "aws" { - bucket_name = "hardened-ubuntu-16-04" +data "hcp-packer-image" "file" { + bucket_name = "simple-deprecated" iteration_id = "${data.hcp-packer-iteration.hardened-source.id}" - cloud_provider = "aws" - region = "us-east-1" + cloud_provider = "packer.file" + region = %q } locals { foo = "${data.hcp-packer-iteration.hardened-source.id}" - bar = "${data.hcp-packer-image.aws.id}" + bar = "${data.hcp-packer-image.file.id}" } build { diff --git a/datasource/hcp-packer-version/data.go b/datasource/hcp-packer-version/data.go new file mode 100644 index 00000000000..a5dcf753f6c --- /dev/null +++ b/datasource/hcp-packer-version/data.go @@ -0,0 +1,149 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: BUSL-1.1 + +//go:generate packer-sdc struct-markdown +//go:generate packer-sdc mapstructure-to-hcl2 -type DatasourceOutput,Config +package hcp_packer_version + +import ( + "context" + "fmt" + "log" + + hcpPackerModels "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/models" + "github.com/zclconf/go-cty/cty" + + "github.com/hashicorp/hcl/v2/hcldec" + "github.com/hashicorp/packer-plugin-sdk/common" + "github.com/hashicorp/packer-plugin-sdk/hcl2helper" + packersdk "github.com/hashicorp/packer-plugin-sdk/packer" + "github.com/hashicorp/packer-plugin-sdk/template/config" + hcpapi "github.com/hashicorp/packer/internal/hcp/api" +) + +type Datasource struct { + config Config +} + +type Config struct { + common.PackerConfig `mapstructure:",squash"` + // The bucket name in the HCP Packer Registry. + BucketName string `mapstructure:"bucket_name" required:"true"` + // The channel name in the given bucket to use for retrieving the version. + ChannelName string `mapstructure:"channel_name" required:"true"` +} + +func (d *Datasource) ConfigSpec() hcldec.ObjectSpec { + return d.config.FlatMapstructure().HCL2Spec() +} + +func (d *Datasource) Configure(raws ...interface{}) error { + err := config.Decode(&d.config, nil, raws...) + if err != nil { + return err + } + + var errs *packersdk.MultiError + + if d.config.BucketName == "" { + errs = packersdk.MultiErrorAppend(errs, fmt.Errorf("the `bucket_name` must be specified")) + } + if d.config.ChannelName == "" { + errs = packersdk.MultiErrorAppend(errs, fmt.Errorf("the `channel_name` must be specified")) + } + + if errs != nil && len(errs.Errors) > 0 { + return errs + } + return nil +} + +// DatasourceOutput is essentially a copy of []*models.HashicorpCloudPacker20230101Version, but without +// the build and ancestry details +type DatasourceOutput struct { + // Name of the author who created this version. + AuthorID string `mapstructure:"author_id"` + + // The name of the bucket that this version is associated with. + BucketName string `mapstructure:"bucket_name"` + + // Current state of the version. + Status string `mapstructure:"status"` + + // The date the version was created. + CreatedAt string `mapstructure:"created_at"` + + // The fingerprint of the version; this is a unique identifier set by the Packer build + // that created this version. + Fingerprint string `mapstructure:"fingerprint"` + + // The version ID. This is a ULID, which is a unique identifier similar + // to a UUID. It is created by the HCP Packer Registry when a version is + // first created, and is unique to this version. + ID string `mapstructure:"id"` + + // The version name is created by the HCP Packer Registry once a version is + // "complete". Incomplete or failed versions currently default to having a name "v0". + Name string `mapstructure:"name"` + + // The date when this version was last updated. + UpdatedAt string `mapstructure:"updated_at"` + + // The ID of the channel used to query this version. + ChannelID string `mapstructure:"channel_id"` +} + +func (d *Datasource) OutputSpec() hcldec.ObjectSpec { + return (&DatasourceOutput{}).FlatMapstructure().HCL2Spec() +} + +func (d *Datasource) Execute() (cty.Value, error) { + ctx := context.TODO() + + cli, err := hcpapi.NewClient() + if err != nil { + return cty.NullVal(cty.EmptyObject), err + } + log.Printf( + "[INFO] Reading HCP Packer Version info from HCP Packer Registry (%s) "+ + "[project_id=%s, organization_id=%s, channel=%s]", + d.config.BucketName, cli.ProjectID, cli.OrganizationID, d.config.ChannelName, + ) + + channel, err := cli.GetChannel(ctx, d.config.BucketName, d.config.ChannelName) + if err != nil { + return cty.NullVal(cty.EmptyObject), fmt.Errorf( + "error retrieving HCP Packer Version from HCP Packer Registry: %s", + err.Error(), + ) + } + if channel.Version == nil { + return cty.NullVal(cty.EmptyObject), fmt.Errorf( + "there is no HCP Packer Version associated with the channel %s", + d.config.ChannelName, + ) + } + + version := channel.Version + + if *version.Status == hcpPackerModels.HashicorpCloudPacker20230101VersionStatusVERSIONREVOKED { + return cty.NullVal(cty.EmptyObject), fmt.Errorf( + "the HCP Packer Version associated with the channel %s is revoked and can not be used on Packer builds", + d.config.ChannelName, + ) + } + + output := DatasourceOutput{ + AuthorID: version.AuthorID, + BucketName: version.BucketName, + Status: string(*version.Status), + CreatedAt: version.CreatedAt.String(), + Fingerprint: version.Fingerprint, + ID: version.ID, + Name: version.Name, + UpdatedAt: version.UpdatedAt.String(), + ChannelID: channel.ID, + } + + return hcl2helper.HCL2ValueFromConfig(output, d.OutputSpec()), nil +} diff --git a/datasource/hcp-packer-version/data.hcl2spec.go b/datasource/hcp-packer-version/data.hcl2spec.go new file mode 100644 index 00000000000..20e8e6a1ec7 --- /dev/null +++ b/datasource/hcp-packer-version/data.hcl2spec.go @@ -0,0 +1,88 @@ +// Code generated by "packer-sdc mapstructure-to-hcl2"; DO NOT EDIT. + +package hcp_packer_version + +import ( + "github.com/hashicorp/hcl/v2/hcldec" + "github.com/zclconf/go-cty/cty" +) + +// FlatConfig is an auto-generated flat version of Config. +// Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. +type FlatConfig struct { + PackerBuildName *string `mapstructure:"packer_build_name" cty:"packer_build_name" hcl:"packer_build_name"` + PackerBuilderType *string `mapstructure:"packer_builder_type" cty:"packer_builder_type" hcl:"packer_builder_type"` + PackerCoreVersion *string `mapstructure:"packer_core_version" cty:"packer_core_version" hcl:"packer_core_version"` + PackerDebug *bool `mapstructure:"packer_debug" cty:"packer_debug" hcl:"packer_debug"` + PackerForce *bool `mapstructure:"packer_force" cty:"packer_force" hcl:"packer_force"` + PackerOnError *string `mapstructure:"packer_on_error" cty:"packer_on_error" hcl:"packer_on_error"` + PackerUserVars map[string]string `mapstructure:"packer_user_variables" cty:"packer_user_variables" hcl:"packer_user_variables"` + PackerSensitiveVars []string `mapstructure:"packer_sensitive_variables" cty:"packer_sensitive_variables" hcl:"packer_sensitive_variables"` + BucketName *string `mapstructure:"bucket_name" required:"true" cty:"bucket_name" hcl:"bucket_name"` + ChannelName *string `mapstructure:"channel_name" required:"true" cty:"channel_name" hcl:"channel_name"` +} + +// FlatMapstructure returns a new FlatConfig. +// FlatConfig is an auto-generated flat version of Config. +// Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. +func (*Config) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { + return new(FlatConfig) +} + +// HCL2Spec returns the hcl spec of a Config. +// This spec is used by HCL to read the fields of Config. +// The decoded values from this spec will then be applied to a FlatConfig. +func (*FlatConfig) HCL2Spec() map[string]hcldec.Spec { + s := map[string]hcldec.Spec{ + "packer_build_name": &hcldec.AttrSpec{Name: "packer_build_name", Type: cty.String, Required: false}, + "packer_builder_type": &hcldec.AttrSpec{Name: "packer_builder_type", Type: cty.String, Required: false}, + "packer_core_version": &hcldec.AttrSpec{Name: "packer_core_version", Type: cty.String, Required: false}, + "packer_debug": &hcldec.AttrSpec{Name: "packer_debug", Type: cty.Bool, Required: false}, + "packer_force": &hcldec.AttrSpec{Name: "packer_force", Type: cty.Bool, Required: false}, + "packer_on_error": &hcldec.AttrSpec{Name: "packer_on_error", Type: cty.String, Required: false}, + "packer_user_variables": &hcldec.AttrSpec{Name: "packer_user_variables", Type: cty.Map(cty.String), Required: false}, + "packer_sensitive_variables": &hcldec.AttrSpec{Name: "packer_sensitive_variables", Type: cty.List(cty.String), Required: false}, + "bucket_name": &hcldec.AttrSpec{Name: "bucket_name", Type: cty.String, Required: false}, + "channel_name": &hcldec.AttrSpec{Name: "channel_name", Type: cty.String, Required: false}, + } + return s +} + +// FlatDatasourceOutput is an auto-generated flat version of DatasourceOutput. +// Where the contents of a field with a `mapstructure:,squash` tag are bubbled up. +type FlatDatasourceOutput struct { + AuthorID *string `mapstructure:"author_id" cty:"author_id" hcl:"author_id"` + BucketName *string `mapstructure:"bucket_name" cty:"bucket_name" hcl:"bucket_name"` + Status *string `mapstructure:"status" cty:"status" hcl:"status"` + CreatedAt *string `mapstructure:"created_at" cty:"created_at" hcl:"created_at"` + Fingerprint *string `mapstructure:"fingerprint" cty:"fingerprint" hcl:"fingerprint"` + ID *string `mapstructure:"id" cty:"id" hcl:"id"` + Name *string `mapstructure:"name" cty:"name" hcl:"name"` + UpdatedAt *string `mapstructure:"updated_at" cty:"updated_at" hcl:"updated_at"` + ChannelID *string `mapstructure:"channel_id" cty:"channel_id" hcl:"channel_id"` +} + +// FlatMapstructure returns a new FlatDatasourceOutput. +// FlatDatasourceOutput is an auto-generated flat version of DatasourceOutput. +// Where the contents a fields with a `mapstructure:,squash` tag are bubbled up. +func (*DatasourceOutput) FlatMapstructure() interface{ HCL2Spec() map[string]hcldec.Spec } { + return new(FlatDatasourceOutput) +} + +// HCL2Spec returns the hcl spec of a DatasourceOutput. +// This spec is used by HCL to read the fields of DatasourceOutput. +// The decoded values from this spec will then be applied to a FlatDatasourceOutput. +func (*FlatDatasourceOutput) HCL2Spec() map[string]hcldec.Spec { + s := map[string]hcldec.Spec{ + "author_id": &hcldec.AttrSpec{Name: "author_id", Type: cty.String, Required: false}, + "bucket_name": &hcldec.AttrSpec{Name: "bucket_name", Type: cty.String, Required: false}, + "status": &hcldec.AttrSpec{Name: "status", Type: cty.String, Required: false}, + "created_at": &hcldec.AttrSpec{Name: "created_at", Type: cty.String, Required: false}, + "fingerprint": &hcldec.AttrSpec{Name: "fingerprint", Type: cty.String, Required: false}, + "id": &hcldec.AttrSpec{Name: "id", Type: cty.String, Required: false}, + "name": &hcldec.AttrSpec{Name: "name", Type: cty.String, Required: false}, + "updated_at": &hcldec.AttrSpec{Name: "updated_at", Type: cty.String, Required: false}, + "channel_id": &hcldec.AttrSpec{Name: "channel_id", Type: cty.String, Required: false}, + } + return s +} diff --git a/datasource/hcp-packer-version/data_acc_test.go b/datasource/hcp-packer-version/data_acc_test.go new file mode 100644 index 00000000000..e1b54240279 --- /dev/null +++ b/datasource/hcp-packer-version/data_acc_test.go @@ -0,0 +1,69 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: BUSL-1.1 + +package hcp_packer_version + +import ( + _ "embed" + "fmt" + "os" + "os/exec" + "path/filepath" + "testing" + + "github.com/hashicorp/packer-plugin-sdk/acctest" + "github.com/hashicorp/packer/internal/hcp/env" +) + +//go:embed test-fixtures/template.pkr.hcl +var testDatasourceBasic string + +//go:embed test-fixtures/hcp-setup-build.pkr.hcl +var testHCPBuild string + +// Acceptance tests for data sources. +// +// Your HCP credentials must be provided through your runtime +// environment because the template this test uses does not set them. +func TestAccDatasource_HCPPackerVersion(t *testing.T) { + if os.Getenv(env.HCPClientID) == "" && os.Getenv(env.HCPClientSecret) == "" { + t.Skipf(fmt.Sprintf("Acceptance tests skipped unless envs %q and %q are set", env.HCPClientID, env.HCPClientSecret)) + return + } + + tmpFile := filepath.Join(t.TempDir(), "hcp-target-file") + testSetup := acctest.PluginTestCase{ + Template: fmt.Sprintf(testHCPBuild, tmpFile), + Check: func(buildCommand *exec.Cmd, logfile string) error { + if buildCommand.ProcessState != nil { + if buildCommand.ProcessState.ExitCode() != 0 { + return fmt.Errorf("Bad exit code. Logfile: %s", logfile) + } + } + return nil + }, + } + acctest.TestPlugin(t, &testSetup) + + testCase := acctest.PluginTestCase{ + Name: "hcp_packer_version_datasource_basic_test", + Template: fmt.Sprintf(testDatasourceBasic, filepath.Dir(tmpFile)), + Setup: func() error { + if _, err := os.Stat(tmpFile); os.IsNotExist(err) { + return err + } + return nil + }, + // TODO have acc test write version id to a file and check it to make + // sure it isn't empty. + Check: func(buildCommand *exec.Cmd, logfile string) error { + if buildCommand.ProcessState != nil { + if buildCommand.ProcessState.ExitCode() != 0 { + return fmt.Errorf("Bad exit code. Logfile: %s", logfile) + } + } + return nil + }, + } + acctest.TestPlugin(t, &testCase) +} diff --git a/datasource/hcp-packer-version/test-fixtures/hcp-setup-build.pkr.hcl b/datasource/hcp-packer-version/test-fixtures/hcp-setup-build.pkr.hcl new file mode 100644 index 00000000000..6f4f6cbfbf7 --- /dev/null +++ b/datasource/hcp-packer-version/test-fixtures/hcp-setup-build.pkr.hcl @@ -0,0 +1,16 @@ +variable "target" { + type = string + default = %q +} + +source "file" "test" { + content = "Lorem ipsum dolor sit amet" + target = var.target +} + +build { + hcp_packer_registry { + bucket_name = "simple" + } + sources = ["source.file.test"] +} diff --git a/datasource/hcp-packer-version/test-fixtures/template.pkr.hcl b/datasource/hcp-packer-version/test-fixtures/template.pkr.hcl new file mode 100644 index 00000000000..099679b2410 --- /dev/null +++ b/datasource/hcp-packer-version/test-fixtures/template.pkr.hcl @@ -0,0 +1,33 @@ +source "null" "example" { + communicator = "none" +} + +data "hcp-packer-version" "hardened-source" { + bucket_name = "simple" + channel_name = "latest" +} + +data "hcp-packer-artifact" "file" { + bucket_name = "simple" + version_fingerprint = "${data.hcp-packer-version.hardened-source.fingerprint}" + platform = "packer.file" + region = %q +} + +locals { + foo = "${data.hcp-packer-version.hardened-source.id}" + bar = "${data.hcp-packer-artifact.file.external_identifier}" +} + +build { + name = "mybuild" + sources = [ + "source.null.example" + ] + provisioner "shell-local" { + inline = [ + "echo data is ${local.foo}", + "echo data is ${local.bar}" + ] + } +} diff --git a/go.mod b/go.mod index ff209b6cb7f..fb898a3d03a 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/hashicorp/go-uuid v1.0.3 github.com/hashicorp/go-version v1.6.0 github.com/hashicorp/hcl/v2 v2.19.1 - github.com/hashicorp/hcp-sdk-go v0.81.0 + github.com/hashicorp/hcp-sdk-go v0.82.0 github.com/hashicorp/packer-plugin-amazon v1.2.1 github.com/hashicorp/packer-plugin-sdk v0.5.2 github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 @@ -187,7 +187,6 @@ require ( google.golang.org/protobuf v1.31.0 // indirect gopkg.in/cheggaaa/pb.v1 v1.0.28 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index b0ad567bd92..bdecb380cef 100644 --- a/go.sum +++ b/go.sum @@ -299,8 +299,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= -github.com/hashicorp/hcp-sdk-go v0.81.0 h1:7p/kO7ysGmn0mk7ssAjUvHQROQm3mXoHoxcBnRFdQls= -github.com/hashicorp/hcp-sdk-go v0.81.0/go.mod h1:vQ4fzdL1AmhIAbCw+4zmFe5Hbpajj3NvRWkJoVuxmAk= +github.com/hashicorp/hcp-sdk-go v0.82.0 h1:VdVTVwyqkuDJ3LGvSj4ldpB4aH1HD84seQYxYy0LcSc= +github.com/hashicorp/hcp-sdk-go v0.82.0/go.mod h1:vQ4fzdL1AmhIAbCw+4zmFe5Hbpajj3NvRWkJoVuxmAk= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR/prTM= @@ -759,9 +759,8 @@ gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internal/hcp/api/client.go b/internal/hcp/api/client.go index 97a749a33bf..78f8ee37ce1 100644 --- a/internal/hcp/api/client.go +++ b/internal/hcp/api/client.go @@ -11,7 +11,7 @@ import ( "os" "time" - packerSvc "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/client/packer_service" + packerSvc "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/client/packer_service" organizationSvc "github.com/hashicorp/hcp-sdk-go/clients/cloud-resource-manager/stable/2019-12-10/client/organization_service" projectSvc "github.com/hashicorp/hcp-sdk-go/clients/cloud-resource-manager/stable/2019-12-10/client/project_service" rmmodels "github.com/hashicorp/hcp-sdk-go/clients/cloud-resource-manager/stable/2019-12-10/models" @@ -183,18 +183,18 @@ func getOldestProject(projects []*rmmodels.HashicorpCloudResourcemanagerProject) // ValidateRegistryForProject validates that there is an active registry associated to the configured organization and project ids. // A successful validation will result in a nil response. All other response represent an invalid registry error request or a registry not found error. -func (client *Client) ValidateRegistryForProject() error { +func (c *Client) ValidateRegistryForProject() error { params := packerSvc.NewPackerServiceGetRegistryParams() - params.LocationOrganizationID = client.OrganizationID - params.LocationProjectID = client.ProjectID + params.LocationOrganizationID = c.OrganizationID + params.LocationProjectID = c.ProjectID - resp, err := client.Packer.PackerServiceGetRegistry(params, nil) + resp, err := c.Packer.PackerServiceGetRegistry(params, nil) if err != nil { return err } if resp.GetPayload().Registry == nil { - return fmt.Errorf("No active HCP Packer registry was found for the organization %q and project %q", client.OrganizationID, client.ProjectID) + return fmt.Errorf("No active HCP Packer registry was found for the organization %q and project %q", c.OrganizationID, c.ProjectID) } return nil diff --git a/internal/hcp/api/deprecated_client.go b/internal/hcp/api/deprecated_client.go new file mode 100644 index 00000000000..6f5c06b89d6 --- /dev/null +++ b/internal/hcp/api/deprecated_client.go @@ -0,0 +1,55 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: BUSL-1.1 + +// Package api provides access to the HCP Packer Registry API. +package api + +import ( + "fmt" + + packerSvc "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/client/packer_service" + organizationSvc "github.com/hashicorp/hcp-sdk-go/clients/cloud-resource-manager/stable/2019-12-10/client/organization_service" + projectSvc "github.com/hashicorp/hcp-sdk-go/clients/cloud-resource-manager/stable/2019-12-10/client/project_service" + "github.com/hashicorp/hcp-sdk-go/httpclient" + "github.com/hashicorp/packer/version" +) + +// DeprecatedClient is an HCP client capable of making requests on behalf of a service principal +type DeprecatedClient struct { + Packer packerSvc.ClientService + Organization organizationSvc.ClientService + Project projectSvc.ClientService + OrganizationID string + ProjectID string +} + +// NewDeprecatedClient returns an authenticated client to a HCP Packer Registry. +// Client authentication requires the following environment variables be set HCP_CLIENT_ID and HCP_CLIENT_SECRET. +// Upon error a HCPClientError will be returned. +func NewDeprecatedClient() (*DeprecatedClient, error) { + // Use NewClient to validate HCP configuration provided by user. + tempClient, err := NewClient() + if err != nil { + return nil, err + } + + hcpClientCfg := httpclient.Config{ + SourceChannel: fmt.Sprintf("packer/%s", version.PackerVersion.FormattedVersion()), + } + cl, err := httpclient.New(hcpClientCfg) + if err != nil { + return nil, &ClientError{ + StatusCode: InvalidClientConfig, + Err: err, + } + } + + client := DeprecatedClient{ + Packer: packerSvc.New(cl, nil), + Organization: organizationSvc.New(cl, nil), + Project: projectSvc.New(cl, nil), + OrganizationID: tempClient.OrganizationID, + ProjectID: tempClient.ProjectID, + } + return &client, nil +} diff --git a/internal/hcp/api/deprecated_service.go b/internal/hcp/api/deprecated_service.go new file mode 100644 index 00000000000..9fa88d5dd36 --- /dev/null +++ b/internal/hcp/api/deprecated_service.go @@ -0,0 +1,79 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: BUSL-1.1 + +package api + +import ( + "context" + "fmt" + + hcpPackerDeprecatedAPI "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/client/packer_service" + hcpPackerDeprecatedModels "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/models" +) + +type GetIterationOption func(*hcpPackerDeprecatedAPI.PackerServiceGetIterationParams) + +var ( + GetIteration_byID = func(id string) GetIterationOption { + return func(params *hcpPackerDeprecatedAPI.PackerServiceGetIterationParams) { + params.IterationID = &id + } + } + GetIteration_byFingerprint = func(fingerprint string) GetIterationOption { + return func(params *hcpPackerDeprecatedAPI.PackerServiceGetIterationParams) { + params.Fingerprint = &fingerprint + } + } +) + +func (client *DeprecatedClient) GetIteration( + ctx context.Context, bucketSlug string, opts ...GetIterationOption, +) (*hcpPackerDeprecatedModels.HashicorpCloudPackerIteration, error) { + getItParams := hcpPackerDeprecatedAPI.NewPackerServiceGetIterationParams() + getItParams.LocationOrganizationID = client.OrganizationID + getItParams.LocationProjectID = client.ProjectID + getItParams.BucketSlug = bucketSlug + + for _, opt := range opts { + opt(getItParams) + } + + resp, err := client.Packer.PackerServiceGetIteration(getItParams, nil) + if err != nil { + return nil, err + } + + if resp.Payload.Iteration != nil { + return resp.Payload.Iteration, nil + } + + return nil, fmt.Errorf( + "something went wrong retrieving the iteration for bucket %s", bucketSlug, + ) +} + +// GetChannel loads the named channel that is associated to the bucket slug . If the +// channel does not exist in HCP Packer, GetChannel returns an error. +func (client *DeprecatedClient) GetChannel( + ctx context.Context, bucketSlug string, channelName string, +) (*hcpPackerDeprecatedModels.HashicorpCloudPackerChannel, error) { + params := hcpPackerDeprecatedAPI.NewPackerServiceGetChannelParamsWithContext(ctx) + params.LocationOrganizationID = client.OrganizationID + params.LocationProjectID = client.ProjectID + params.BucketSlug = bucketSlug + params.Slug = channelName + + resp, err := client.Packer.PackerServiceGetChannel(params, nil) + if err != nil { + return nil, err + } + + if resp.Payload.Channel == nil { + return nil, fmt.Errorf( + "there is no channel with the name %s associated with the bucket %s", + channelName, bucketSlug, + ) + } + + return resp.Payload.Channel, nil +} diff --git a/internal/hcp/api/mock_service.go b/internal/hcp/api/mock_service.go index ac01c94d002..9a513705052 100644 --- a/internal/hcp/api/mock_service.go +++ b/internal/hcp/api/mock_service.go @@ -9,8 +9,8 @@ import ( "strconv" "github.com/go-openapi/runtime" - packerSvc "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/client/packer_service" - "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/models" + hcpPackerService "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/client/packer_service" + hcpPackerModels "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/models" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) @@ -19,28 +19,28 @@ import ( // Upon calling a service method a boolean is set to true to indicate that a method has been called. // To skip the setting of these booleans set TrackCalledServiceMethods to false; defaults to true in NewMockPackerClientService(). type MockPackerClientService struct { - CreateBucketCalled, UpdateBucketCalled, BucketAlreadyExist bool - CreateIterationCalled, GetIterationCalled, IterationAlreadyExist, IterationCompleted bool - CreateBuildCalled, UpdateBuildCalled, ListBuildsCalled, BuildAlreadyDone bool - TrackCalledServiceMethods bool + CreateBucketCalled, UpdateBucketCalled, BucketAlreadyExist bool + CreateVersionCalled, GetVersionCalled, VersionAlreadyExist, VersionCompleted bool + CreateBuildCalled, UpdateBuildCalled, ListBuildsCalled, BuildAlreadyDone bool + TrackCalledServiceMethods bool // Mock Creates - CreateBucketResp *models.HashicorpCloudPackerCreateBucketResponse - CreateIterationResp *models.HashicorpCloudPackerCreateIterationResponse - CreateBuildResp *models.HashicorpCloudPackerCreateBuildResponse + CreateBucketResp *hcpPackerModels.HashicorpCloudPacker20230101CreateBucketResponse + CreateVersionResp *hcpPackerModels.HashicorpCloudPacker20230101CreateVersionResponse + CreateBuildResp *hcpPackerModels.HashicorpCloudPacker20230101CreateBuildResponse // Mock Gets - GetIterationResp *models.HashicorpCloudPackerGetIterationResponse + GetVersionResp *hcpPackerModels.HashicorpCloudPacker20230101GetVersionResponse ExistingBuilds []string ExistingBuildLabels map[string]string - packerSvc.ClientService + hcpPackerService.ClientService } // NewMockPackerClientService returns a basic mock of the Cloud Packer Service. // Upon calling a service method a boolean is set to true to indicate that a method has been called. -// To skip the setting of these booleans set TrackCalledServiceMethods to false. By default it is true. +// To skip the setting of these booleans set TrackCalledServiceMethods to false. By default, it is true. func NewMockPackerClientService() *MockPackerClientService { m := MockPackerClientService{ ExistingBuilds: make([]string, 0), @@ -51,205 +51,234 @@ func NewMockPackerClientService() *MockPackerClientService { return &m } -func (svc *MockPackerClientService) PackerServiceCreateBucket(params *packerSvc.PackerServiceCreateBucketParams, _ runtime.ClientAuthInfoWriter, opts ...packerSvc.ClientOption) (*packerSvc.PackerServiceCreateBucketOK, error) { +func (svc *MockPackerClientService) PackerServiceCreateBucket( + params *hcpPackerService.PackerServiceCreateBucketParams, _ runtime.ClientAuthInfoWriter, + opts ...hcpPackerService.ClientOption, +) (*hcpPackerService.PackerServiceCreateBucketOK, error) { if svc.BucketAlreadyExist { - return nil, status.Error(codes.AlreadyExists, fmt.Sprintf("Code:%d %s", codes.AlreadyExists, codes.AlreadyExists.String())) + return nil, status.Error( + codes.AlreadyExists, + fmt.Sprintf("Code:%d %s", codes.AlreadyExists, codes.AlreadyExists.String()), + ) } - if params.Body.BucketSlug == "" { - return nil, errors.New("No bucket slug was passed in") + if params.Body.Name == "" { + return nil, errors.New("no bucket name was passed in") } if svc.TrackCalledServiceMethods { svc.CreateBucketCalled = true } - payload := &models.HashicorpCloudPackerCreateBucketResponse{ - Bucket: &models.HashicorpCloudPackerBucket{ + payload := &hcpPackerModels.HashicorpCloudPacker20230101CreateBucketResponse{ + Bucket: &hcpPackerModels.HashicorpCloudPacker20230101Bucket{ ID: "bucket-id", }, } - payload.Bucket.Slug = params.Body.BucketSlug + payload.Bucket.Name = params.Body.Name - ok := &packerSvc.PackerServiceCreateBucketOK{ + ok := &hcpPackerService.PackerServiceCreateBucketOK{ Payload: payload, } return ok, nil } -func (svc *MockPackerClientService) PackerServiceUpdateBucket(params *packerSvc.PackerServiceUpdateBucketParams, _ runtime.ClientAuthInfoWriter, opts ...packerSvc.ClientOption) (*packerSvc.PackerServiceUpdateBucketOK, error) { +func (svc *MockPackerClientService) PackerServiceUpdateBucket( + params *hcpPackerService.PackerServiceUpdateBucketParams, _ runtime.ClientAuthInfoWriter, + opts ...hcpPackerService.ClientOption, +) (*hcpPackerService.PackerServiceUpdateBucketOK, error) { if svc.TrackCalledServiceMethods { svc.UpdateBucketCalled = true } - return packerSvc.NewPackerServiceUpdateBucketOK(), nil + return hcpPackerService.NewPackerServiceUpdateBucketOK(), nil } -func (svc *MockPackerClientService) PackerServiceCreateIteration(params *packerSvc.PackerServiceCreateIterationParams, _ runtime.ClientAuthInfoWriter, opts ...packerSvc.ClientOption) (*packerSvc.PackerServiceCreateIterationOK, error) { - if svc.IterationAlreadyExist { - return nil, status.Error(codes.AlreadyExists, fmt.Sprintf("Code:%d %s", codes.AlreadyExists, codes.AlreadyExists.String())) +func (svc *MockPackerClientService) PackerServiceCreateVersion( + params *hcpPackerService.PackerServiceCreateVersionParams, _ runtime.ClientAuthInfoWriter, + opts ...hcpPackerService.ClientOption, +) (*hcpPackerService.PackerServiceCreateVersionOK, + error) { + if svc.VersionAlreadyExist { + return nil, status.Error( + codes.AlreadyExists, fmt.Sprintf("Code:%d %s", codes.AlreadyExists, + codes.AlreadyExists.String()), + ) } if params.Body.Fingerprint == "" { - return nil, errors.New("No valid Fingerprint was passed in") + return nil, errors.New("no valid Fingerprint was passed in") } if svc.TrackCalledServiceMethods { - svc.CreateIterationCalled = true - } - payload := &models.HashicorpCloudPackerCreateIterationResponse{ - Iteration: &models.HashicorpCloudPackerIteration{ - ID: "iteration-id", + svc.CreateVersionCalled = true + } + payload := &hcpPackerModels.HashicorpCloudPacker20230101CreateVersionResponse{ + Version: &hcpPackerModels.HashicorpCloudPacker20230101Version{ + BucketName: params.BucketName, + Fingerprint: params.Body.Fingerprint, + ID: "version-id", + Name: "v0", + Status: hcpPackerModels.HashicorpCloudPacker20230101VersionStatusVERSIONRUNNING.Pointer(), TemplateType: params.Body.TemplateType, }, } - payload.Iteration.BucketSlug = params.BucketSlug - payload.Iteration.Fingerprint = params.Body.Fingerprint - - ok := &packerSvc.PackerServiceCreateIterationOK{ + ok := &hcpPackerService.PackerServiceCreateVersionOK{ Payload: payload, } return ok, nil } -func (svc *MockPackerClientService) PackerServiceGetIteration(params *packerSvc.PackerServiceGetIterationParams, _ runtime.ClientAuthInfoWriter, opts ...packerSvc.ClientOption) (*packerSvc.PackerServiceGetIterationOK, error) { - if !svc.IterationAlreadyExist { +func (svc *MockPackerClientService) PackerServiceGetVersion( + params *hcpPackerService.PackerServiceGetVersionParams, _ runtime.ClientAuthInfoWriter, + opts ...hcpPackerService.ClientOption, +) (*hcpPackerService.PackerServiceGetVersionOK, error) { + if !svc.VersionAlreadyExist { return nil, status.Error(codes.AlreadyExists, fmt.Sprintf("Code:%d %s", codes.Aborted, codes.Aborted.String())) } - if params.BucketSlug == "" { - return nil, errors.New("No valid BucketSlug was passed in") + if params.BucketName == "" { + return nil, errors.New("no valid BucketName was passed in") } - if params.Fingerprint == nil { - return nil, errors.New("No valid Fingerprint was passed in") + if params.Fingerprint == "" { + return nil, errors.New("no valid Fingerprint was passed in") } if svc.TrackCalledServiceMethods { - svc.GetIterationCalled = true + svc.GetVersionCalled = true } - payload := &models.HashicorpCloudPackerGetIterationResponse{ - Iteration: &models.HashicorpCloudPackerIteration{ - ID: "iteration-id", - Builds: make([]*models.HashicorpCloudPackerBuild, 0), - TemplateType: models.HashicorpCloudPackerIterationTemplateTypeTEMPLATETYPEUNSET.Pointer(), + payload := &hcpPackerModels.HashicorpCloudPacker20230101GetVersionResponse{ + Version: &hcpPackerModels.HashicorpCloudPacker20230101Version{ + ID: "version-id", + Builds: make([]*hcpPackerModels.HashicorpCloudPacker20230101Build, 0), + TemplateType: hcpPackerModels.HashicorpCloudPacker20230101TemplateTypeTEMPLATETYPEUNSET.Pointer(), }, } - payload.Iteration.BucketSlug = params.BucketSlug - payload.Iteration.Fingerprint = *params.Fingerprint - ok := &packerSvc.PackerServiceGetIterationOK{ + payload.Version.BucketName = params.BucketName + payload.Version.Fingerprint = params.Fingerprint + ok := &hcpPackerService.PackerServiceGetVersionOK{ Payload: payload, } - if svc.IterationCompleted { - ok.Payload.Iteration.Complete = true - ok.Payload.Iteration.IncrementalVersion = 1 - ok.Payload.Iteration.Builds = append(ok.Payload.Iteration.Builds, &models.HashicorpCloudPackerBuild{ + if svc.VersionCompleted { + ok.Payload.Version.Name = "v1" + ok.Payload.Version.Builds = append(ok.Payload.Version.Builds, &hcpPackerModels.HashicorpCloudPacker20230101Build{ ID: "build-id", ComponentType: svc.ExistingBuilds[0], - Status: models.HashicorpCloudPackerBuildStatusDONE.Pointer(), - Images: []*models.HashicorpCloudPackerImage{ - {ImageID: "image-id", Region: "somewhere"}, + Status: hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDDONE.Pointer(), + Artifacts: []*hcpPackerModels.HashicorpCloudPacker20230101Artifact{ + {ExternalIdentifier: "image-id", Region: "somewhere"}, }, Labels: make(map[string]string), }) + } else { + ok.Payload.Version.Name = "v0" } return ok, nil } -func (svc *MockPackerClientService) PackerServiceCreateBuild(params *packerSvc.PackerServiceCreateBuildParams, _ runtime.ClientAuthInfoWriter, opts ...packerSvc.ClientOption) (*packerSvc.PackerServiceCreateBuildOK, error) { - if params.BucketSlug == "" { - return nil, errors.New("No valid BucketSlug was passed in") +func (svc *MockPackerClientService) PackerServiceCreateBuild( + params *hcpPackerService.PackerServiceCreateBuildParams, _ runtime.ClientAuthInfoWriter, + opts ...hcpPackerService.ClientOption, +) (*hcpPackerService.PackerServiceCreateBuildOK, error) { + if params.BucketName == "" { + return nil, errors.New("no valid BucketName was passed in") } - if params.Body.Fingerprint == "" { - return nil, errors.New("No valid Fingerprint was passed in") + if params.Fingerprint == "" { + return nil, errors.New("no valid Fingerprint was passed in") } - if params.Body.Build.ComponentType == "" { - return nil, errors.New("No build componentType was passed in") + if params.Body.ComponentType == "" { + return nil, errors.New("no build componentType was passed in") } if svc.TrackCalledServiceMethods { svc.CreateBuildCalled = true } - payload := &models.HashicorpCloudPackerCreateBuildResponse{ - Build: &models.HashicorpCloudPackerBuild{ + payload := &hcpPackerModels.HashicorpCloudPacker20230101CreateBuildResponse{ + Build: &hcpPackerModels.HashicorpCloudPacker20230101Build{ PackerRunUUID: "test-uuid", - Status: models.HashicorpCloudPackerBuildStatusUNSET.Pointer(), + Status: hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDUNSET.Pointer(), }, } - payload.Build.ComponentType = params.Body.Build.ComponentType - payload.Build.IterationID = params.IterationID + payload.Build.ComponentType = params.Body.ComponentType - ok := packerSvc.NewPackerServiceCreateBuildOK() + ok := hcpPackerService.NewPackerServiceCreateBuildOK() ok.Payload = payload return ok, nil } -func (svc *MockPackerClientService) PackerServiceUpdateBuild(params *packerSvc.PackerServiceUpdateBuildParams, _ runtime.ClientAuthInfoWriter, opts ...packerSvc.ClientOption) (*packerSvc.PackerServiceUpdateBuildOK, error) { +func (svc *MockPackerClientService) PackerServiceUpdateBuild( + params *hcpPackerService.PackerServiceUpdateBuildParams, _ runtime.ClientAuthInfoWriter, + opts ...hcpPackerService.ClientOption, +) (*hcpPackerService.PackerServiceUpdateBuildOK, error) { if params.BuildID == "" { - return nil, errors.New("No valid BuildID was passed in") + return nil, errors.New("no valid BuildID was passed in") } - if params.Body.Updates == nil { - return nil, errors.New("No valid Updates were passed in") + if params.Body == nil { + return nil, errors.New("no valid Updates were passed in") } - if params.Body.Updates.Status == nil || *params.Body.Updates.Status == "" { - return nil, errors.New("No build status was passed in") + if params.Body.Status == nil || *params.Body.Status == "" { + return nil, errors.New("no build status was passed in") } if svc.TrackCalledServiceMethods { svc.UpdateBuildCalled = true } - ok := packerSvc.NewPackerServiceUpdateBuildOK() - ok.Payload = &models.HashicorpCloudPackerUpdateBuildResponse{ - Build: &models.HashicorpCloudPackerBuild{ + ok := hcpPackerService.NewPackerServiceUpdateBuildOK() + ok.Payload = &hcpPackerModels.HashicorpCloudPacker20230101UpdateBuildResponse{ + Build: &hcpPackerModels.HashicorpCloudPacker20230101Build{ ID: params.BuildID, }, } return ok, nil } -func (svc *MockPackerClientService) PackerServiceListBuilds(params *packerSvc.PackerServiceListBuildsParams, _ runtime.ClientAuthInfoWriter, opts ...packerSvc.ClientOption) (*packerSvc.PackerServiceListBuildsOK, error) { +func (svc *MockPackerClientService) PackerServiceListBuilds( + params *hcpPackerService.PackerServiceListBuildsParams, _ runtime.ClientAuthInfoWriter, + opts ...hcpPackerService.ClientOption, +) (*hcpPackerService.PackerServiceListBuildsOK, error) { - status := models.HashicorpCloudPackerBuildStatusUNSET - images := make([]*models.HashicorpCloudPackerImage, 0) + status := hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDUNSET + artifacts := make([]*hcpPackerModels.HashicorpCloudPacker20230101Artifact, 0) labels := make(map[string]string) if svc.BuildAlreadyDone { - status = models.HashicorpCloudPackerBuildStatusDONE - images = append(images, &models.HashicorpCloudPackerImage{ImageID: "image-id", Region: "somewhere"}) + status = hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDDONE + artifacts = append(artifacts, &hcpPackerModels.HashicorpCloudPacker20230101Artifact{ExternalIdentifier: "image-id", Region: "somewhere"}) } for k, v := range svc.ExistingBuildLabels { labels[k] = v } - builds := make([]*models.HashicorpCloudPackerBuild, 0, len(svc.ExistingBuilds)) + builds := make([]*hcpPackerModels.HashicorpCloudPacker20230101Build, 0, len(svc.ExistingBuilds)) for i, name := range svc.ExistingBuilds { - builds = append(builds, &models.HashicorpCloudPackerBuild{ + builds = append(builds, &hcpPackerModels.HashicorpCloudPacker20230101Build{ ID: name + "--" + strconv.Itoa(i), ComponentType: name, - CloudProvider: "mockProvider", - Status: status.Pointer(), - Images: images, + Platform: "mockPlatform", + Status: &status, + Artifacts: artifacts, Labels: labels, }) } - ok := packerSvc.NewPackerServiceListBuildsOK() - ok.Payload = &models.HashicorpCloudPackerListBuildsResponse{ + ok := hcpPackerService.NewPackerServiceListBuildsOK() + ok.Payload = &hcpPackerModels.HashicorpCloudPacker20230101ListBuildsResponse{ Builds: builds, } diff --git a/internal/hcp/api/service.go b/internal/hcp/api/service.go deleted file mode 100644 index df56bdbd58c..00000000000 --- a/internal/hcp/api/service.go +++ /dev/null @@ -1,253 +0,0 @@ -// Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: BUSL-1.1 - -package api - -import ( - "context" - "errors" - "fmt" - - "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/client/packer_service" - "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/models" - "google.golang.org/grpc/codes" -) - -func (client *Client) CreateBucket( - ctx context.Context, - bucketSlug, - bucketDescription string, - bucketLabels map[string]string, -) (*packer_service.PackerServiceCreateBucketOK, error) { - - createBktParams := packer_service.NewPackerServiceCreateBucketParams() - createBktParams.LocationOrganizationID = client.OrganizationID - createBktParams.LocationProjectID = client.ProjectID - createBktParams.Body = packer_service.PackerServiceCreateBucketBody{ - BucketSlug: bucketSlug, - Description: bucketDescription, - Labels: bucketLabels, - } - - return client.Packer.PackerServiceCreateBucket(createBktParams, nil) -} - -func (client *Client) DeleteBucket( - ctx context.Context, - bucketSlug string, -) (*packer_service.PackerServiceDeleteBucketOK, error) { - - deleteBktParams := packer_service.NewPackerServiceDeleteBucketParamsWithContext(ctx) - deleteBktParams.LocationOrganizationID = client.OrganizationID - deleteBktParams.LocationProjectID = client.ProjectID - deleteBktParams.BucketSlug = bucketSlug - - return client.Packer.PackerServiceDeleteBucket(deleteBktParams, nil) -} - -// UpsertBucket tries to create a bucket on a HCP Packer Registry. If the bucket -// exists it will handle the error and update the bucket with the provided -// details. -func (client *Client) UpsertBucket( - ctx context.Context, - bucketSlug, - bucketDescription string, - bucketLabels map[string]string, -) error { - - // Create bucket if exist we continue as is, eventually we want to treat - // this like an upsert - _, err := client.CreateBucket(ctx, bucketSlug, bucketDescription, bucketLabels) - if err != nil && !CheckErrorCode(err, codes.AlreadyExists) { - return err - } - - if err == nil { - return nil - } - - params := packer_service.NewPackerServiceUpdateBucketParamsWithContext(ctx) - params.LocationOrganizationID = client.OrganizationID - params.LocationProjectID = client.ProjectID - params.BucketSlug = bucketSlug - params.Body = packer_service.PackerServiceUpdateBucketBody{ - Description: bucketDescription, - Labels: bucketLabels, - } - _, err = client.Packer.PackerServiceUpdateBucket(params, nil) - - return err -} - -func (client *Client) CreateIteration( - ctx context.Context, - bucketSlug, - fingerprint string, - templateType models.HashicorpCloudPackerIterationTemplateType, -) (*packer_service.PackerServiceCreateIterationOK, error) { - - params := packer_service.NewPackerServiceCreateIterationParamsWithContext(ctx) - params.LocationOrganizationID = client.OrganizationID - params.LocationProjectID = client.ProjectID - params.BucketSlug = bucketSlug - params.Body = packer_service.PackerServiceCreateIterationBody{ - Fingerprint: fingerprint, - TemplateType: templateType.Pointer(), - } - - return client.Packer.PackerServiceCreateIteration(params, nil) -} - -type GetIterationOption func(*packer_service.PackerServiceGetIterationParams) - -var ( - GetIteration_byID = func(id string) GetIterationOption { - return func(params *packer_service.PackerServiceGetIterationParams) { - params.IterationID = &id - } - } - GetIteration_byFingerprint = func(fingerprint string) GetIterationOption { - return func(params *packer_service.PackerServiceGetIterationParams) { - params.Fingerprint = &fingerprint - } - } -) - -func (client *Client) GetIteration(ctx context.Context, bucketSlug string, opts ...GetIterationOption) (*models.HashicorpCloudPackerIteration, error) { - getItParams := packer_service.NewPackerServiceGetIterationParams() - getItParams.LocationOrganizationID = client.OrganizationID - getItParams.LocationProjectID = client.ProjectID - getItParams.BucketSlug = bucketSlug - - for _, opt := range opts { - opt(getItParams) - } - - resp, err := client.Packer.PackerServiceGetIteration(getItParams, nil) - if err != nil { - return nil, err - } - - if resp.Payload.Iteration != nil { - return resp.Payload.Iteration, nil - } - - return nil, fmt.Errorf("something went wrong retrieving the iteration for bucket %s", bucketSlug) -} - -func (client *Client) CreateBuild( - ctx context.Context, - bucketSlug, - runUUID, - iterationID, - fingerprint, - componentType string, - status models.HashicorpCloudPackerBuildStatus, -) (*packer_service.PackerServiceCreateBuildOK, error) { - - params := packer_service.NewPackerServiceCreateBuildParamsWithContext(ctx) - - params.LocationOrganizationID = client.OrganizationID - params.LocationProjectID = client.ProjectID - params.BucketSlug = bucketSlug - params.IterationID = iterationID - params.Body = packer_service.PackerServiceCreateBuildBody{ - Fingerprint: fingerprint, - Build: &models.HashicorpCloudPackerBuildCreateBody{ - ComponentType: componentType, - PackerRunUUID: runUUID, - Status: status.Pointer(), - }, - } - - return client.Packer.PackerServiceCreateBuild(params, nil) -} - -// ListBuilds queries an Iteration on HCP Packer registry for all of it's -// associated builds. Currently all builds are returned regardless of status. -func (client *Client) ListBuilds( - ctx context.Context, - bucketSlug string, - iterationID string, -) ([]*models.HashicorpCloudPackerBuild, error) { - - params := packer_service.NewPackerServiceListBuildsParamsWithContext(ctx) - params.LocationOrganizationID = client.OrganizationID - params.LocationProjectID = client.ProjectID - params.BucketSlug = bucketSlug - params.IterationID = iterationID - - resp, err := client.Packer.PackerServiceListBuilds(params, nil) - if err != nil { - return []*models.HashicorpCloudPackerBuild{}, err - } - - return resp.Payload.Builds, nil -} - -// UpdateBuild updates a single iteration build entry with the incoming input -// data. -func (client *Client) UpdateBuild( - ctx context.Context, - buildID, - runUUID, - cloudProvider, - sourceImageID string, - sourceIterationID string, - sourceChannelID string, - labels map[string]string, - status models.HashicorpCloudPackerBuildStatus, - images []*models.HashicorpCloudPackerImageCreateBody, -) (string, error) { - - params := packer_service.NewPackerServiceUpdateBuildParamsWithContext(ctx) - params.BuildID = buildID - params.LocationOrganizationID = client.OrganizationID - params.LocationProjectID = client.ProjectID - - params.Body = packer_service.PackerServiceUpdateBuildBody{ - Updates: &models.HashicorpCloudPackerBuildUpdates{ - Images: images, - PackerRunUUID: runUUID, - Labels: labels, - Status: status.Pointer(), - CloudProvider: cloudProvider, - SourceImageID: sourceImageID, - SourceIterationID: sourceIterationID, - SourceChannelID: sourceChannelID, - }, - } - - resp, err := client.Packer.PackerServiceUpdateBuild(params, nil) - if err != nil { - return "", err - } - - if resp == nil { - return "", errors.New("Not sure why response is nil") - } - - return resp.Payload.Build.ID, nil -} - -// GetChannel loads the named channel that is associated to the bucket slug . If the -// channel does not exist in HCP Packer, GetChannel returns an error. -func (client *Client) GetChannel(ctx context.Context, bucketSlug string, channelName string) (*models.HashicorpCloudPackerChannel, error) { - params := packer_service.NewPackerServiceGetChannelParamsWithContext(ctx) - params.LocationOrganizationID = client.OrganizationID - params.LocationProjectID = client.ProjectID - params.BucketSlug = bucketSlug - params.Slug = channelName - - resp, err := client.Packer.PackerServiceGetChannel(params, nil) - if err != nil { - return nil, err - } - - if resp.Payload.Channel == nil { - return nil, fmt.Errorf("there is no channel with the name %s associated with the bucket %s", - channelName, bucketSlug) - } - - return resp.Payload.Channel, nil -} diff --git a/internal/hcp/api/service_bucket.go b/internal/hcp/api/service_bucket.go new file mode 100644 index 00000000000..bfdbe99f809 --- /dev/null +++ b/internal/hcp/api/service_bucket.go @@ -0,0 +1,66 @@ +package api + +import ( + "context" + + hcpPackerService "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/client/packer_service" + hcpPackerModels "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/models" + "google.golang.org/grpc/codes" +) + +func (c *Client) CreateBucket( + ctx context.Context, bucketName, bucketDescription string, bucketLabels map[string]string, +) (*hcpPackerService.PackerServiceCreateBucketOK, error) { + + createBktParams := hcpPackerService.NewPackerServiceCreateBucketParams() + createBktParams.LocationOrganizationID = c.OrganizationID + createBktParams.LocationProjectID = c.ProjectID + createBktParams.Body = &hcpPackerModels.HashicorpCloudPacker20230101CreateBucketBody{ + Name: bucketName, + Description: bucketDescription, + Labels: bucketLabels, + } + + return c.Packer.PackerServiceCreateBucket(createBktParams, nil) +} + +func (c *Client) DeleteBucket( + ctx context.Context, bucketName string, +) (*hcpPackerService.PackerServiceDeleteBucketOK, error) { + + deleteBktParams := hcpPackerService.NewPackerServiceDeleteBucketParamsWithContext(ctx) + deleteBktParams.LocationOrganizationID = c.OrganizationID + deleteBktParams.LocationProjectID = c.ProjectID + deleteBktParams.BucketName = bucketName + + return c.Packer.PackerServiceDeleteBucket(deleteBktParams, nil) +} + +// UpsertBucket tries to create a bucket on a HCP Packer Registry. If the bucket exists it will +// handle the error and update the bucket with the provided details. +func (c *Client) UpsertBucket( + ctx context.Context, bucketName, bucketDescription string, bucketLabels map[string]string, +) error { + + // Create bucket if exist we continue as is, eventually we want to treat this like an upsert. + _, err := c.CreateBucket(ctx, bucketName, bucketDescription, bucketLabels) + if err != nil && !CheckErrorCode(err, codes.AlreadyExists) { + return err + } + + if err == nil { + return nil + } + + params := hcpPackerService.NewPackerServiceUpdateBucketParamsWithContext(ctx) + params.LocationOrganizationID = c.OrganizationID + params.LocationProjectID = c.ProjectID + params.BucketName = bucketName + params.Body = &hcpPackerModels.HashicorpCloudPacker20230101UpdateBucketBody{ + Description: bucketDescription, + Labels: bucketLabels, + } + _, err = c.Packer.PackerServiceUpdateBucket(params, nil) + + return err +} diff --git a/internal/hcp/api/service_build.go b/internal/hcp/api/service_build.go new file mode 100644 index 00000000000..69ce13b2b34 --- /dev/null +++ b/internal/hcp/api/service_build.go @@ -0,0 +1,93 @@ +package api + +import ( + "context" + "fmt" + + hcpPackerAPI "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/client/packer_service" + hcpPackerModels "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/models" +) + +func (c *Client) CreateBuild( + ctx context.Context, bucketName, runUUID, fingerprint, componentType string, + buildStatus hcpPackerModels.HashicorpCloudPacker20230101BuildStatus, +) (*hcpPackerAPI.PackerServiceCreateBuildOK, error) { + + params := hcpPackerAPI.NewPackerServiceCreateBuildParamsWithContext(ctx) + + params.LocationOrganizationID = c.OrganizationID + params.LocationProjectID = c.ProjectID + params.BucketName = bucketName + params.Fingerprint = fingerprint + params.Body = &hcpPackerModels.HashicorpCloudPacker20230101CreateBuildBody{ + ComponentType: componentType, + PackerRunUUID: runUUID, + Status: &buildStatus, + } + + return c.Packer.PackerServiceCreateBuild(params, nil) +} + +// ListBuilds queries a Version on HCP Packer registry for all of it's associated builds. +// Currently, all builds are returned regardless of status. +func (c *Client) ListBuilds( + ctx context.Context, bucketName, fingerprint string, +) ([]*hcpPackerModels.HashicorpCloudPacker20230101Build, error) { + + params := hcpPackerAPI.NewPackerServiceListBuildsParamsWithContext(ctx) + params.LocationOrganizationID = c.OrganizationID + params.LocationProjectID = c.ProjectID + params.BucketName = bucketName + params.Fingerprint = fingerprint + + resp, err := c.Packer.PackerServiceListBuilds(params, nil) + if err != nil { + return []*hcpPackerModels.HashicorpCloudPacker20230101Build{}, err + } + + return resp.Payload.Builds, nil +} + +// UpdateBuild updates a single build in a version with the incoming input data. +func (c *Client) UpdateBuild( + ctx context.Context, + bucketName, fingerprint string, + buildID, runUUID, platform, sourceExternalIdentifier string, + parentVersionID string, + parentChannelID string, + buildLabels map[string]string, + buildStatus hcpPackerModels.HashicorpCloudPacker20230101BuildStatus, + artifacts []*hcpPackerModels.HashicorpCloudPacker20230101ArtifactCreateBody, +) (string, error) { + + params := hcpPackerAPI.NewPackerServiceUpdateBuildParamsWithContext(ctx) + params.BuildID = buildID + params.LocationOrganizationID = c.OrganizationID + params.LocationProjectID = c.ProjectID + params.BucketName = bucketName + params.Fingerprint = fingerprint + + params.Body = &hcpPackerModels.HashicorpCloudPacker20230101UpdateBuildBody{ + Artifacts: artifacts, + Labels: buildLabels, + PackerRunUUID: runUUID, + ParentChannelID: parentChannelID, + ParentVersionID: parentVersionID, + Platform: platform, + SourceExternalIdentifier: sourceExternalIdentifier, + Status: &buildStatus, + } + + resp, err := c.Packer.PackerServiceUpdateBuild(params, nil) + if err != nil { + return "", err + } + + if resp == nil { + return "", fmt.Errorf( + "something went wrong retrieving the build %s from bucket %s", buildID, bucketName, + ) + } + + return resp.Payload.Build.ID, nil +} diff --git a/internal/hcp/api/service_channel.go b/internal/hcp/api/service_channel.go new file mode 100644 index 00000000000..50dbfe2d84c --- /dev/null +++ b/internal/hcp/api/service_channel.go @@ -0,0 +1,35 @@ +package api + +import ( + "context" + "fmt" + + hcpPackerAPI "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/client/packer_service" + hcpPackerModels "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/models" +) + +// GetChannel loads the named channel that is associated to the bucket name. If the +// channel does not exist in HCP Packer, GetChannel returns an error. +func (c *Client) GetChannel( + ctx context.Context, bucketName, channelName string, +) (*hcpPackerModels.HashicorpCloudPacker20230101Channel, error) { + params := hcpPackerAPI.NewPackerServiceGetChannelParamsWithContext(ctx) + params.LocationOrganizationID = c.OrganizationID + params.LocationProjectID = c.ProjectID + params.BucketName = bucketName + params.ChannelName = channelName + + resp, err := c.Packer.PackerServiceGetChannel(params, nil) + if err != nil { + return nil, err + } + + if resp.Payload.Channel == nil { + return nil, fmt.Errorf( + "there is no channel with the name %s associated with the bucket %s", + channelName, bucketName, + ) + } + + return resp.Payload.Channel, nil +} diff --git a/internal/hcp/api/service_version.go b/internal/hcp/api/service_version.go new file mode 100644 index 00000000000..0e67bc1bd88 --- /dev/null +++ b/internal/hcp/api/service_version.go @@ -0,0 +1,61 @@ +package api + +import ( + "context" + "fmt" + + hcpPackerAPI "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/client/packer_service" + hcpPackerModels "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/models" +) + +const incompleteVersionName = "v0" + +// IsVersionComplete returns if the given version is completed or not. +// +// The best way to know if the version is completed or not is from the name of the version. All version that are +// incomplete are named "v0". +func (c *Client) IsVersionComplete(version *hcpPackerModels.HashicorpCloudPacker20230101Version) bool { + return version.Name != incompleteVersionName +} + +func (c *Client) CreateVersion( + ctx context.Context, + bucketName, + fingerprint string, + templateType hcpPackerModels.HashicorpCloudPacker20230101TemplateType, +) (*hcpPackerAPI.PackerServiceCreateVersionOK, error) { + + params := hcpPackerAPI.NewPackerServiceCreateVersionParamsWithContext(ctx) + params.LocationOrganizationID = c.OrganizationID + params.LocationProjectID = c.ProjectID + params.BucketName = bucketName + params.Body = &hcpPackerModels.HashicorpCloudPacker20230101CreateVersionBody{ + Fingerprint: fingerprint, + TemplateType: templateType.Pointer(), + } + + return c.Packer.PackerServiceCreateVersion(params, nil) +} + +func (c *Client) GetVersion( + ctx context.Context, bucketName string, fingerprint string, +) (*hcpPackerModels.HashicorpCloudPacker20230101Version, error) { + params := hcpPackerAPI.NewPackerServiceGetVersionParams() + params.LocationOrganizationID = c.OrganizationID + params.LocationProjectID = c.ProjectID + params.BucketName = bucketName + params.Fingerprint = fingerprint + + resp, err := c.Packer.PackerServiceGetVersion(params, nil) + if err != nil { + return nil, err + } + + if resp.Payload.Version != nil { + return resp.Payload.Version, nil + } + + return nil, fmt.Errorf( + "something went wrong retrieving the version for bucket %s", bucketName, + ) +} diff --git a/internal/hcp/registry/artifact.go b/internal/hcp/registry/artifact.go index 7257d302f3d..6ee5467af65 100644 --- a/internal/hcp/registry/artifact.go +++ b/internal/hcp/registry/artifact.go @@ -10,9 +10,9 @@ import ( const BuilderId = "packer.post-processor.hpc-packer-registry" type registryArtifact struct { - BucketSlug string - IterationID string - BuildName string + BucketName string + VersionID string + BuildName string } func (a *registryArtifact) BuilderId() string { @@ -28,7 +28,7 @@ func (a *registryArtifact) Files() []string { } func (a *registryArtifact) String() string { - return fmt.Sprintf("Published metadata to HCP Packer registry packer/%s/iterations/%s", a.BucketSlug, a.IterationID) + return fmt.Sprintf("Published metadata to HCP Packer registry packer/%s/versions/%s", a.BucketName, a.VersionID) } func (*registryArtifact) State(name string) interface{} { diff --git a/internal/hcp/registry/deprecated_ds_config.go b/internal/hcp/registry/deprecated_ds_config.go new file mode 100644 index 00000000000..20c3639807d --- /dev/null +++ b/internal/hcp/registry/deprecated_ds_config.go @@ -0,0 +1,131 @@ +package registry + +import ( + "fmt" + + "github.com/hashicorp/hcl/v2" + sdkpacker "github.com/hashicorp/packer-plugin-sdk/packer" + "github.com/zclconf/go-cty/cty" + "github.com/zclconf/go-cty/cty/gocty" +) + +type hcpImage struct { + ID string + ChannelID string + IterationID string +} + +func imageValueToDSOutput(imageVal map[string]cty.Value) hcpImage { + image := hcpImage{} + for k, v := range imageVal { + switch k { + case "id": + image.ID = v.AsString() + case "channel_id": + image.ChannelID = v.AsString() + case "iteration_id": + image.IterationID = v.AsString() + } + } + + return image +} + +type hcpIteration struct { + ID string + ChannelID string +} + +func iterValueToDSOutput(iterVal map[string]cty.Value) hcpIteration { + iter := hcpIteration{} + for k, v := range iterVal { + switch k { + case "id": + iter.ID = v.AsString() + case "channel_id": + iter.ChannelID = v.AsString() + } + } + return iter +} + +func withDeprecatedDatasourceConfiguration(vals map[string]cty.Value, ui sdkpacker.Ui) bucketConfigurationOpts { + return func(bucket *Bucket) hcl.Diagnostics { + var diags hcl.Diagnostics + + imageDS, imageOK := vals[hcpImageDatasourceType] + iterDS, iterOK := vals[hcpIterationDatasourceType] + + if !imageOK && !iterOK { + return nil + } + + iterations := map[string]hcpIteration{} + + var err error + if iterOK { + ui.Say("[WARN] Deprecation: `hcp-packer-iteration` datasource has been deprecated. " + + "Please use `hcp-packer-version` datasource instead.") + hcpData := map[string]cty.Value{} + err = gocty.FromCtyValue(iterDS, &hcpData) + if err != nil { + diags = append(diags, &hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Invalid HCP datasources", + Detail: fmt.Sprintf("Failed to decode hcp-packer-iteration datasources: %s", err), + }) + return diags + } + + for k, v := range hcpData { + iterVals := v.AsValueMap() + iter := iterValueToDSOutput(iterVals) + iterations[k] = iter + } + } + + images := map[string]hcpImage{} + + if imageOK { + ui.Say("[WARN] Deprecation: `hcp-packer-image` datasource has been deprecated. " + + "Please use `hcp-packer-artifact` datasource instead.") + hcpData := map[string]cty.Value{} + err = gocty.FromCtyValue(imageDS, &hcpData) + if err != nil { + diags = append(diags, &hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Invalid HCP datasources", + Detail: fmt.Sprintf("Failed to decode hcp_packer_image datasources: %s", err), + }) + return diags + } + + for k, v := range hcpData { + imageVals := v.AsValueMap() + img := imageValueToDSOutput(imageVals) + images[k] = img + } + } + + for _, img := range images { + sourceIteration := ParentVersion{} + + sourceIteration.VersionID = img.IterationID + + if img.ChannelID != "" { + sourceIteration.ChannelID = img.ChannelID + } else { + for _, it := range iterations { + if it.ID == img.IterationID { + sourceIteration.ChannelID = it.ChannelID + break + } + } + } + + bucket.SourceExternalIdentifierToParentVersions[img.ID] = sourceIteration + } + + return diags + } +} diff --git a/internal/hcp/registry/ds_config.go b/internal/hcp/registry/ds_config.go new file mode 100644 index 00000000000..e38dd722dca --- /dev/null +++ b/internal/hcp/registry/ds_config.go @@ -0,0 +1,129 @@ +package registry + +import ( + "fmt" + + "github.com/hashicorp/hcl/v2" + "github.com/zclconf/go-cty/cty" + "github.com/zclconf/go-cty/cty/gocty" +) + +type hcpVersion struct { + VersionID string + ChannelID string +} + +func versionValueToDSOutput(iterVal map[string]cty.Value) hcpVersion { + version := hcpVersion{} + for k, v := range iterVal { + switch k { + case "id": + version.VersionID = v.AsString() + case "channel_id": + version.ChannelID = v.AsString() + } + } + return version +} + +type hcpArtifact struct { + ExternalIdentifier string + ChannelID string + VersionID string +} + +func artifactValueToDSOutput(imageVal map[string]cty.Value) hcpArtifact { + artifact := hcpArtifact{} + for k, v := range imageVal { + switch k { + case "external_identifier": + artifact.ExternalIdentifier = v.AsString() + case "channel_id": + artifact.ChannelID = v.AsString() + case "version_id": + artifact.VersionID = v.AsString() + } + } + + return artifact +} + +func withDatasourceConfiguration(vals map[string]cty.Value) bucketConfigurationOpts { + return func(bucket *Bucket) hcl.Diagnostics { + var diags hcl.Diagnostics + + versionDS, versionOK := vals[hcpVersionDatasourceType] + artifactDS, artifactOK := vals[hcpArtifactDatasourceType] + + if !artifactOK && !versionOK { + return nil + } + + versions := map[string]hcpVersion{} + + var err error + if versionOK { + hcpData := map[string]cty.Value{} + err = gocty.FromCtyValue(versionDS, &hcpData) + if err != nil { + diags = append(diags, &hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Invalid HCP datasources", + Detail: fmt.Sprintf( + "Failed to decode hcp-packer-version datasources: %s", err, + ), + }) + return diags + } + + for k, v := range hcpData { + versionVals := v.AsValueMap() + version := versionValueToDSOutput(versionVals) + versions[k] = version + } + } + + artifacts := map[string]hcpArtifact{} + + if artifactOK { + hcpData := map[string]cty.Value{} + err = gocty.FromCtyValue(artifactDS, &hcpData) + if err != nil { + diags = append(diags, &hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Invalid HCP datasources", + Detail: fmt.Sprintf( + "Failed to decode hcp-packer-artifact datasources: %s", err, + ), + }) + return diags + } + + for k, v := range hcpData { + artifactVals := v.AsValueMap() + artifact := artifactValueToDSOutput(artifactVals) + artifacts[k] = artifact + } + } + + for _, a := range artifacts { + parentVersion := ParentVersion{} + parentVersion.VersionID = a.VersionID + + if a.ChannelID != "" { + parentVersion.ChannelID = a.ChannelID + } else { + for _, v := range versions { + if v.VersionID == a.VersionID { + parentVersion.ChannelID = v.ChannelID + break + } + } + } + + bucket.SourceExternalIdentifierToParentVersions[a.ExternalIdentifier] = parentVersion + } + + return diags + } +} diff --git a/internal/hcp/registry/errors.go b/internal/hcp/registry/errors.go index 8bc458d241b..3b3dbbd92ba 100644 --- a/internal/hcp/registry/errors.go +++ b/internal/hcp/registry/errors.go @@ -3,7 +3,8 @@ package registry -// ErrBuildAlreadyDone is the error returned by an HCP handler when a build cannot be started since it's already marked as DONE. +// ErrBuildAlreadyDone is the error returned by an HCP handler when a build cannot be started since it's already +// marked as DONE. type ErrBuildAlreadyDone struct { Message string } diff --git a/internal/hcp/registry/hcl.go b/internal/hcp/registry/hcl.go index 531fd648c7e..e0af421ba38 100644 --- a/internal/hcp/registry/hcl.go +++ b/internal/hcp/registry/hcl.go @@ -9,56 +9,61 @@ import ( "log" "github.com/hashicorp/hcl/v2" - "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/models" + hcpPackerModels "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/models" sdkpacker "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer/hcl2template" "github.com/hashicorp/packer/packer" "github.com/zclconf/go-cty/cty" - "github.com/zclconf/go-cty/cty/gocty" ) -// HCLMetadataRegistry is a HCP handler made for handling HCL configurations -type HCLMetadataRegistry struct { +// HCLRegistry is a HCP handler made for handling HCL configurations +type HCLRegistry struct { configuration *hcl2template.PackerConfig bucket *Bucket ui sdkpacker.Ui } const ( - // Known HCP Packer Image Datasource, whose id is the SourceImageId for some build. - hcpImageDatasourceType string = "hcp-packer-image" + // Known HCP Packer Datasource, whose id is the SourceImageId for some build. + hcpImageDatasourceType string = "hcp-packer-image" + hcpArtifactDatasourceType string = "hcp-packer-artifact" + hcpIterationDatasourceType string = "hcp-packer-iteration" - buildLabel string = "build" + hcpVersionDatasourceType string = "hcp-packer-version" + + buildLabel string = "build" ) -// PopulateIteration creates the metadata on HCP for a build -func (h *HCLMetadataRegistry) PopulateIteration(ctx context.Context) error { - err := h.bucket.Initialize(ctx, models.HashicorpCloudPackerIterationTemplateTypeHCL2) +// PopulateVersion creates the metadata in HCP Packer Registry for a build +func (h *HCLRegistry) PopulateVersion(ctx context.Context) error { + err := h.bucket.Initialize(ctx, hcpPackerModels.HashicorpCloudPacker20230101TemplateTypeHCL2) if err != nil { return err } - err = h.bucket.populateIteration(ctx) + err = h.bucket.populateVersion(ctx) if err != nil { return err } - iterationID := h.bucket.Iteration.ID + versionID := h.bucket.Version.ID - h.configuration.HCPVars["iterationID"] = cty.StringVal(iterationID) + // FIXME: Remove + h.configuration.HCPVars["iterationID"] = cty.StringVal(versionID) + h.configuration.HCPVars["versionID"] = cty.StringVal(versionID) sha, err := getGitSHA(h.configuration.Basedir) if err != nil { log.Printf("failed to get GIT SHA from environment, won't set as build labels") } else { - h.bucket.Iteration.AddSHAToBuildLabels(sha) + h.bucket.Version.AddSHAToBuildLabels(sha) } return nil } // StartBuild is invoked when one build for the configuration is starting to be processed -func (h *HCLMetadataRegistry) StartBuild(ctx context.Context, build sdkpacker.Build) error { +func (h *HCLRegistry) StartBuild(ctx context.Context, build sdkpacker.Build) error { name := build.Name() cb, ok := build.(*packer.CoreBuild) if ok { @@ -68,7 +73,7 @@ func (h *HCLMetadataRegistry) StartBuild(ctx context.Context, build sdkpacker.Bu } // CompleteBuild is invoked when one build for the configuration has finished -func (h *HCLMetadataRegistry) CompleteBuild( +func (h *HCLRegistry) CompleteBuild( ctx context.Context, build sdkpacker.Build, artifacts []sdkpacker.Artifact, @@ -82,20 +87,20 @@ func (h *HCLMetadataRegistry) CompleteBuild( return h.bucket.completeBuild(ctx, name, artifacts, buildErr) } -// IterationStatusSummary prints a status report in the UI if the iteration is not yet done -func (h *HCLMetadataRegistry) IterationStatusSummary() { - h.bucket.Iteration.iterationStatusSummary(h.ui) +// VersionStatusSummary prints a status report in the UI if the version is not yet done +func (h *HCLRegistry) VersionStatusSummary() { + h.bucket.Version.statusSummary(h.ui) } -func NewHCLMetadataRegistry(config *hcl2template.PackerConfig, ui sdkpacker.Ui) (*HCLMetadataRegistry, hcl.Diagnostics) { +func NewHCLRegistry(config *hcl2template.PackerConfig, ui sdkpacker.Ui) (*HCLRegistry, hcl.Diagnostics) { var diags hcl.Diagnostics if len(config.Builds) > 1 { diags = append(diags, &hcl.Diagnostic{ Severity: hcl.DiagError, Summary: "Multiple " + buildLabel + " blocks", - Detail: fmt.Sprintf("For Packer Registry enabled builds, only one " + buildLabel + + Detail: fmt.Sprintf("For HCP Packer Registry enabled builds, only one " + buildLabel + " block can be defined. Please remove any additional " + buildLabel + - " block(s). If this " + buildLabel + " is not meant for the Packer registry please " + + " block(s). If this " + buildLabel + " is not meant for the HCP Packer registry please " + "clear any HCP_PACKER_* environment variables."), }) @@ -105,10 +110,10 @@ func NewHCLMetadataRegistry(config *hcl2template.PackerConfig, ui sdkpacker.Ui) withHCLBucketConfiguration := func(bb *hcl2template.BuildBlock) bucketConfigurationOpts { return func(bucket *Bucket) hcl.Diagnostics { bucket.ReadFromHCLBuildBlock(bb) - // If at this point the bucket.Slug is still empty, + // If at this point the bucket.Name is still empty, // last try is to use the build.Name if present - if bucket.Slug == "" && bb.Name != "" { - bucket.Slug = bb.Name + if bucket.Name == "" && bb.Name != "" { + bucket.Name = bb.Name } // If the description is empty, use the one from the build block @@ -130,6 +135,7 @@ func NewHCLMetadataRegistry(config *hcl2template.PackerConfig, ui sdkpacker.Ui) config.Basedir, withPackerEnvConfiguration, withHCLBucketConfiguration(build), + withDeprecatedDatasourceConfiguration(vals, ui), withDatasourceConfiguration(vals), ) if bucketDiags != nil { @@ -144,128 +150,11 @@ func NewHCLMetadataRegistry(config *hcl2template.PackerConfig, ui sdkpacker.Ui) bucket.RegisterBuildForComponent(source.String()) } - ui.Say(fmt.Sprintf("Tracking build on HCP Packer with fingerprint %q", bucket.Iteration.Fingerprint)) + ui.Say(fmt.Sprintf("Tracking build on HCP Packer with fingerprint %q", bucket.Version.Fingerprint)) - return &HCLMetadataRegistry{ + return &HCLRegistry{ configuration: config, bucket: bucket, ui: ui, }, nil } - -type hcpImage struct { - ID string - ChannelID string - IterationID string -} - -func imageValueToDSOutput(imageVal map[string]cty.Value) hcpImage { - image := hcpImage{} - for k, v := range imageVal { - switch k { - case "id": - image.ID = v.AsString() - case "channel_id": - image.ChannelID = v.AsString() - case "iteration_id": - image.IterationID = v.AsString() - } - } - - return image -} - -type hcpIteration struct { - ID string - ChannelID string -} - -func iterValueToDSOutput(iterVal map[string]cty.Value) hcpIteration { - iter := hcpIteration{} - for k, v := range iterVal { - switch k { - case "id": - iter.ID = v.AsString() - case "channel_id": - iter.ChannelID = v.AsString() - } - } - return iter -} - -func withDatasourceConfiguration(vals map[string]cty.Value) bucketConfigurationOpts { - return func(bucket *Bucket) hcl.Diagnostics { - var diags hcl.Diagnostics - - imageDS, imageOK := vals[hcpImageDatasourceType] - iterDS, iterOK := vals[hcpIterationDatasourceType] - - if !imageOK && !iterOK { - return nil - } - - iterations := map[string]hcpIteration{} - - var err error - if iterOK { - hcpData := map[string]cty.Value{} - err = gocty.FromCtyValue(iterDS, &hcpData) - if err != nil { - diags = append(diags, &hcl.Diagnostic{ - Severity: hcl.DiagError, - Summary: "Invalid HCP datasources", - Detail: fmt.Sprintf("Failed to decode hcp_packer_iteration datasources: %s", err), - }) - return diags - } - - for k, v := range hcpData { - iterVals := v.AsValueMap() - iter := iterValueToDSOutput(iterVals) - iterations[k] = iter - } - } - - images := map[string]hcpImage{} - - if imageOK { - hcpData := map[string]cty.Value{} - err = gocty.FromCtyValue(imageDS, &hcpData) - if err != nil { - diags = append(diags, &hcl.Diagnostic{ - Severity: hcl.DiagError, - Summary: "Invalid HCP datasources", - Detail: fmt.Sprintf("Failed to decode hcp_packer_image datasources: %s", err), - }) - return diags - } - - for k, v := range hcpData { - imageVals := v.AsValueMap() - img := imageValueToDSOutput(imageVals) - images[k] = img - } - } - - for _, img := range images { - sourceIteration := ParentIteration{} - - sourceIteration.IterationID = img.IterationID - - if img.ChannelID != "" { - sourceIteration.ChannelID = img.ChannelID - } else { - for _, it := range iterations { - if it.ID == img.IterationID { - sourceIteration.ChannelID = it.ChannelID - break - } - } - } - - bucket.SourceImagesToParentIterations[img.ID] = sourceIteration - } - - return diags - } -} diff --git a/internal/hcp/registry/hcp.go b/internal/hcp/registry/hcp.go index c0d12726e2d..d0d249f25c6 100644 --- a/internal/hcp/registry/hcp.go +++ b/internal/hcp/registry/hcp.go @@ -6,7 +6,7 @@ package registry import ( "fmt" - git "github.com/go-git/go-git/v5" + "github.com/go-git/go-git/v5" "github.com/hashicorp/hcl/v2" "github.com/hashicorp/packer/hcl2template" "github.com/hashicorp/packer/internal/hcp/env" @@ -71,7 +71,7 @@ func createConfiguredBucket(templateDir string, opts ...bucketConfigurationOpts) }) } - bucket := NewBucketWithIteration() + bucket := NewBucketWithVersion() for _, opt := range opts { if optDiags := opt(bucket); optDiags.HasErrors() { @@ -79,10 +79,10 @@ func createConfiguredBucket(templateDir string, opts ...bucketConfigurationOpts) } } - if bucket.Slug == "" { + if bucket.Name == "" { diags = append(diags, &hcl.Diagnostic{ - Summary: "Image bucket name required", - Detail: "You must provide an image bucket name for HCP Packer builds. " + + Summary: "Bucket name required", + Detail: "You must provide a bucket name for HCP Packer builds. " + "You can set the HCP_PACKER_BUCKET_NAME environment variable. " + "For HCL2 templates, the registry either uses the name of your " + "template's build block, or you can set the bucket_name argument " + @@ -91,20 +91,11 @@ func createConfiguredBucket(templateDir string, opts ...bucketConfigurationOpts) }) } - err := bucket.Iteration.Initialize() + err := bucket.Version.Initialize() if err != nil { diags = append(diags, &hcl.Diagnostic{ - Severity: hcl.DiagError, - Summary: "Failed to initialize iteration", - Detail: fmt.Sprintf("The iteration failed to be initialized for bucket %q: %s", - bucket.Slug, err), - }) - } - - if err != nil { - diags = append(diags, &hcl.Diagnostic{ - Summary: "Iteration initialization failed", - Detail: fmt.Sprintf("Initialization of the iteration failed with "+ + Summary: "Version initialization failed", + Detail: fmt.Sprintf("Initialization of the version failed with "+ "the following error message: %s", err), Severity: hcl.DiagError, }) diff --git a/internal/hcp/registry/json.go b/internal/hcp/registry/json.go index 92aa6db904c..b35f2ea49ed 100644 --- a/internal/hcp/registry/json.go +++ b/internal/hcp/registry/json.go @@ -10,19 +10,19 @@ import ( "path/filepath" "github.com/hashicorp/hcl/v2" - "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/models" + hcpPackerModels "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/models" sdkpacker "github.com/hashicorp/packer-plugin-sdk/packer" "github.com/hashicorp/packer/packer" ) -// JSONMetadataRegistry is a HCP handler made to process legacy JSON templates -type JSONMetadataRegistry struct { +// JSONRegistry is a HCP handler made to process legacy JSON templates +type JSONRegistry struct { configuration *packer.Core bucket *Bucket ui sdkpacker.Ui } -func NewJSONMetadataRegistry(config *packer.Core, ui sdkpacker.Ui) (*JSONMetadataRegistry, hcl.Diagnostics) { +func NewJSONRegistry(config *packer.Core, ui sdkpacker.Ui) (*JSONRegistry, hcl.Diagnostics) { bucket, diags := createConfiguredBucket( filepath.Dir(config.Template.Path), withPackerEnvConfiguration, @@ -46,27 +46,27 @@ func NewJSONMetadataRegistry(config *packer.Core, ui sdkpacker.Ui) (*JSONMetadat bucket.RegisterBuildForComponent(buildName) } - ui.Say(fmt.Sprintf("Tracking build on HCP Packer with fingerprint %q", bucket.Iteration.Fingerprint)) + ui.Say(fmt.Sprintf("Tracking build on HCP Packer with fingerprint %q", bucket.Version.Fingerprint)) - return &JSONMetadataRegistry{ + return &JSONRegistry{ configuration: config, bucket: bucket, ui: ui, }, nil } -// PopulateIteration creates the metadata on HCP for a build -func (h *JSONMetadataRegistry) PopulateIteration(ctx context.Context) error { +// PopulateVersion creates the metadata in HCP Packer Registry for a build +func (h *JSONRegistry) PopulateVersion(ctx context.Context) error { err := h.bucket.Validate() if err != nil { return err } - err = h.bucket.Initialize(ctx, models.HashicorpCloudPackerIterationTemplateTypeJSON) + err = h.bucket.Initialize(ctx, hcpPackerModels.HashicorpCloudPacker20230101TemplateTypeJSON) if err != nil { return err } - err = h.bucket.populateIteration(ctx) + err = h.bucket.populateVersion(ctx) if err != nil { return err } @@ -75,19 +75,19 @@ func (h *JSONMetadataRegistry) PopulateIteration(ctx context.Context) error { if err != nil { log.Printf("failed to get GIT SHA from environment, won't set as build labels") } else { - h.bucket.Iteration.AddSHAToBuildLabels(sha) + h.bucket.Version.AddSHAToBuildLabels(sha) } return nil } // StartBuild is invoked when one build for the configuration is starting to be processed -func (h *JSONMetadataRegistry) StartBuild(ctx context.Context, build sdkpacker.Build) error { +func (h *JSONRegistry) StartBuild(ctx context.Context, build sdkpacker.Build) error { return h.bucket.startBuild(ctx, build.Name()) } // CompleteBuild is invoked when one build for the configuration has finished -func (h *JSONMetadataRegistry) CompleteBuild( +func (h *JSONRegistry) CompleteBuild( ctx context.Context, build sdkpacker.Build, artifacts []sdkpacker.Artifact, @@ -96,7 +96,7 @@ func (h *JSONMetadataRegistry) CompleteBuild( return h.bucket.completeBuild(ctx, build.Name(), artifacts, buildErr) } -// IterationStatusSummary prints a status report in the UI if the iteration is not yet done -func (h *JSONMetadataRegistry) IterationStatusSummary() { - h.bucket.Iteration.iterationStatusSummary(h.ui) +// VersionStatusSummary prints a status report in the UI if the version is not yet done +func (h *JSONRegistry) VersionStatusSummary() { + h.bucket.Version.statusSummary(h.ui) } diff --git a/internal/hcp/registry/null_registry.go b/internal/hcp/registry/null_registry.go index f7dbcdf0970..4f32c3d12b3 100644 --- a/internal/hcp/registry/null_registry.go +++ b/internal/hcp/registry/null_registry.go @@ -12,7 +12,7 @@ import ( // nullRegistry is a special handler that does nothing type nullRegistry struct{} -func (r nullRegistry) PopulateIteration(context.Context) error { +func (r nullRegistry) PopulateVersion(context.Context) error { return nil } @@ -29,4 +29,4 @@ func (r nullRegistry) CompleteBuild( return artifacts, nil } -func (r nullRegistry) IterationStatusSummary() {} +func (r nullRegistry) VersionStatusSummary() {} diff --git a/internal/hcp/registry/registry.go b/internal/hcp/registry/registry.go index 35485a8993e..56b70285d41 100644 --- a/internal/hcp/registry/registry.go +++ b/internal/hcp/registry/registry.go @@ -15,13 +15,13 @@ import ( // Registry is an entity capable to orchestrate a Packer build and upload metadata to HCP type Registry interface { - PopulateIteration(context.Context) error + PopulateVersion(context.Context) error StartBuild(context.Context, sdkpacker.Build) error CompleteBuild(ctx context.Context, build sdkpacker.Build, artifacts []sdkpacker.Artifact, buildErr error) ([]sdkpacker.Artifact, error) - IterationStatusSummary() + VersionStatusSummary() } -// New instanciates the appropriate registry for the Packer configuration template type. +// New instantiates the appropriate registry for the Packer configuration template type. // A nullRegistry is returned for non-HCP Packer registry enabled templates. func New(cfg packer.Handler, ui sdkpacker.Ui) (Registry, hcl.Diagnostics) { if !IsHCPEnabled(cfg) { @@ -31,9 +31,9 @@ func New(cfg packer.Handler, ui sdkpacker.Ui) (Registry, hcl.Diagnostics) { switch config := cfg.(type) { case *hcl2template.PackerConfig: // Maybe rename to what it represents.... - return NewHCLMetadataRegistry(config, ui) + return NewHCLRegistry(config, ui) case *packer.Core: - return NewJSONMetadataRegistry(config, ui) + return NewJSONRegistry(config, ui) } return nil, hcl.Diagnostics{ diff --git a/internal/hcp/registry/types.bucket.go b/internal/hcp/registry/types.bucket.go index d4239f45005..b8f62a7b2f6 100644 --- a/internal/hcp/registry/types.bucket.go +++ b/internal/hcp/registry/types.bucket.go @@ -13,11 +13,11 @@ import ( "time" "github.com/hashicorp/go-multierror" - "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/models" - "github.com/hashicorp/packer-plugin-sdk/packer" - registryimage "github.com/hashicorp/packer-plugin-sdk/packer/registry/image" + hcpPackerModels "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/models" + packerSDK "github.com/hashicorp/packer-plugin-sdk/packer" + packerSDKRegistry "github.com/hashicorp/packer-plugin-sdk/packer/registry/image" "github.com/hashicorp/packer/hcl2template" - "github.com/hashicorp/packer/internal/hcp/api" + hcpPackerAPI "github.com/hashicorp/packer/internal/hcp/api" "github.com/hashicorp/packer/internal/hcp/env" "github.com/mitchellh/mapstructure" "google.golang.org/grpc/codes" @@ -27,48 +27,52 @@ import ( // build is still alive. const HeartbeatPeriod = 2 * time.Minute -// Bucket represents a single Image bucket on the HCP Packer registry. +// Bucket represents a single bucket on the HCP Packer registry. type Bucket struct { - Slug string - Description string - Destination string - BucketLabels map[string]string - BuildLabels map[string]string - SourceImagesToParentIterations map[string]ParentIteration - RunningBuilds map[string]chan struct{} - Iteration *Iteration - client *api.Client + Name string + Description string + Destination string + BucketLabels map[string]string + BuildLabels map[string]string + SourceExternalIdentifierToParentVersions map[string]ParentVersion + RunningBuilds map[string]chan struct{} + Version *Version + client *hcpPackerAPI.Client } -type ParentIteration struct { - IterationID string - ChannelID string +type ParentVersion struct { + VersionID string + ChannelID string } -// NewBucketWithIteration initializes a simple Bucket that can be used publishing Packer build -// images to the HCP Packer registry. -func NewBucketWithIteration() *Bucket { +// NewBucketWithVersion initializes a simple Bucket that can be used for publishing Packer build artifacts +// to the HCP Packer registry. +func NewBucketWithVersion() *Bucket { b := Bucket{ - BucketLabels: make(map[string]string), - BuildLabels: make(map[string]string), - SourceImagesToParentIterations: make(map[string]ParentIteration), - RunningBuilds: make(map[string]chan struct{}), + BucketLabels: make(map[string]string), + BuildLabels: make(map[string]string), + SourceExternalIdentifierToParentVersions: make(map[string]ParentVersion), + RunningBuilds: make(map[string]chan struct{}), } - b.Iteration = NewIteration() + b.Version = NewVersion() return &b } -func (b *Bucket) Validate() error { - if b.Slug == "" { - return fmt.Errorf("no Packer bucket name defined; either the environment variable %q is undefined or the HCL configuration has no build name", env.HCPPackerBucket) +func (bucket *Bucket) Validate() error { + if bucket.Name == "" { + return fmt.Errorf( + "no Packer bucket name defined; either the environment variable %q is undefined or "+ + "the HCL configuration has no build name", + env.HCPPackerBucket, + ) } return nil } // ReadFromHCLBuildBlock reads the information for initialising a Bucket from a HCL2 build block -func (b *Bucket) ReadFromHCLBuildBlock(build *hcl2template.BuildBlock) { - if b == nil { +func (bucket *Bucket) ReadFromHCLBuildBlock(build *hcl2template.BuildBlock) { + if bucket == nil { return } @@ -77,76 +81,77 @@ func (b *Bucket) ReadFromHCLBuildBlock(build *hcl2template.BuildBlock) { return } - b.Description = registryBlock.Description - b.BucketLabels = registryBlock.BucketLabels - b.BuildLabels = registryBlock.BuildLabels - // If there's already a Slug this was set from env variable. + bucket.Description = registryBlock.Description + bucket.BucketLabels = registryBlock.BucketLabels + bucket.BuildLabels = registryBlock.BuildLabels + // If there's already a Name this was set from env variable. // In Packer, env variable overrides config values so we keep it that way for consistency. - if b.Slug == "" && registryBlock.Slug != "" { - b.Slug = registryBlock.Slug + if bucket.Name == "" && registryBlock.Slug != "" { + bucket.Name = registryBlock.Slug } } // connect initializes a client connection to a remote HCP Packer Registry service on HCP. // Upon a successful connection the initialized client is persisted on the Bucket b for later usage. -func (b *Bucket) connect() error { - if b.client != nil { +func (bucket *Bucket) connect() error { + if bucket.client != nil { return nil } - registryClient, err := api.NewClient() + registryClient, err := hcpPackerAPI.NewClient() if err != nil { return errors.New("Failed to create client connection to artifact registry: " + err.Error()) } - b.client = registryClient + bucket.client = registryClient return nil } -// Initialize registers the Bucket b with the configured HCP Packer Registry. -// Upon initialization a Bucket will be upserted to, and new iteration will be created for the build if the configured -// fingerprint has no associated iterations. Lastly, the initialization process with register the builds that need to be -// completed before an iteration can be marked as DONE. +// Initialize registers the bucket with the configured HCP Packer Registry. +// Upon initialization a Bucket will be upserted to, and new version will be created for the build if the configured +// fingerprint has no associated versions. Lastly, the initialization process with register the builds that need to be +// completed before an version can be marked as DONE. // // b.Initialize() must be called before any data can be published to the configured HCP Packer Registry. // TODO ensure initialize can only be called once -func (b *Bucket) Initialize(ctx context.Context, templateType models.HashicorpCloudPackerIterationTemplateType) error { +func (bucket *Bucket) Initialize( + ctx context.Context, templateType hcpPackerModels.HashicorpCloudPacker20230101TemplateType, +) error { - if err := b.connect(); err != nil { + if err := bucket.connect(); err != nil { return err } - b.Destination = fmt.Sprintf("%s/%s", b.client.OrganizationID, b.client.ProjectID) + bucket.Destination = fmt.Sprintf("%s/%s", bucket.client.OrganizationID, bucket.client.ProjectID) - err := b.client.UpsertBucket(ctx, b.Slug, b.Description, b.BucketLabels) + err := bucket.client.UpsertBucket(ctx, bucket.Name, bucket.Description, bucket.BucketLabels) if err != nil { - return fmt.Errorf("failed to initialize bucket %q: %w", b.Slug, err) + return fmt.Errorf("failed to initialize bucket %q: %w", bucket.Name, err) } - return b.initializeIteration(ctx, templateType) + return bucket.initializeVersion(ctx, templateType) } -func (b *Bucket) RegisterBuildForComponent(sourceName string) { - if b == nil { +func (bucket *Bucket) RegisterBuildForComponent(sourceName string) { + if bucket == nil { return } - if ok := b.Iteration.HasBuild(sourceName); ok { + if ok := bucket.Version.HasBuild(sourceName); ok { return } - b.Iteration.expectedBuilds = append(b.Iteration.expectedBuilds, sourceName) + bucket.Version.expectedBuilds = append(bucket.Version.expectedBuilds, sourceName) } -// CreateInitialBuildForIteration will create a build entry on the HCP Packer Registry for the named componentType. -// This initial creation is needed so that Packer can properly track when an iteration is complete. -func (b *Bucket) CreateInitialBuildForIteration(ctx context.Context, componentType string) error { - status := models.HashicorpCloudPackerBuildStatusUNSET +// CreateInitialBuildForVersion will create a build entry on the HCP Packer Registry for the named componentType. +// This initial creation is needed so that Packer can properly track when an version is complete. +func (bucket *Bucket) CreateInitialBuildForVersion(ctx context.Context, componentType string) error { + status := hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDUNSET - resp, err := b.client.CreateBuild(ctx, - b.Slug, - b.Iteration.RunUUID, - b.Iteration.ID, - b.Iteration.Fingerprint, + resp, err := bucket.client.CreateBuild(ctx, + bucket.Name, + bucket.Version.RunUUID, + bucket.Version.Fingerprint, componentType, status, ) @@ -160,27 +165,30 @@ func (b *Bucket) CreateInitialBuildForIteration(ctx context.Context, componentTy } build.Labels = make(map[string]string) - build.Images = make(map[string]registryimage.Image) + build.Artifacts = make(map[string]packerSDKRegistry.Image) // Initial build labels are only pushed to the registry when an actual Packer run is executed on the said build. - // For example filtered builds (e.g --only or except) will not get the initial build labels until a build is executed on them. - // Global build label updates to existing builds are handled in PopulateIteration. - if len(b.BuildLabels) > 0 { - build.MergeLabels(b.BuildLabels) + // For example filtered builds (e.g --only or except) will not get the initial build labels until a build is + // executed on them. + // Global build label updates to existing builds are handled in PopulateVersion. + if len(bucket.BuildLabels) > 0 { + build.MergeLabels(bucket.BuildLabels) } - b.Iteration.StoreBuild(componentType, build) + bucket.Version.StoreBuild(componentType, build) return nil } // UpdateBuildStatus updates the status of a build entry on the HCP Packer registry with its current local status. // For updating a build status to DONE use CompleteBuild. -func (b *Bucket) UpdateBuildStatus(ctx context.Context, name string, status models.HashicorpCloudPackerBuildStatus) error { - if status == models.HashicorpCloudPackerBuildStatusDONE { +func (bucket *Bucket) UpdateBuildStatus( + ctx context.Context, name string, status hcpPackerModels.HashicorpCloudPacker20230101BuildStatus, +) error { + if status == hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDDONE { return fmt.Errorf("do not use UpdateBuildStatus for updating to DONE") } - buildToUpdate, err := b.Iteration.Build(name) + buildToUpdate, err := bucket.Version.Build(name) if err != nil { return err } @@ -189,11 +197,13 @@ func (b *Bucket) UpdateBuildStatus(ctx context.Context, name string, status mode return fmt.Errorf("the build for the component %q does not have a valid id", name) } - if buildToUpdate.Status == models.HashicorpCloudPackerBuildStatusDONE { + if buildToUpdate.Status == hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDDONE { return fmt.Errorf("cannot modify status of DONE build %s", name) } - _, err = b.client.UpdateBuild(ctx, + _, err = bucket.client.UpdateBuild(ctx, + bucket.Name, + bucket.Version.Fingerprint, buildToUpdate.ID, buildToUpdate.RunUUID, "", @@ -208,15 +218,15 @@ func (b *Bucket) UpdateBuildStatus(ctx context.Context, name string, status mode return err } buildToUpdate.Status = status - b.Iteration.StoreBuild(name, buildToUpdate) + bucket.Version.StoreBuild(name, buildToUpdate) return nil } // markBuildComplete should be called to set a build on the HCP Packer registry to DONE. -// Upon a successful call markBuildComplete will publish all images created by the named build, -// and set the registry build to done. A build with no images can not be set to DONE. -func (b *Bucket) markBuildComplete(ctx context.Context, name string) error { - buildToUpdate, err := b.Iteration.Build(name) +// Upon a successful call markBuildComplete will publish all artifacts created by the named build, +// and set the build to done. A build with no artifacts can not be set to DONE. +func (bucket *Bucket) markBuildComplete(ctx context.Context, name string) error { + buildToUpdate, err := bucket.Version.Build(name) if err != nil { return err } @@ -225,157 +235,184 @@ func (b *Bucket) markBuildComplete(ctx context.Context, name string) error { return fmt.Errorf("the build for the component %q does not have a valid id", name) } - status := models.HashicorpCloudPackerBuildStatusDONE + status := hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDDONE if buildToUpdate.Status == status { // let's no mess with anything that is already done return nil } - if len(buildToUpdate.Images) == 0 { - return fmt.Errorf("setting a build to DONE with no published images is not currently supported.") + if len(buildToUpdate.Artifacts) == 0 { + return fmt.Errorf("setting a build to DONE with no published artifacts is not currently supported") } - var providerName, sourceID, sourceIterationID, sourceChannelID string - images := make([]*models.HashicorpCloudPackerImageCreateBody, 0, len(buildToUpdate.Images)) - for _, image := range buildToUpdate.Images { - // These values will always be the same for all images in a single build, + var platformName, sourceID, parentVersionID, parentChannelID string + artifacts := make([]*hcpPackerModels.HashicorpCloudPacker20230101ArtifactCreateBody, 0, len(buildToUpdate.Artifacts)) + for _, artifact := range buildToUpdate.Artifacts { + // These values will always be the same for all artifacts in a single build, // so we can just set it inside the loop without consequence - if providerName == "" { - providerName = image.ProviderName + if platformName == "" { + platformName = artifact.ProviderName } - if image.SourceImageID != "" { - sourceID = image.SourceImageID + if artifact.SourceImageID != "" { + sourceID = artifact.SourceImageID } - // Check if image is using some other HCP Packer image - if v, ok := b.SourceImagesToParentIterations[image.SourceImageID]; ok { - sourceIterationID = v.IterationID - sourceChannelID = v.ChannelID + // Check if artifact is using some other HCP Packer artifact + if v, ok := bucket.SourceExternalIdentifierToParentVersions[artifact.SourceImageID]; ok { + parentVersionID = v.VersionID + parentChannelID = v.ChannelID } - images = append(images, &models.HashicorpCloudPackerImageCreateBody{ImageID: image.ImageID, Region: image.ProviderRegion}) + artifacts = append( + artifacts, + &hcpPackerModels.HashicorpCloudPacker20230101ArtifactCreateBody{ + ExternalIdentifier: artifact.ImageID, + Region: artifact.ProviderRegion, + }, + ) } - _, err = b.client.UpdateBuild(ctx, + _, err = bucket.client.UpdateBuild(ctx, + bucket.Name, + bucket.Version.Fingerprint, buildToUpdate.ID, buildToUpdate.RunUUID, - buildToUpdate.CloudProvider, + buildToUpdate.Platform, sourceID, - sourceIterationID, - sourceChannelID, + parentVersionID, + parentChannelID, buildToUpdate.Labels, status, - images, + artifacts, ) if err != nil { return err } buildToUpdate.Status = status - b.Iteration.StoreBuild(name, buildToUpdate) + bucket.Version.StoreBuild(name, buildToUpdate) return nil } -// UpdateImageForBuild appends one or more images artifacts to the build referred to by componentType. -func (b *Bucket) UpdateImageForBuild(componentType string, images ...registryimage.Image) error { - return b.Iteration.AddImageToBuild(componentType, images...) +// UpdateArtifactForBuild appends one or more artifacts to the build referred to by componentType. +func (bucket *Bucket) UpdateArtifactForBuild(componentType string, artifacts ...packerSDKRegistry.Image) error { + return bucket.Version.AddArtifactToBuild(componentType, artifacts...) } // UpdateLabelsForBuild merges the contents of data to the labels associated with the build referred to by componentType. -func (b *Bucket) UpdateLabelsForBuild(componentType string, data map[string]string) error { - return b.Iteration.AddLabelsToBuild(componentType, data) +func (bucket *Bucket) UpdateLabelsForBuild(componentType string, data map[string]string) error { + return bucket.Version.AddLabelsToBuild(componentType, data) } -// Load defaults from environment variables -func (b *Bucket) LoadDefaultSettingsFromEnv() { +// LoadDefaultSettingsFromEnv loads defaults from environment variables +func (bucket *Bucket) LoadDefaultSettingsFromEnv() { // Configure HCP Packer Registry destination - if b.Slug == "" { - b.Slug = os.Getenv(env.HCPPackerBucket) + if bucket.Name == "" { + bucket.Name = os.Getenv(env.HCPPackerBucket) } - // Set some iteration values. For Packer RunUUID should always be set. - // Creating an iteration differently? Let's not overwrite a UUID that might be set. - if b.Iteration.RunUUID == "" { - b.Iteration.RunUUID = os.Getenv("PACKER_RUN_UUID") + // Set some version values. For Packer RunUUID should always be set. + // Creating an version differently? Let's not overwrite a UUID that might be set. + if bucket.Version.RunUUID == "" { + bucket.Version.RunUUID = os.Getenv("PACKER_RUN_UUID") } } -// createIteration creates an empty iteration for a give bucket on the HCP Packer registry. -// The iteration can then be stored locally and used for tracking build status and images for a running +// createVersion creates an empty version for a given bucket on the HCP Packer registry. +// The version can then be stored locally and used for tracking build status and artifacts for a running // Packer build. -func (b *Bucket) createIteration(templateType models.HashicorpCloudPackerIterationTemplateType) (*models.HashicorpCloudPackerIteration, error) { +func (bucket *Bucket) createVersion( + templateType hcpPackerModels.HashicorpCloudPacker20230101TemplateType, +) (*hcpPackerModels.HashicorpCloudPacker20230101Version, error) { ctx := context.Background() - if templateType == models.HashicorpCloudPackerIterationTemplateTypeTEMPLATETYPEUNSET { - return nil, fmt.Errorf("packer error: template type should not be unset when creating an iteration. This is a Packer internal bug which should be reported to the development team for a fix.") + if templateType == hcpPackerModels.HashicorpCloudPacker20230101TemplateTypeTEMPLATETYPEUNSET { + return nil, fmt.Errorf( + "packer error: template type should not be unset when creating a version. " + + "This is a Packer internal bug which should be reported to the development team for a fix", + ) } - createIterationResp, err := b.client.CreateIteration(ctx, b.Slug, b.Iteration.Fingerprint, templateType) + createVersionResp, err := bucket.client.CreateVersion( + ctx, bucket.Name, bucket.Version.Fingerprint, templateType, + ) if err != nil { - return nil, fmt.Errorf("failed to create Iteration for Bucket %s with error: %w", b.Slug, err) + return nil, fmt.Errorf("failed to create Version for Bucket %s with error: %w", bucket.Name, err) } - if createIterationResp == nil { - return nil, fmt.Errorf("failed to create Iteration for Bucket %s with error: %w", b.Slug, err) + if createVersionResp == nil { + return nil, fmt.Errorf("failed to create Version for Bucket %s with error: %w", bucket.Name, err) } - log.Println("[TRACE] a valid iteration for build was created with the Id", createIterationResp.Payload.Iteration.ID) - return createIterationResp.Payload.Iteration, nil + log.Println( + "[TRACE] a valid version for build was created with the Id", createVersionResp.Payload.Version.ID, + ) + return createVersionResp.Payload.Version, nil } -func (b *Bucket) initializeIteration(ctx context.Context, templateType models.HashicorpCloudPackerIterationTemplateType) error { - // load existing iteration using fingerprint. - iteration, err := b.client.GetIteration(ctx, b.Slug, api.GetIteration_byFingerprint(b.Iteration.Fingerprint)) - if api.CheckErrorCode(err, codes.Aborted) { - // probably means Iteration doesn't exist need a way to check the error - iteration, err = b.createIteration(templateType) +func (bucket *Bucket) initializeVersion( + ctx context.Context, templateType hcpPackerModels.HashicorpCloudPacker20230101TemplateType, +) error { + // load existing version using fingerprint. + version, err := bucket.client.GetVersion(ctx, bucket.Name, bucket.Version.Fingerprint) + if hcpPackerAPI.CheckErrorCode(err, codes.Aborted) { + // probably means Version doesn't exist need a way to check the error + version, err = bucket.createVersion(templateType) } if err != nil { - return fmt.Errorf("failed to initialize iteration for fingerprint %s: %s", b.Iteration.Fingerprint, err) + return fmt.Errorf("failed to initialize version for fingerprint %s: %s", bucket.Version.Fingerprint, err) } - if iteration == nil { - return fmt.Errorf("failed to initialize iteration details for Bucket %s with error: %w", b.Slug, err) + if version == nil { + return fmt.Errorf("failed to initialize version details for Bucket %s with error: %w", bucket.Name, err) } - if iteration.TemplateType != nil && - *iteration.TemplateType != models.HashicorpCloudPackerIterationTemplateTypeTEMPLATETYPEUNSET && - *iteration.TemplateType != templateType { - return fmt.Errorf("This iteration was initially created with a %[2]s template. Changing from %[2]s to %[1]s is not supported.", - templateType, *iteration.TemplateType) + if version.TemplateType != nil && + *version.TemplateType != hcpPackerModels.HashicorpCloudPacker20230101TemplateTypeTEMPLATETYPEUNSET && + *version.TemplateType != templateType { + return fmt.Errorf( + "This version was initially created with a %[2]s template. "+ + "Changing from %[2]s to %[1]s is not supported", + templateType, *version.TemplateType, + ) } - log.Println("[TRACE] a valid iteration was retrieved with the id", iteration.ID) - b.Iteration.ID = iteration.ID + log.Println( + "[TRACE] a valid version was retrieved with the id", version.ID, + ) + bucket.Version.ID = version.ID - // If the iteration is completed and there are no new builds to add, Packer + // If the version is completed and there are no new builds to add, Packer // should exit and inform the user that artifacts already exists for the - // fingerprint associated with the iteration. - if iteration.Complete { - return fmt.Errorf("This iteration associated to the fingerprint %s is complete. "+ - "If you wish to add a new build to this image a new iteration must be created by changing the build fingerprint.", b.Iteration.Fingerprint) + // fingerprint associated with the version. + if bucket.client.IsVersionComplete(version) { + return fmt.Errorf( + "The version associated to the fingerprint %v is complete. If you wish to add a new build to "+ + "this bucket a new version must be created by changing the fingerprint.", + bucket.Version.Fingerprint, + ) } return nil } -// populateIteration populates the bucket iteration with the details needed for tracking builds for a Packer run. -// If an existing Packer registry iteration exists for the said iteration fingerprint, calling initialize on iteration -// that doesn't yet exist will call createIteration to create the entry on the HCP packer registry for the given bucket. -// All build details will be created (if they don't exists) and added to b.Iteration.builds for tracking during runtime. -func (b *Bucket) populateIteration(ctx context.Context) error { - // list all this iteration's builds so we can figure out which ones +// populateVersion populates the version with the details needed for tracking builds for a Packer run. +// If a version exists for the said fingerprint, calling initialize on version that doesn't yet exist will call +// createVersion to create the entry on the HCP packer registry for the given bucket. +// All build details will be created (if they don't exist) and added to b.Version.builds for tracking during runtime. +func (bucket *Bucket) populateVersion(ctx context.Context) error { + // list all this version's builds so we can figure out which ones // we want to run against. TODO: pagination? - existingBuilds, err := b.client.ListBuilds(ctx, b.Slug, b.Iteration.ID) + existingBuilds, err := bucket.client.ListBuilds(ctx, bucket.Name, bucket.Version.Fingerprint) if err != nil { - return fmt.Errorf("error listing builds for this existing iteration: %s", err) + return fmt.Errorf("error listing builds for this existing version: %s", err) } var toCreate []string - for _, expected := range b.Iteration.expectedBuilds { + for _, expected := range bucket.Version.expectedBuilds { var found bool for _, existing := range existingBuilds { @@ -387,25 +424,27 @@ func (b *Bucket) populateIteration(ctx context.Context) error { } // When running against an existing build the Packer RunUUID is most likely different. - // We capture that difference here to know that the image was created in a different Packer run. - build.RunUUID = b.Iteration.RunUUID + // We capture that difference here to know that the artifacts were created in a different Packer run. + build.RunUUID = bucket.Version.RunUUID // When bucket build labels represent some dynamic data set, possibly set via some user variable, // we need to make sure that any newly executed builds get the labels at runtime. - if build.IsNotDone() && len(b.BuildLabels) > 0 { - build.MergeLabels(b.BuildLabels) + if build.IsNotDone() && len(bucket.BuildLabels) > 0 { + build.MergeLabels(bucket.BuildLabels) } - log.Printf("[TRACE] a build of component type %s already exists; skipping the create call", expected) - b.Iteration.StoreBuild(existing.ComponentType, build) + log.Printf( + "[TRACE] a build of component type %s already exists; skipping the create call", expected, + ) + bucket.Version.StoreBuild(existing.ComponentType, build) break } } if !found { - missingbuild := expected - toCreate = append(toCreate, missingbuild) + missingBuild := expected + toCreate = append(toCreate, missingBuild) } } @@ -421,10 +460,10 @@ func (b *Bucket) populateIteration(ctx context.Context) error { go func(name string) { defer wg.Done() - log.Printf("[TRACE] registering build with iteration for %q.", name) - err := b.CreateInitialBuildForIteration(ctx, name) + log.Printf("[TRACE] registering build with version for %q.", name) + err := bucket.CreateInitialBuildForVersion(ctx, name) - if api.CheckErrorCode(err, codes.AlreadyExists) { + if hcpPackerAPI.CheckErrorCode(err, codes.AlreadyExists) { log.Printf("[TRACE] build %s already exists in Packer registry, continuing...", name) return } @@ -441,14 +480,14 @@ func (b *Bucket) populateIteration(ctx context.Context) error { return errs.ErrorOrNil() } -// IsExpectingBuildForComponent returns true if the component referenced by buildName is part of the iteration +// IsExpectingBuildForComponent returns true if the component referenced by buildName is part of the version // and is not marked as DONE on the HCP Packer registry. -func (b *Bucket) IsExpectingBuildForComponent(buildName string) bool { - if !b.Iteration.HasBuild(buildName) { +func (bucket *Bucket) IsExpectingBuildForComponent(buildName string) bool { + if !bucket.Version.HasBuild(buildName) { return false } - build, err := b.Iteration.Build(buildName) + build, err := bucket.Version.Build(buildName) if err != nil { return false } @@ -462,8 +501,8 @@ func (b *Bucket) IsExpectingBuildForComponent(buildName string) bool { // as cancelled by the HCP Packer registry service. // // Usage: defer (b.HeartbeatBuild(ctx, build, period))() -func (b *Bucket) HeartbeatBuild(ctx context.Context, build string) (func(), error) { - buildToUpdate, err := b.Iteration.Build(build) +func (bucket *Bucket) HeartbeatBuild(ctx context.Context, build string) (func(), error) { + buildToUpdate, err := bucket.Version.Build(build) if err != nil { return nil, err } @@ -484,7 +523,9 @@ func (b *Bucket) HeartbeatBuild(ctx context.Context, build string) (func(), erro tick.Stop() break outHeartbeats case <-tick.C: - _, err = b.client.UpdateBuild(ctx, + _, err = bucket.client.UpdateBuild(ctx, + bucket.Name, + bucket.Version.Fingerprint, buildToUpdate.ID, buildToUpdate.RunUUID, "", @@ -492,7 +533,7 @@ func (b *Bucket) HeartbeatBuild(ctx context.Context, build string) (func(), erro "", "", nil, - models.HashicorpCloudPackerBuildStatusRUNNING, + hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDRUNNING, nil, ) if err != nil { @@ -510,19 +551,19 @@ func (b *Bucket) HeartbeatBuild(ctx context.Context, build string) (func(), erro }, nil } -func (b *Bucket) startBuild(ctx context.Context, buildName string) error { - if !b.IsExpectingBuildForComponent(buildName) { +func (bucket *Bucket) startBuild(ctx context.Context, buildName string) error { + if !bucket.IsExpectingBuildForComponent(buildName) { return &ErrBuildAlreadyDone{ Message: "build is already done", } } - err := b.UpdateBuildStatus(ctx, buildName, models.HashicorpCloudPackerBuildStatusRUNNING) + err := bucket.UpdateBuildStatus(ctx, buildName, hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDRUNNING) if err != nil { - return fmt.Errorf("failed to update HCP Packer registry status for %q: %s", buildName, err) + return fmt.Errorf("failed to update HCP Packer Build status for %q: %s", buildName, err) } - cleanupHeartbeat, err := b.HeartbeatBuild(ctx, buildName) + cleanupHeartbeat, err := bucket.HeartbeatBuild(ctx, buildName) if err != nil { log.Printf("[ERROR] failed to start heartbeat function") } @@ -533,13 +574,13 @@ func (b *Bucket) startBuild(ctx context.Context, buildName string) error { select { case <-ctx.Done(): cleanupHeartbeat() - err := b.UpdateBuildStatus( + err := bucket.UpdateBuildStatus( context.Background(), buildName, - models.HashicorpCloudPackerBuildStatusCANCELLED) + hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDCANCELLED) if err != nil { log.Printf( - "[ERROR] failed to update HCP Packer registry status for %q: %s", + "[ERROR] failed to update HCP Packer Build status for %q: %s", buildName, err) } @@ -549,18 +590,18 @@ func (b *Bucket) startBuild(ctx context.Context, buildName string) error { log.Printf("[TRACE] done waiting for heartbeat completion") }() - b.RunningBuilds[buildName] = buildDone + bucket.RunningBuilds[buildName] = buildDone return nil } -func (b *Bucket) completeBuild( +func (bucket *Bucket) completeBuild( ctx context.Context, buildName string, - artifacts []packer.Artifact, + packerSDKArtifacts []packerSDK.Artifact, buildErr error, -) ([]packer.Artifact, error) { - doneCh, ok := b.RunningBuilds[buildName] +) ([]packerSDK.Artifact, error) { + doneCh, ok := bucket.RunningBuilds[buildName] if !ok { log.Print("[ERROR] done build does not have an entry in the heartbeat table, state will be inconsistent.") @@ -572,56 +613,56 @@ func (b *Bucket) completeBuild( } if buildErr != nil { - status := models.HashicorpCloudPackerBuildStatusFAILED + status := hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDFAILED if ctx.Err() != nil { - status = models.HashicorpCloudPackerBuildStatusCANCELLED + status = hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDCANCELLED } - err := b.UpdateBuildStatus(context.Background(), buildName, status) + err := bucket.UpdateBuildStatus(context.Background(), buildName, status) if err != nil { log.Printf("[ERROR] failed to update build %q status to FAILED: %s", buildName, err) } - return artifacts, fmt.Errorf("build failed, not uploading artifacts") + return packerSDKArtifacts, fmt.Errorf("build failed, not uploading artifacts") } - for _, art := range artifacts { - var images []registryimage.Image + for _, art := range packerSDKArtifacts { + var sdkImages []packerSDKRegistry.Image decoder, err := mapstructure.NewDecoder(&mapstructure.DecoderConfig{ - Result: &images, + Result: &sdkImages, WeaklyTypedInput: true, ErrorUnused: false, }) if err != nil { - return artifacts, fmt.Errorf( - "failed to create decoder for HCP Packer registry image: %w", + return packerSDKArtifacts, fmt.Errorf( + "failed to create decoder for HCP Packer artifact: %w", err) } - state := art.State(registryimage.ArtifactStateURI) + state := art.State(packerSDKRegistry.ArtifactStateURI) err = decoder.Decode(state) if err != nil { - return artifacts, fmt.Errorf( - "failed to obtain HCP Packer registry image from post-processor artifact: %w", + return packerSDKArtifacts, fmt.Errorf( + "failed to obtain HCP Packer artifact from post-processor artifact: %w", err) } log.Printf("[TRACE] updating artifacts for build %q", buildName) - err = b.UpdateImageForBuild(buildName, images...) + err = bucket.UpdateArtifactForBuild(buildName, sdkImages...) if err != nil { - return artifacts, fmt.Errorf("failed to add image artifact for %q: %s", buildName, err) + return packerSDKArtifacts, fmt.Errorf("failed to add artifact for %q: %s", buildName, err) } } - parErr := b.markBuildComplete(ctx, buildName) + parErr := bucket.markBuildComplete(ctx, buildName) if parErr != nil { - return artifacts, fmt.Errorf( - "failed to update Packer registry with image artifacts for %q: %s", + return packerSDKArtifacts, fmt.Errorf( + "failed to update HCP Packer artifacts for %q: %s", buildName, parErr) } - return append(artifacts, ®istryArtifact{ - BuildName: buildName, - BucketSlug: b.Slug, - IterationID: b.Iteration.ID, + return append(packerSDKArtifacts, ®istryArtifact{ + BuildName: buildName, + BucketName: bucket.Name, + VersionID: bucket.Version.ID, }), nil } diff --git a/internal/hcp/registry/types.bucket_service_test.go b/internal/hcp/registry/types.bucket_service_test.go index 6503b95fb02..a89233d686a 100644 --- a/internal/hcp/registry/types.bucket_service_test.go +++ b/internal/hcp/registry/types.bucket_service_test.go @@ -7,29 +7,29 @@ import ( "context" "testing" - "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/models" - "github.com/hashicorp/packer/internal/hcp/api" + hcpPackerModels "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/models" + hcpPackerAPI "github.com/hashicorp/packer/internal/hcp/api" ) -func TestInitialize_NewBucketNewIteration(t *testing.T) { - mockService := api.NewMockPackerClientService() +func TestInitialize_NewBucketNewVersion(t *testing.T) { + mockService := hcpPackerAPI.NewMockPackerClientService() b := &Bucket{ - Slug: "TestBucket", - client: &api.Client{ + Name: "TestBucket", + client: &hcpPackerAPI.Client{ Packer: mockService, }, } - b.Iteration = NewIteration() - err := b.Iteration.Initialize() + b.Version = NewVersion() + err := b.Version.Initialize() if err != nil { t.Errorf("unexpected failure: %v", err) } - b.Iteration.expectedBuilds = append(b.Iteration.expectedBuilds, "happycloud.image") + b.Version.expectedBuilds = append(b.Version.expectedBuilds, "happycloud.image") - err = b.Initialize(context.TODO(), models.HashicorpCloudPackerIterationTemplateTypeHCL2) + err = b.Initialize(context.TODO(), hcpPackerModels.HashicorpCloudPacker20230101TemplateTypeHCL2) if err != nil { t.Errorf("unexpected failure: %v", err) } @@ -38,19 +38,19 @@ func TestInitialize_NewBucketNewIteration(t *testing.T) { t.Errorf("expected a call to CreateBucket but it didn't happen") } - if !mockService.CreateIterationCalled { - t.Errorf("expected a call to CreateIteration but it didn't happen") + if !mockService.CreateVersionCalled { + t.Errorf("expected a call to CreateVersion but it didn't happen") } if mockService.CreateBuildCalled { t.Errorf("Didn't expect a call to CreateBuild") } - if b.Iteration.ID != "iteration-id" { - t.Errorf("expected an iteration to created but it didn't") + if b.Version.ID != "version-id" { + t.Errorf("expected a version to created but it didn't") } - err = b.populateIteration(context.TODO()) + err = b.populateVersion(context.TODO()) if err != nil { t.Errorf("unexpected failure: %v", err) } @@ -58,55 +58,55 @@ func TestInitialize_NewBucketNewIteration(t *testing.T) { t.Errorf("Expected a call to CreateBuild but it didn't happen") } - if ok := b.Iteration.HasBuild("happycloud.image"); !ok { + if ok := b.Version.HasBuild("happycloud.image"); !ok { t.Errorf("expected a basic build entry to be created but it didn't") } } func TestInitialize_UnsetTemplateTypeError(t *testing.T) { - mockService := api.NewMockPackerClientService() + mockService := hcpPackerAPI.NewMockPackerClientService() mockService.BucketAlreadyExist = true b := &Bucket{ - Slug: "TestBucket", - client: &api.Client{ + Name: "TestBucket", + client: &hcpPackerAPI.Client{ Packer: mockService, }, } - b.Iteration = NewIteration() - err := b.Iteration.Initialize() + b.Version = NewVersion() + err := b.Version.Initialize() if err != nil { t.Errorf("unexpected failure: %v", err) } - err = b.Initialize(context.TODO(), models.HashicorpCloudPackerIterationTemplateTypeTEMPLATETYPEUNSET) + err = b.Initialize(context.TODO(), hcpPackerModels.HashicorpCloudPacker20230101TemplateTypeTEMPLATETYPEUNSET) if err == nil { t.Fatalf("unexpected success") } - t.Logf("iteration creating failed as expected: %s", err) + t.Logf("version creating failed as expected: %s", err) } -func TestInitialize_ExistingBucketNewIteration(t *testing.T) { - mockService := api.NewMockPackerClientService() +func TestInitialize_ExistingBucketNewVersion(t *testing.T) { + mockService := hcpPackerAPI.NewMockPackerClientService() mockService.BucketAlreadyExist = true b := &Bucket{ - Slug: "TestBucket", - client: &api.Client{ + Name: "TestBucket", + client: &hcpPackerAPI.Client{ Packer: mockService, }, } - b.Iteration = NewIteration() - err := b.Iteration.Initialize() + b.Version = NewVersion() + err := b.Version.Initialize() if err != nil { t.Errorf("unexpected failure: %v", err) } - b.Iteration.expectedBuilds = append(b.Iteration.expectedBuilds, "happycloud.image") + b.Version.expectedBuilds = append(b.Version.expectedBuilds, "happycloud.image") - err = b.Initialize(context.TODO(), models.HashicorpCloudPackerIterationTemplateTypeHCL2) + err = b.Initialize(context.TODO(), hcpPackerModels.HashicorpCloudPacker20230101TemplateTypeHCL2) if err != nil { t.Errorf("unexpected failure: %v", err) } @@ -115,19 +115,19 @@ func TestInitialize_ExistingBucketNewIteration(t *testing.T) { t.Errorf("expected call to UpdateBucket but it didn't happen") } - if !mockService.CreateIterationCalled { - t.Errorf("expected a call to CreateIteration but it didn't happen") + if !mockService.CreateVersionCalled { + t.Errorf("expected a call to CreateVersion but it didn't happen") } if mockService.CreateBuildCalled { t.Errorf("Didn't expect a call to CreateBuild") } - if b.Iteration.ID != "iteration-id" { - t.Errorf("expected an iteration to created but it didn't") + if b.Version.ID != "version-id" { + t.Errorf("expected a version to created but it didn't") } - err = b.populateIteration(context.TODO()) + err = b.populateVersion(context.TODO()) if err != nil { t.Errorf("unexpected failure: %v", err) } @@ -135,38 +135,38 @@ func TestInitialize_ExistingBucketNewIteration(t *testing.T) { t.Errorf("Expected a call to CreateBuild but it didn't happen") } - if ok := b.Iteration.HasBuild("happycloud.image"); !ok { + if ok := b.Version.HasBuild("happycloud.image"); !ok { t.Errorf("expected a basic build entry to be created but it didn't") } } -func TestInitialize_ExistingBucketExistingIteration(t *testing.T) { - mockService := api.NewMockPackerClientService() +func TestInitialize_ExistingBucketExistingVersion(t *testing.T) { + mockService := hcpPackerAPI.NewMockPackerClientService() mockService.BucketAlreadyExist = true - mockService.IterationAlreadyExist = true + mockService.VersionAlreadyExist = true b := &Bucket{ - Slug: "TestBucket", - client: &api.Client{ + Name: "TestBucket", + client: &hcpPackerAPI.Client{ Packer: mockService, }, } - b.Iteration = NewIteration() - err := b.Iteration.Initialize() + b.Version = NewVersion() + err := b.Version.Initialize() if err != nil { t.Errorf("unexpected failure: %v", err) } - b.Iteration.expectedBuilds = append(b.Iteration.expectedBuilds, "happycloud.image") + b.Version.expectedBuilds = append(b.Version.expectedBuilds, "happycloud.image") mockService.ExistingBuilds = append(mockService.ExistingBuilds, "happycloud.image") - err = b.Initialize(context.TODO(), models.HashicorpCloudPackerIterationTemplateTypeHCL2) + err = b.Initialize(context.TODO(), hcpPackerModels.HashicorpCloudPacker20230101TemplateTypeHCL2) if err != nil { t.Errorf("unexpected failure: %v", err) } - err = b.populateIteration(context.TODO()) + err = b.populateVersion(context.TODO()) if err != nil { t.Errorf("unexpected failure: %v", err) } @@ -179,190 +179,188 @@ func TestInitialize_ExistingBucketExistingIteration(t *testing.T) { t.Errorf("expected call to UpdateBucket but it didn't happen") } - if mockService.CreateIterationCalled { - t.Errorf("unexpected a call to CreateIteration") + if mockService.CreateVersionCalled { + t.Errorf("unexpected a call to CreateVersion") } - if !mockService.GetIterationCalled { - t.Errorf("expected a call to GetIteration but it didn't happen") + if !mockService.GetVersionCalled { + t.Errorf("expected a call to GetVersion but it didn't happen") } if mockService.CreateBuildCalled { t.Errorf("unexpected a call to CreateBuild") } - if b.Iteration.ID != "iteration-id" { - t.Errorf("expected an iteration to created but it didn't") + if b.Version.ID != "version-id" { + t.Errorf("expected a version to created but it didn't") } - err = b.populateIteration(context.TODO()) + err = b.populateVersion(context.TODO()) if err != nil { t.Errorf("unexpected failure: %v", err) } - existingBuild, err := b.Iteration.Build("happycloud.image") + existingBuild, err := b.Version.Build("happycloud.image") if err != nil { t.Errorf("expected the existing build loaded from an existing bucket to be valid: %v", err) } - if existingBuild.Status != models.HashicorpCloudPackerBuildStatusUNSET { + if existingBuild.Status != hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDUNSET { t.Errorf("expected the existing build to be in the default state") } } -func TestInitialize_ExistingBucketCompleteIteration(t *testing.T) { - mockService := api.NewMockPackerClientService() +func TestInitialize_ExistingBucketCompleteVersion(t *testing.T) { + mockService := hcpPackerAPI.NewMockPackerClientService() mockService.BucketAlreadyExist = true - mockService.IterationAlreadyExist = true - mockService.IterationCompleted = true + mockService.VersionAlreadyExist = true + mockService.VersionCompleted = true mockService.BuildAlreadyDone = true b := &Bucket{ - Slug: "TestBucket", - client: &api.Client{ + Name: "TestBucket", + client: &hcpPackerAPI.Client{ Packer: mockService, }, } - b.Iteration = NewIteration() - err := b.Iteration.Initialize() + b.Version = NewVersion() + err := b.Version.Initialize() if err != nil { t.Errorf("unexpected failure: %v", err) } - b.Iteration.expectedBuilds = append(b.Iteration.expectedBuilds, "happycloud.image") + b.Version.expectedBuilds = append(b.Version.expectedBuilds, "happycloud.image") mockService.ExistingBuilds = append(mockService.ExistingBuilds, "happycloud.image") - err = b.Initialize(context.TODO(), models.HashicorpCloudPackerIterationTemplateTypeHCL2) + err = b.Initialize(context.TODO(), hcpPackerModels.HashicorpCloudPacker20230101TemplateTypeHCL2) if err == nil { t.Errorf("unexpected failure: %v", err) } - if mockService.CreateIterationCalled { - t.Errorf("unexpected call to CreateIteration") + if mockService.CreateVersionCalled { + t.Errorf("unexpected call to CreateVersion") } - if !mockService.GetIterationCalled { - t.Errorf("expected a call to GetIteration but it didn't happen") + if !mockService.GetVersionCalled { + t.Errorf("expected a call to GetVersion but it didn't happen") } if mockService.CreateBuildCalled { t.Errorf("unexpected call to CreateBuild") } - if b.Iteration.ID != "iteration-id" { - t.Errorf("expected an iteration to be returned but it wasn't") + if b.Version.ID != "version-id" { + t.Errorf("expected a version to be returned but it wasn't") } } func TestUpdateBuildStatus(t *testing.T) { - mockService := api.NewMockPackerClientService() + mockService := hcpPackerAPI.NewMockPackerClientService() mockService.BucketAlreadyExist = true - mockService.IterationAlreadyExist = true + mockService.VersionAlreadyExist = true b := &Bucket{ - Slug: "TestBucket", - client: &api.Client{ + Name: "TestBucket", + client: &hcpPackerAPI.Client{ Packer: mockService, }, } - b.Iteration = NewIteration() - err := b.Iteration.Initialize() + b.Version = NewVersion() + err := b.Version.Initialize() if err != nil { t.Errorf("unexpected failure: %v", err) } - b.Iteration.expectedBuilds = append(b.Iteration.expectedBuilds, "happycloud.image") + b.Version.expectedBuilds = append(b.Version.expectedBuilds, "happycloud.image") mockService.ExistingBuilds = append(mockService.ExistingBuilds, "happycloud.image") - err = b.Initialize(context.TODO(), models.HashicorpCloudPackerIterationTemplateTypeHCL2) + err = b.Initialize(context.TODO(), hcpPackerModels.HashicorpCloudPacker20230101TemplateTypeHCL2) if err != nil { t.Errorf("unexpected failure: %v", err) } - err = b.populateIteration(context.TODO()) + err = b.populateVersion(context.TODO()) if err != nil { t.Errorf("unexpected failure: %v", err) } - existingBuild, err := b.Iteration.Build("happycloud.image") + existingBuild, err := b.Version.Build("happycloud.image") if err != nil { t.Errorf("expected the existing build loaded from an existing bucket to be valid: %v", err) } - if existingBuild.Status != models.HashicorpCloudPackerBuildStatusUNSET { + if existingBuild.Status != hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDUNSET { t.Errorf("expected the existing build to be in the default state") } - err = b.UpdateBuildStatus(context.TODO(), "happycloud.image", models.HashicorpCloudPackerBuildStatusRUNNING) + err = b.UpdateBuildStatus(context.TODO(), "happycloud.image", hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDRUNNING) if err != nil { t.Errorf("unexpected failure for PublishBuildStatus: %v", err) } - existingBuild, err = b.Iteration.Build("happycloud.image") + existingBuild, err = b.Version.Build("happycloud.image") if err != nil { t.Errorf("expected the existing build loaded from an existing bucket to be valid: %v", err) } - if existingBuild.Status != models.HashicorpCloudPackerBuildStatusRUNNING { + if existingBuild.Status != hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDRUNNING { t.Errorf("expected the existing build to be in the running state") } } func TestUpdateBuildStatus_DONENoImages(t *testing.T) { - mockService := api.NewMockPackerClientService() + mockService := hcpPackerAPI.NewMockPackerClientService() mockService.BucketAlreadyExist = true - mockService.IterationAlreadyExist = true + mockService.VersionAlreadyExist = true b := &Bucket{ - Slug: "TestBucket", - client: &api.Client{ + Name: "TestBucket", + client: &hcpPackerAPI.Client{ Packer: mockService, }, } - b.Iteration = NewIteration() - err := b.Iteration.Initialize() + b.Version = NewVersion() + err := b.Version.Initialize() if err != nil { t.Errorf("unexpected failure: %v", err) } - b.Iteration.expectedBuilds = append(b.Iteration.expectedBuilds, "happycloud.image") + b.Version.expectedBuilds = append(b.Version.expectedBuilds, "happycloud.image") mockService.ExistingBuilds = append(mockService.ExistingBuilds, "happycloud.image") - err = b.Initialize(context.TODO(), models.HashicorpCloudPackerIterationTemplateTypeHCL2) + err = b.Initialize(context.TODO(), hcpPackerModels.HashicorpCloudPacker20230101TemplateTypeHCL2) if err != nil { t.Errorf("unexpected failure: %v", err) } - err = b.populateIteration(context.TODO()) + err = b.populateVersion(context.TODO()) if err != nil { t.Errorf("unexpected failure: %v", err) } - existingBuild, err := b.Iteration.Build("happycloud.image") + existingBuild, err := b.Version.Build("happycloud.image") if err != nil { t.Errorf("expected the existing build loaded from an existing bucket to be valid: %v", err) } - if existingBuild.Status != models.HashicorpCloudPackerBuildStatusUNSET { + if existingBuild.Status != hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDUNSET { t.Errorf("expected the existing build to be in the default state") } //nolint:errcheck - b.UpdateBuildStatus(context.TODO(), "happycloud.image", models.HashicorpCloudPackerBuildStatusRUNNING) + _ = b.UpdateBuildStatus(context.TODO(), "happycloud.image", hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDRUNNING) - err = b.UpdateBuildStatus(context.TODO(), "happycloud.image", models.HashicorpCloudPackerBuildStatusDONE) + err = b.UpdateBuildStatus(context.TODO(), "happycloud.image", hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDDONE) if err == nil { t.Errorf("expected failure for PublishBuildStatus when setting status to DONE with no images") } - existingBuild, err = b.Iteration.Build("happycloud.image") + existingBuild, err = b.Version.Build("happycloud.image") if err != nil { t.Errorf("expected the existing build loaded from an existing bucket to be valid: %v", err) } - if existingBuild.Status != models.HashicorpCloudPackerBuildStatusRUNNING { + if existingBuild.Status != hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDRUNNING { t.Errorf("expected the existing build to be in the running state") } } - -//func (b *Bucket) PublishBuildStatus(ctx context.Context, name string, status models.HashicorpCloudPackerBuildStatus) error {} diff --git a/internal/hcp/registry/types.bucket_test.go b/internal/hcp/registry/types.bucket_test.go index 9c1467ad714..57b18d6a928 100644 --- a/internal/hcp/registry/types.bucket_test.go +++ b/internal/hcp/registry/types.bucket_test.go @@ -10,22 +10,22 @@ import ( "github.com/google/go-cmp/cmp" "github.com/hashicorp/packer/hcl2template" - "github.com/hashicorp/packer/internal/hcp/api" + hcpPackerAPI "github.com/hashicorp/packer/internal/hcp/api" ) func createInitialTestBucket(t testing.TB) *Bucket { t.Helper() - bucket := NewBucketWithIteration() - err := bucket.Iteration.Initialize() + bucket := NewBucketWithVersion() + err := bucket.Version.Initialize() if err != nil { t.Errorf("failed to initialize Bucket: %s", err) return nil } - mockService := api.NewMockPackerClientService() + mockService := hcpPackerAPI.NewMockPackerClientService() mockService.TrackCalledServiceMethods = false - bucket.Slug = "TestBucket" - bucket.client = &api.Client{ + bucket.Name = "TestBucket" + bucket.client = &hcpPackerAPI.Client{ Packer: mockService, } @@ -42,20 +42,20 @@ func checkError(t testing.TB, err error) { t.Errorf("received an error during testing %s", err) } -func TestBucket_CreateInitialBuildForIteration(t *testing.T) { +func TestBucket_CreateInitialBuildForVersion(t *testing.T) { bucket := createInitialTestBucket(t) - componentName := "happycloud.image" + componentName := "happycloud.artifact" bucket.RegisterBuildForComponent(componentName) bucket.BuildLabels = map[string]string{ "version": "1.7.0", "based_off": "alpine", } - err := bucket.CreateInitialBuildForIteration(context.TODO(), componentName) + err := bucket.CreateInitialBuildForVersion(context.TODO(), componentName) checkError(t, err) - // Assert that a build stored on the iteration - build, err := bucket.Iteration.Build(componentName) + // Assert that a build stored on the version + build, err := bucket.Version.Build(componentName) if err != nil { t.Errorf("expected an initial build for %s to be created, but it failed", componentName) } @@ -80,12 +80,12 @@ func TestBucket_UpdateLabelsForBuild(t *testing.T) { }{ { desc: "no bucket or build specific labels", - buildName: "happcloud.image", + buildName: "happcloud.artifact", noDiffExpected: true, }, { desc: "bucket build labels", - buildName: "happcloud.image", + buildName: "happcloud.artifact", bucketBuildLabels: map[string]string{ "version": "1.7.0", "based_off": "alpine", @@ -95,22 +95,22 @@ func TestBucket_UpdateLabelsForBuild(t *testing.T) { }, { desc: "bucket build labels and build specific label", - buildName: "happcloud.image", + buildName: "happcloud.artifact", bucketBuildLabels: map[string]string{ "version": "1.7.0", "based_off": "alpine", }, buildLabels: map[string]string{ - "source_image": "another-happycloud-image", + "source_artifact": "another-happycloud-artifact", }, labelsCount: 3, noDiffExpected: false, }, { desc: "build specific label", - buildName: "happcloud.image", + buildName: "happcloud.artifact", buildLabels: map[string]string{ - "source_image": "another-happycloud-image", + "source_artifact": "another-happycloud-artifact", }, labelsCount: 1, noDiffExpected: false, @@ -129,11 +129,11 @@ func TestBucket_UpdateLabelsForBuild(t *testing.T) { bucket.BuildLabels[k] = v } - err := bucket.CreateInitialBuildForIteration(context.TODO(), componentName) + err := bucket.CreateInitialBuildForVersion(context.TODO(), componentName) checkError(t, err) - // Assert that the build is stored on the iteration - build, err := bucket.Iteration.Build(componentName) + // Assert that the build is stored on the version + build, err := bucket.Version.Build(componentName) if err != nil { t.Errorf("expected an initial build for %s to be created, but it failed", componentName) } @@ -161,31 +161,31 @@ func TestBucket_UpdateLabelsForBuild(t *testing.T) { func TestBucket_UpdateLabelsForBuild_withMultipleBuilds(t *testing.T) { bucket := createInitialTestBucket(t) - firstComponent := "happycloud.image" + firstComponent := "happycloud.artifact" bucket.RegisterBuildForComponent(firstComponent) - secondComponent := "happycloud.image2" + secondComponent := "happycloud.artifact2" bucket.RegisterBuildForComponent(secondComponent) - err := bucket.populateIteration(context.TODO()) + err := bucket.populateVersion(context.TODO()) checkError(t, err) err = bucket.UpdateLabelsForBuild(firstComponent, map[string]string{ - "source_image": "another-happycloud-image", + "source_artifact": "another-happycloud-artifact", }) checkError(t, err) err = bucket.UpdateLabelsForBuild(secondComponent, map[string]string{ - "source_image": "the-original-happycloud-image", - "role_name": "no-role-is-a-good-role", + "source_artifact": "the-original-happycloud-artifact", + "role_name": "no-role-is-a-good-role", }) checkError(t, err) var registeredBuilds []*Build expectedComponents := []string{firstComponent, secondComponent} for _, componentName := range expectedComponents { - // Assert that a build stored on the iteration - build, err := bucket.Iteration.Build(componentName) + // Assert that a build stored on the version + build, err := bucket.Version.Build(componentName) if err != nil { t.Errorf("expected an initial build for %s to be created, but it failed", componentName) } @@ -209,7 +209,7 @@ func TestBucket_UpdateLabelsForBuild_withMultipleBuilds(t *testing.T) { } } -func TestBucket_PopulateIteration(t *testing.T) { +func TestBucket_PopulateVersion(t *testing.T) { tc := []struct { desc string buildName string @@ -220,15 +220,15 @@ func TestBucket_PopulateIteration(t *testing.T) { noDiffExpected bool }{ { - desc: "populating iteration with existing incomplete build and no bucket build labels does nothing", - buildName: "happcloud.image", + desc: "populating version with existing incomplete build and no bucket build labels does nothing", + buildName: "happcloud.artifact", labelsCount: 0, buildCompleted: false, noDiffExpected: true, }, { - desc: "populating iteration with existing incomplete build should add bucket build labels", - buildName: "happcloud.image", + desc: "populating version with existing incomplete build should add bucket build labels", + buildName: "happcloud.artifact", bucketBuildLabels: map[string]string{ "version": "1.7.0", "based_off": "alpine", @@ -238,8 +238,8 @@ func TestBucket_PopulateIteration(t *testing.T) { noDiffExpected: true, }, { - desc: "populating iteration with existing incomplete build should update bucket build labels", - buildName: "happcloud.image", + desc: "populating version with existing incomplete build should update bucket build labels", + buildName: "happcloud.artifact", bucketBuildLabels: map[string]string{ "version": "1.7.3", "based_off": "alpine-3.14", @@ -253,8 +253,8 @@ func TestBucket_PopulateIteration(t *testing.T) { noDiffExpected: true, }, { - desc: "populating iteration with completed build should not modify any labels", - buildName: "happcloud.image", + desc: "populating version with completed build should not modify any labels", + buildName: "happcloud.artifact", bucketBuildLabels: map[string]string{ "version": "1.7.0", "based_off": "alpine", @@ -264,8 +264,8 @@ func TestBucket_PopulateIteration(t *testing.T) { noDiffExpected: false, }, { - desc: "populating iteration with existing build should only modify bucket build labels", - buildName: "happcloud.image", + desc: "populating version with existing build should only modify bucket build labels", + buildName: "happcloud.artifact", bucketBuildLabels: map[string]string{ "version": "1.7.3", "based_off": "alpine-3.14", @@ -285,39 +285,39 @@ func TestBucket_PopulateIteration(t *testing.T) { t.Setenv("HCP_PACKER_BUILD_FINGERPRINT", "test-run-"+strconv.Itoa(i)) - mockService := api.NewMockPackerClientService() + mockService := hcpPackerAPI.NewMockPackerClientService() mockService.BucketAlreadyExist = true - mockService.IterationAlreadyExist = true + mockService.VersionAlreadyExist = true mockService.BuildAlreadyDone = tt.buildCompleted - bucket := NewBucketWithIteration() - err := bucket.Iteration.Initialize() + bucket := NewBucketWithVersion() + err := bucket.Version.Initialize() if err != nil { - t.Fatalf("failed when calling NewBucketWithIteration: %s", err) + t.Fatalf("failed when calling NewBucketWithVersion: %s", err) } - bucket.Slug = "TestBucket" - bucket.client = &api.Client{ + bucket.Name = "TestBucket" + bucket.client = &hcpPackerAPI.Client{ Packer: mockService, } for k, v := range tt.bucketBuildLabels { bucket.BuildLabels[k] = v } - componentName := "happycloud.image" + componentName := "happycloud.artifact" bucket.RegisterBuildForComponent(componentName) mockService.ExistingBuilds = append(mockService.ExistingBuilds, componentName) mockService.ExistingBuildLabels = tt.buildLabels - err = bucket.populateIteration(context.TODO()) + err = bucket.populateVersion(context.TODO()) checkError(t, err) if mockService.CreateBuildCalled { t.Errorf("expected an initial build for %s to already exist, but it called CreateBuild", componentName) } - // Assert that a build stored on the iteration - build, err := bucket.Iteration.Build(componentName) + // Assert that a build stored on the version + build, err := bucket.Version.Build(componentName) if err != nil { t.Errorf("expected an existing build for %s to be stored, but it failed", componentName) } @@ -360,7 +360,7 @@ func TestReadFromHCLBuildBlock(t *testing.T) { }, }, expectedBucket: &Bucket{ - Slug: "hcp_packer_registry-block-test", + Name: "hcp_packer_registry-block-test", Description: "description from hcp_packer_registry block", BucketLabels: map[string]string{ "org": "test", diff --git a/internal/hcp/registry/types.builds.go b/internal/hcp/registry/types.builds.go index 991ef563a00..a55e9b0b9f6 100644 --- a/internal/hcp/registry/types.builds.go +++ b/internal/hcp/registry/types.builds.go @@ -6,41 +6,41 @@ package registry import ( "fmt" - "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/models" - registryimage "github.com/hashicorp/packer-plugin-sdk/packer/registry/image" + hcpPackerModels "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/models" + packerSDKRegistry "github.com/hashicorp/packer-plugin-sdk/packer/registry/image" ) // Build represents a build of a given component type for some bucket on the HCP Packer Registry. type Build struct { ID string - CloudProvider string + Platform string ComponentType string RunUUID string Labels map[string]string - Images map[string]registryimage.Image - Status models.HashicorpCloudPackerBuildStatus + Artifacts map[string]packerSDKRegistry.Image + Status hcpPackerModels.HashicorpCloudPacker20230101BuildStatus } -// NewBuildFromCloudPackerBuild converts a HashicorpCloudePackerBuild to a local build that can be tracked and published to the HCP Packer Registry. -// Any existing labels or images associated to src will be copied to the returned Build. -func NewBuildFromCloudPackerBuild(src *models.HashicorpCloudPackerBuild) (*Build, error) { +// NewBuildFromCloudPackerBuild converts a HashicorpCloudPackerBuild to a local build that can be tracked and +// published to the HCP Packer. +// Any existing labels or artifacts associated to src will be copied to the returned Build. +func NewBuildFromCloudPackerBuild(src *hcpPackerModels.HashicorpCloudPacker20230101Build) (*Build, error) { build := Build{ ID: src.ID, ComponentType: src.ComponentType, - CloudProvider: src.CloudProvider, + Platform: src.Platform, RunUUID: src.PackerRunUUID, Status: *src.Status, Labels: src.Labels, } var err error - for _, image := range src.Images { - image := image - err = build.AddImages(registryimage.Image{ - ImageID: image.ImageID, - ProviderName: build.CloudProvider, - ProviderRegion: image.Region, + for _, artifact := range src.Artifacts { + err = build.AddArtifacts(packerSDKRegistry.Image{ + ImageID: artifact.ExternalIdentifier, + ProviderName: build.Platform, + ProviderRegion: artifact.Region, }) if err != nil { @@ -51,58 +51,56 @@ func NewBuildFromCloudPackerBuild(src *models.HashicorpCloudPackerBuild) (*Build return &build, nil } -// AddLabelsToBuild merges the contents of data to the labels associated with the build. +// MergeLabels merges the contents of data to the labels associated with the build. // Duplicate keys will be updated to reflect the new value. -func (b *Build) MergeLabels(data map[string]string) { +func (build *Build) MergeLabels(data map[string]string) { if data == nil { return } - if b.Labels == nil { - b.Labels = make(map[string]string) + if build.Labels == nil { + build.Labels = make(map[string]string) } for k, v := range data { // TODO: (nywilken) Determine why we skip labels already set - //if _, ok := build.Labels[k]; ok { - //continue - //} - b.Labels[k] = v + // if _, ok := build.Labels[k]; ok { + // continue + // } + build.Labels[k] = v } } -// AddImages appends one or more images artifacts to the build. -func (b *Build) AddImages(images ...registryimage.Image) error { +// AddArtifacts appends one or more artifacts to the build. +func (build *Build) AddArtifacts(artifacts ...packerSDKRegistry.Image) error { - if b.Images == nil { - b.Images = make(map[string]registryimage.Image) + if build.Artifacts == nil { + build.Artifacts = make(map[string]packerSDKRegistry.Image) } - for _, image := range images { - image := image - - if err := image.Validate(); err != nil { - return fmt.Errorf("AddImages: failed to add image to build %q: %w", b.ComponentType, err) + for _, artifact := range artifacts { + if err := artifact.Validate(); err != nil { + return fmt.Errorf("AddArtifacts: failed to add artifact to build %q: %w", build.ComponentType, err) } - if b.CloudProvider == "" { - b.CloudProvider = image.ProviderName + if build.Platform == "" { + build.Platform = artifact.ProviderName } - b.MergeLabels(image.Labels) - b.Images[image.String()] = image + build.MergeLabels(artifact.Labels) + build.Artifacts[artifact.String()] = artifact } return nil } // IsNotDone returns true if build does not satisfy all requirements of a completed build. -// A completed build must have a valid ID, one or more Images, and its Status is HashicorpCloudPackerBuildStatusDONE. -func (b *Build) IsNotDone() bool { - hasBuildID := b.ID != "" - hasNoImages := len(b.Images) == 0 - isNotDone := b.Status != models.HashicorpCloudPackerBuildStatusDONE +// A completed build must have a valid ID, one or more Artifacts, and its Status is HashicorpCloudPacker20230101BuildStatusBUILDDONE. +func (build *Build) IsNotDone() bool { + hasBuildID := build.ID != "" + hasNoArtifacts := len(build.Artifacts) == 0 + isNotDone := build.Status != hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDDONE - return hasBuildID && hasNoImages && isNotDone + return hasBuildID && hasNoArtifacts && isNotDone } diff --git a/internal/hcp/registry/types.iterations.go b/internal/hcp/registry/types.iterations.go deleted file mode 100644 index c186a2a256d..00000000000 --- a/internal/hcp/registry/types.iterations.go +++ /dev/null @@ -1,177 +0,0 @@ -// Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: BUSL-1.1 - -package registry - -import ( - "errors" - "fmt" - "math/rand" - "os" - "strings" - "sync" - "time" - - "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2021-04-30/models" - sdkpacker "github.com/hashicorp/packer-plugin-sdk/packer" - registryimage "github.com/hashicorp/packer-plugin-sdk/packer/registry/image" - "github.com/hashicorp/packer/internal/hcp/env" - "github.com/oklog/ulid" -) - -type Iteration struct { - ID string - AncestorSlug string - Fingerprint string - RunUUID string - builds sync.Map - expectedBuilds []string -} - -type IterationOptions struct { - TemplateBaseDir string -} - -// NewIteration returns a pointer to an Iteration that can be used for storing Packer build details needed by PAR. -func NewIteration() *Iteration { - i := Iteration{ - expectedBuilds: make([]string, 0), - } - - return &i -} - -// Initialize prepares the iteration to be used with an active HCP Packer registry bucket. -func (i *Iteration) Initialize() error { - if i == nil { - return errors.New("Unexpected call to initialize for a nil Iteration") - } - - // By default we try to load a Fingerprint from the environment variable. - // If no variable is defined we generate a new fingerprint. - i.Fingerprint = os.Getenv(env.HCPPackerBuildFingerprint) - - if i.Fingerprint != "" { - return nil - } - - fp, err := ulid.New(ulid.Now(), ulid.Monotonic(rand.New(rand.NewSource(time.Now().UnixNano())), 0)) - if err != nil { - return fmt.Errorf("Failed to generate a fingerprint: %s", err) - } - i.Fingerprint = fp.String() - - return nil -} - -// StoreBuild stores a build for buildName to an active iteration. -func (i *Iteration) StoreBuild(buildName string, build *Build) { - i.builds.Store(buildName, build) -} - -// Build gets the store build associated with buildName in the active iteration. -func (i *Iteration) Build(buildName string) (*Build, error) { - build, ok := i.builds.Load(buildName) - if !ok { - return nil, errors.New("no associated build found for the name " + buildName) - } - - b, ok := build.(*Build) - if !ok { - return nil, fmt.Errorf("the build for the component %q does not appear to be a valid registry Build", buildName) - } - - return b, nil -} - -// HasBuild checks if iteration has a stored build associated with buildName. -func (i *Iteration) HasBuild(buildName string) bool { - _, ok := i.builds.Load(buildName) - - return ok -} - -// AddImageToBuild appends one or more images artifacts to the build referred to by buildName. -func (i *Iteration) AddImageToBuild(buildName string, images ...registryimage.Image) error { - build, err := i.Build(buildName) - if err != nil { - return fmt.Errorf("AddImageToBuild: %w", err) - } - - err = build.AddImages(images...) - if err != nil { - return fmt.Errorf("AddImageToBuild: %w", err) - } - - i.StoreBuild(buildName, build) - return nil -} - -// AddLabelsToBuild merges the contents of data to the labels associated with the build referred to by buildName. -func (i *Iteration) AddLabelsToBuild(buildName string, data map[string]string) error { - build, err := i.Build(buildName) - if err != nil { - return fmt.Errorf("AddLabelsToBuild: %w", err) - } - - build.MergeLabels(data) - - i.StoreBuild(buildName, build) - return nil -} - -// AddSHAToBuildLabels adds the Git SHA for the current iteration (if set) as a label for all the builds of the iteration -func (i *Iteration) AddSHAToBuildLabels(sha string) { - i.builds.Range(func(_, v any) bool { - b, ok := v.(*Build) - if !ok { - return true - } - - b.MergeLabels(map[string]string{ - "git_sha": sha, - }) - - return true - }) -} - -// RemainingBuilds returns the list of builds that are not in a DONE status -func (i *Iteration) RemainingBuilds() []*Build { - var todo []*Build - - i.builds.Range(func(k, v any) bool { - build, ok := v.(*Build) - if !ok { - // Unlikely since the builds map contains only Build instances - return true - } - - if build.Status != models.HashicorpCloudPackerBuildStatusDONE { - todo = append(todo, build) - } - return true - }) - - return todo -} - -func (i *Iteration) iterationStatusSummary(ui sdkpacker.Ui) { - rem := i.RemainingBuilds() - if rem == nil { - return - } - - buf := &strings.Builder{} - - buf.WriteString(fmt.Sprintf( - "\nIteration %q is not complete, the following builds are not done:\n\n", - i.Fingerprint)) - for _, b := range rem { - buf.WriteString(fmt.Sprintf("* %q: %s\n", b.ComponentType, b.Status)) - } - buf.WriteString("\nYou may resume work on this iteration in further Packer builds by defining the following variable in your environment:\n") - buf.WriteString(fmt.Sprintf("HCP_PACKER_BUILD_FINGERPRINT=%q", i.Fingerprint)) - - ui.Say(buf.String()) -} diff --git a/internal/hcp/registry/types.version.go b/internal/hcp/registry/types.version.go new file mode 100644 index 00000000000..391717cc0c7 --- /dev/null +++ b/internal/hcp/registry/types.version.go @@ -0,0 +1,176 @@ +// Copyright (c) HashiCorp, Inc. +// SPDX-License-Identifier: BUSL-1.1 + +package registry + +import ( + "errors" + "fmt" + "math/rand" + "os" + "strings" + "sync" + "time" + + hcpPackerModels "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/models" + sdkpacker "github.com/hashicorp/packer-plugin-sdk/packer" + packerSDKRegistry "github.com/hashicorp/packer-plugin-sdk/packer/registry/image" + "github.com/hashicorp/packer/internal/hcp/env" + "github.com/oklog/ulid" +) + +type Version struct { + ID string + Fingerprint string + RunUUID string + builds sync.Map + expectedBuilds []string +} + +type VersionOptions struct { + TemplateBaseDir string +} + +// NewVersion returns a pointer to a Version that can be used for storing Packer build details needed. +func NewVersion() *Version { + i := Version{ + expectedBuilds: make([]string, 0), + } + + return &i +} + +// Initialize prepares the version to be used with HCP Packer. +func (version *Version) Initialize() error { + if version == nil { + return errors.New("Unexpected call to initialize for a nil Version") + } + + // Bydefault we try to load a Fingerprint from the environment variable. + // If no variable is defined we generate a new fingerprint. + version.Fingerprint = os.Getenv(env.HCPPackerBuildFingerprint) + + if version.Fingerprint != "" { + return nil + } + + fp, err := ulid.New(ulid.Now(), ulid.Monotonic(rand.New(rand.NewSource(time.Now().UnixNano())), 0)) + if err != nil { + return fmt.Errorf("Failed to generate a fingerprint: %s", err) + } + version.Fingerprint = fp.String() + + return nil +} + +// StoreBuild stores a build for buildName to an active version. +func (version *Version) StoreBuild(buildName string, build *Build) { + version.builds.Store(buildName, build) +} + +// Build gets the store build associated with buildName in the active version. +func (version *Version) Build(buildName string) (*Build, error) { + build, ok := version.builds.Load(buildName) + if !ok { + return nil, errors.New("no associated build found for the name " + buildName) + } + + b, ok := build.(*Build) + if !ok { + return nil, fmt.Errorf("the build for the component %q does not appear to be a valid registry Build", buildName) + } + + return b, nil +} + +// HasBuild checks if version has a stored build associated with buildName. +func (version *Version) HasBuild(buildName string) bool { + _, ok := version.builds.Load(buildName) + + return ok +} + +// AddArtifactToBuild appends one or more artifacts to the build referred to by buildName. +func (version *Version) AddArtifactToBuild(buildName string, artifacts ...packerSDKRegistry.Image) error { + build, err := version.Build(buildName) + if err != nil { + return fmt.Errorf("AddArtifactToBuild: %w", err) + } + + err = build.AddArtifacts(artifacts...) + if err != nil { + return fmt.Errorf("AddArtifactToBuild: %w", err) + } + + version.StoreBuild(buildName, build) + return nil +} + +// AddLabelsToBuild merges the contents of data to the labels associated with the build referred to by buildName. +func (version *Version) AddLabelsToBuild(buildName string, data map[string]string) error { + build, err := version.Build(buildName) + if err != nil { + return fmt.Errorf("AddLabelsToBuild: %w", err) + } + + build.MergeLabels(data) + + version.StoreBuild(buildName, build) + return nil +} + +// AddSHAToBuildLabels adds the Git SHA for the current version (if set) as a label for all the builds of the version +func (version *Version) AddSHAToBuildLabels(sha string) { + version.builds.Range(func(_, v any) bool { + b, ok := v.(*Build) + if !ok { + return true + } + + b.MergeLabels(map[string]string{ + "git_sha": sha, + }) + + return true + }) +} + +// RemainingBuilds returns the list of builds that are not in a DONE status +func (version *Version) RemainingBuilds() []*Build { + var todo []*Build + + version.builds.Range(func(k, v any) bool { + build, ok := v.(*Build) + if !ok { + // Unlikely since the builds map contains only Build instances + return true + } + + if build.Status != hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDDONE { + todo = append(todo, build) + } + return true + }) + + return todo +} + +func (version *Version) statusSummary(ui sdkpacker.Ui) { + rem := version.RemainingBuilds() + if rem == nil { + return + } + + buf := &strings.Builder{} + + buf.WriteString(fmt.Sprintf( + "\nVersion %q is not complete, the following builds are not done:\n\n", + version.Fingerprint)) + for _, b := range rem { + buf.WriteString(fmt.Sprintf("* %q: %s\n", b.ComponentType, b.Status)) + } + buf.WriteString("\nYou may resume work on this version in further Packer builds by defining the following variable in your environment:\n") + buf.WriteString(fmt.Sprintf("HCP_PACKER_BUILD_FINGERPRINT=%q", version.Fingerprint)) + + ui.Say(buf.String()) +} diff --git a/internal/hcp/registry/types.iterations_test.go b/internal/hcp/registry/types.version_test.go similarity index 88% rename from internal/hcp/registry/types.iterations_test.go rename to internal/hcp/registry/types.version_test.go index 27e87b5798f..ab6b0e122c7 100644 --- a/internal/hcp/registry/types.iterations_test.go +++ b/internal/hcp/registry/types.version_test.go @@ -8,10 +8,10 @@ import ( "path" "testing" - git "github.com/go-git/go-git/v5" + "github.com/go-git/go-git/v5" ) -func TestIteration_Initialize(t *testing.T) { +func TestVersion_Initialize(t *testing.T) { var tc = []struct { name string fingerprint string @@ -56,7 +56,7 @@ func TestIteration_Initialize(t *testing.T) { tt.setupFn(t) } - i := NewIteration() + i := NewVersion() err := i.Initialize() if tt.errorExpected { t.Logf("%v", err) @@ -65,7 +65,7 @@ func TestIteration_Initialize(t *testing.T) { } if i.Fingerprint != "" { - t.Errorf("expected %q to result in an error with an empty iteration fingerprint, but got %q", tt.name, i.Fingerprint) + t.Errorf("expected %q to result in an error with an empty version fingerprint, but got %q", tt.name, i.Fingerprint) } return } diff --git a/website/content/docs/datasources/hcp/hcp-packer-artifact.mdx b/website/content/docs/datasources/hcp/hcp-packer-artifact.mdx new file mode 100644 index 00000000000..0261242a879 --- /dev/null +++ b/website/content/docs/datasources/hcp/hcp-packer-artifact.mdx @@ -0,0 +1,105 @@ +--- +description: | + The HCP Packer Artifact Data Source retrieves information about an + artifact from the HCP Packer Registry. This information can be used to + provide a source artifact to various Packer builders. +page_title: HCP Packer Artifact - Data Sources +--- + + + + + + +# HCP Packer Artifact Data Source + +Type: `hcp-packer-artifact` + +The `HCP Packer Artifact` Data Source retrieves information about an +artifact from the HCP Packer Registry. This information can be used to +provide a source artifact to various Packer builders. + +To get started with HCP Packer, refer to the [HCP Packer documentation](/hcp/docs/packer) or try +the [Get Started with HCP Packer tutorials](/packer/tutorials/hcp-get-started). + +~> **Note:** You will receive an error if you try to reference metadata from a deactivated or deleted registry. +An administrator can manually deactivate or delete a registry, and HCP Packer automatically deactivates registries +with billing issues. Contact [HashiCorp Support](https://support.hashicorp.com/) with questions. + +## Revoked Versions + +If an HCP Packer Version is revoked, the `hcp-packer-version` data source will fail and Packer won't proceed with +the build. Building new artifacts from a revoked artifact is not compliant. +Versions that are scheduled to be revoked will still be considered valid until the revocation date. + +## Basic Example + +Below is a fully functioning example. It stores information about an image artifact, +which can then be parsed and accessed as a variable. + +```hcl +data "hcp-packer-artifact" "example" { + bucket_name = "hardened-ubuntu-16-04" + version_fingerprint = "${data.hcp-packer-version.hardened-source.fingerprint}" + platform = "aws" + region = "us-east-1" +} +``` + +## Full Example + +This data source can be used in conjunction with the hcp-packer-version +data source to retrieve a version fingerprint using a channel. You provide the version fingerprint and channel +name to the version data source, then use the version source inside the +artifact data source, then use the artifact data source inside your source block. + +```hcl +# Retrieves information about the HCP Packer Version; a "version" can be +# thought of as all the metadata created by a single call of `packer build`. +data "hcp-packer-version" "hardened-source" { + bucket_name = "hardened-ubuntu-16-04" + channel_name = "dev" +} + +# Retrieves information about the HCP Packer Artifact; an artifact can be thought +# of as all the metadata (including the artifact names) created by a single +# "source" builder; this can include multiple artifacts so we provide a +# region to disambiguate. +data "hcp-packer-artifact" "example" { + bucket_name = "hardened-ubuntu-16-04" + version_fingerprint = data.hcp_packer_version.hardened-source.fingerprint + platform = "aws" + region = "us-east-1" +} + +# This source uses the output from a previous Packer build. By using the +# HCP Packer Registry in this way, you can easily create build pipelines where +# a single base artifact can be customized in multiple secondary layers. +source "amazon-ebs" "packer-secondary" { + source_ami = data.hcp-packer-artifact.example.external_identifier + ... +} +``` + +## Configuration Reference + +Configuration options are organized below into two categories: required and +optional. Within each category, the available options are alphabetized and +described. + +### Required: + +@include 'datasource/hcp-packer-artifact/Config-required.mdx' + +### Optional: + +~> **Note:** This data source only returns the first found artifact's metadata filtered by the given options, +from the returned list of artifacts associated with the specified version. Therefore, if multiple artifacts exist +in the same region, it will only pick one of them. In this case, you can filter artifact by a source build name +(Ex: `amazon-ebs.example`) using the `component_type` option. + +@include 'datasource/hcp-packer-artifact/Config-not-required.mdx' + +### Output Fields: + +@include 'datasource/hcp-packer-artifact/DatasourceOutput.mdx' diff --git a/website/content/docs/datasources/hcp/hcp-packer-image.mdx b/website/content/docs/datasources/hcp/hcp-packer-image.mdx index 8e1bf822337..d7312921cb4 100644 --- a/website/content/docs/datasources/hcp/hcp-packer-image.mdx +++ b/website/content/docs/datasources/hcp/hcp-packer-image.mdx @@ -1,5 +1,6 @@ --- description: | + This data source has been deprecated, please use HCP Packer Artifact data source instead. The HCP Packer Image Data Source retrieves information about an image from the HCP Packer registry. This information can be used to provide a source image to various Packer builders. @@ -8,11 +9,12 @@ page_title: HCP Packer Image - Data Sources - # HCP Packer Image Data Source +~> **Note:** This data source has been deprecated, please use [HCP Packer Artifact](/packer/docs/datasources/hcp/hcp-packer-artifact) data source instead. + Type: `hcp-packer-image` The `HCP Packer Image` Data Source retrieves information about an diff --git a/website/content/docs/datasources/hcp/hcp-packer-iteration.mdx b/website/content/docs/datasources/hcp/hcp-packer-iteration.mdx index 38c6125baee..6ad6fb3c396 100644 --- a/website/content/docs/datasources/hcp/hcp-packer-iteration.mdx +++ b/website/content/docs/datasources/hcp/hcp-packer-iteration.mdx @@ -1,5 +1,6 @@ --- description: | + This data source has been deprecated, please use HCP Packer Version data source instead. The HCP Packer Iteration Data Source retrieves information about an iteration from the HCP Packer registry. This information can be used to query HCP for a source image for various Packer builders. @@ -8,11 +9,12 @@ page_title: HCP Packer Iteration - Data Sources - # HCP Packer Iteration Data Source +~> **Note:** This data source has been deprecated, please use [HCP Packer Version](/packer/docs/datasources/hcp/hcp-packer-version) data source instead. + Type: `hcp-packer-iteration` The `HCP Packer Iteration` Data Source retrieves information about an diff --git a/website/content/docs/datasources/hcp/hcp-packer-version.mdx b/website/content/docs/datasources/hcp/hcp-packer-version.mdx new file mode 100644 index 00000000000..31b288ca4a0 --- /dev/null +++ b/website/content/docs/datasources/hcp/hcp-packer-version.mdx @@ -0,0 +1,96 @@ +--- +description: | + The HCP Packer Version Data Source retrieves information about + HCP Packer Version from the HCP Packer Registry. This information can be used to + query HCP for a source external identifier for various Packer builders. +page_title: HCP Packer Version - Data Sources +--- + + + + + + +# HCP Packer Version Data Source + +Type: `hcp-packer-version` + +The `HCP Packer Version` Data Source retrieves information about +HCP Packer Version from the HCP Packer Registry. This information can be used to +query HCP for a source external identifier for various Packer builders. + +To get started with HCP Packer, refer to the [HCP Packer documentation](/hcp/docs/packer) or try the +[Get Started with HCP Packer tutorials](/packer/tutorials/hcp-get-started). + +~> **Note:** You will receive an error if you try to reference metadata from a deactivated or deleted registry. +An administrator can manually deactivate or delete a registry, and HCP Packer automatically deactivates registries +with billing issues. Contact [HashiCorp Support](https://support.hashicorp.com/) with questions. + +## Revoked Versions + +If an HCP Packer Version is revoked, the `hcp-packer-version` data source will fail and Packer won't proceed with +the build. Building new artifacts from a revoked artifact is not compliant. +Versions that are scheduled to be revoked will still be considered valid until the revocation date. + +## Basic Example + +Below is a fully functioning example. It stores information about an HCP Packer Version, which can then be accessed as a variable. + +```hcl +data "hcp-packer-version" "hardened-source" { + bucket_name = "hardened-ubuntu-16-04" + channel_name = "dev" +} +``` + +## Full Example + +This data source can be used in conjunction with the `hcp-packer-artifact` +data source to retrieve an artifact identifier. You provide the version fingerprint and channel +name to the version data source, then use the version source inside the +artifact data source, then use the artifact data source inside your source block. + +```hcl +# Retrieves information about the HCP Packer Version; a "version" can be +# thought of as all the metadata created by a single call of `packer build`. +data "hcp-packer-version" "hardened-source" { + bucket_name = "hardened-ubuntu-16-04" + channel_name = "dev" +} + +# Retrieves information about the HCP Packer Artifact; an artifact can be thought +# of as all the metadata (including the artifact names) created by a single +# "source" builder; this can include multiple artifacts so we provide a +# region to disambiguate. +data "hcp-packer-artifact" "example" { + bucket_name = "hardened-ubuntu-16-04" + version_fingerprint = data.hcp_packer_version.hardened-source.fingerprint + platform = "aws" + region = "us-east-1" +} + +# This source uses the output from a previous Packer build. By using the +# HCP Packer Registry in this way, you can easily create build pipelines where +# a single base artifact can be customized in multiple secondary layers. +source "amazon-ebs" "packer-secondary" { + source_ami = data.hcp-packer-artifact.example.external_identifier + ... +} +``` + +## Configuration Reference + +Configuration options are organized below into two categories: required and +optional. Within each category, the available options are alphabetized and +described. + +### Required: + +@include 'datasource/hcp-packer-version/Config-required.mdx' + +There are currently no optional fields for this datasource, though we intend +to add filtering fields in the future. + +### Output Fields: + +@include 'datasource/hcp-packer-version/DatasourceOutput.mdx' diff --git a/website/content/docs/datasources/hcp/index.mdx b/website/content/docs/datasources/hcp/index.mdx index 989d3d861a1..7f5fff7616a 100644 --- a/website/content/docs/datasources/hcp/index.mdx +++ b/website/content/docs/datasources/hcp/index.mdx @@ -11,31 +11,37 @@ sidebar_title: Overview # HCP Packer Registry Data sources -The HCP Packer registry bridges the gap between image factories and image +The HCP Packer Registry bridges the gap between artifact factories and artifact deployments, allowing development and security teams to work together to create, -manage, and consume images in a centralized way. - -The HCP Packer registry stores metadata about your images, including when they -were created, where the image exists in the cloud, and what (if any) git commit -is associated with your image build. You can use the registry to track -information about the golden images your Packer builds produce, clearly -designate which images are appropriate for test and production environments, -and query for the right golden images to use in both Packer and Terraform +manage, and consume artifacts in a centralized way. + +The HCP Packer Registry stores metadata about your artifacts, including when they +were created, where the artifacts exists in the cloud, and what (if any) git commit +is associated with your build. You can use the registry to track +information about the artifacts your Packer builds produce, clearly +designate which artifacts are appropriate for test and production environments, +and query for the right artifacts to use in both Packer and Terraform configurations. Packer has two data sources that work together to retrieve information from the HCP Packer registry: +- [hcp-packer-version](/packer/docs/datasources/hcp/hcp-packer-version) - +retrieves information about an HCP Packer Version in HCP Packer Registry +- [hcp-packer-artifact](/packer/docs/datasources/hcp/hcp-packer-artifact) - retrieves +information about a specific artifact created in the HCP Packer registry + +Deprecated data sources: (Please use above given data sources instead) - [hcp-packer-iteration](/packer/docs/datasources/hcp/hcp-packer-iteration) - retrieves information about an iteration in HCP Packer registry - [hcp-packer-image](/packer/docs/datasources/hcp/hcp-packer-image) - retrieves information about a specific image created in the HCP Packer registry -These data sources are intended to be used together to determine source images +These data sources are intended to be used together to determine source artifact for pipelined Packer builds. ## How to use this plugin This plugin comes bundled with the Packer core, so you do not need to install it separately. Please install Packer v1.7.7 or above to use the latest version -of the HCP Packer registry datasources. +of the HCP Packer Registry data sources. diff --git a/website/content/docs/hcp/index.mdx b/website/content/docs/hcp/index.mdx index d908cca70cc..8063bd0dcc7 100644 --- a/website/content/docs/hcp/index.mdx +++ b/website/content/docs/hcp/index.mdx @@ -1,72 +1,120 @@ --- description: | - Packer can publish metadata for completed builds to an HCP Packer registry. Legacy JSON templates can connect to the registry using environment variables. HCL2 templates can connect using an hcp_packer_registry block. + Packer can publish metadata for completed builds to an HCP Packer Registry. Legacy JSON templates can connect to the registry using environment variables. HCL2 templates can connect using an hcp_packer_registry block. page_title: HCP Packer --- --> **Note:** On May 16th 2023, HCP introduced multi-project support to the platform. In order to use multiple projects in your organization, you will need to update Packer to version 1.9.1 or above. Starting with 1.9.1, you may specify a project ID to push builds to with the `HCP_PROJECT_ID` environment variable. If no project ID is specified, Packer will pick the project with the oldest creation date. Older versions of Packer are incompatible with multi-project support on HCP, and builds will fail for HCP organizations with multiple projects on versions before 1.9.1. +-> **Note:** On May 16th 2023, HCP introduced multi-project support to the platform. In order to use multiple projects +in your organization, you will need to update Packer to version 1.9.1 or above. Starting with 1.9.1, you may specify +a project ID to push builds to with the `HCP_PROJECT_ID` environment variable. If no project ID is specified, +Packer will pick the project with the oldest creation date. Older versions of Packer are incompatible with multi-project +support on HCP, and builds will fail for HCP organizations with multiple projects on versions before 1.9.1. # HCP Packer -The HCP Packer registry bridges the gap between image factories and image deployments, allowing development and security teams to work together to create, manage, and consume images in a centralized way. +The HCP Packer registry bridges the gap between artifact factories and artifact deployments, allowing development and +security teams to work together to create, manage, and consume artifacts in a centralized way. -The HCP Packer registry stores metadata about your images, including when they were created, where the image exists in the cloud, and what (if any) git commit is associated with your image build. You can use the registry to track information about the golden images your Packer builds produce, clearly designate which images are appropriate for test and production environments, and query for the right golden images to use in both Packer and Terraform configurations. +The HCP Packer Registry stores metadata about your artifact, including when they were created, where the artifact +exists on the external platform, and what (if any) git commit is associated with your build. You can use the registry +to track information about the artifact your Packer builds produce, clearly designate which artifact are appropriate +for test and production environments, and query for the right artifact to use in both Packer and Terraform +configurations. -You can use HCP Packer with both JSON and HCL2 templates. If you are using JSON templates, we recommend getting started with -the [HCP Packer environment variables](#hcp-packer-environment-variables) and then migrating to HCL when possible. +You can use HCP Packer with both JSON and HCL2 templates. If you are using JSON templates, we recommend getting started with +the [HCP Packer environment variables](#hcp-packer-environment-variables) and then migrating to HCL when possible. -This page summarizes the methods you can use to connect JSON and HCL2 templates to the HCP Packer registry. It also provides a full list of HCP Packer environment variables. Refer to the [Packer Template Configuration](/hcp/docs/packer/store-image-metadata/packer-template-configuration) page in the HCP Packer documentation for full configuration details and examples. +This page summarizes the methods you can use to connect JSON and HCL2 templates to the HCP Packer registry. It also +provides a full list of HCP Packer environment variables. Refer to the +[Packer Template Configuration](/hcp/docs/packer/store-image-metadata/packer-template-configuration) page in the HCP +Packer documentation for full configuration details and examples. ### HCP Packer Environment Variables -The following environment variables let you configure Packer to push image metadata to an active registry without changing your template. You can use environment variables with both JSON and HCL2 templates. Refer to [Basic Configuration With Environment Variables](/hcp/docs/packer/store-image-metadata/packer-template-configuration#basic-configuration-with-environment-variables) in the HCP Packer documentation for complete instructions and examples. +The following environment variables let you configure Packer to push artifact metadata to an active registry without +changing your template. You can use environment variables with both JSON and HCL2 templates. +Refer to [Basic Configuration With Environment Variables](/hcp/docs/packer/store-image-metadata/packer-template-configuration#basic-configuration-with-environment-variables) +in the HCP Packer documentation for complete instructions and examples. You must set the following environment variables to enable Packer to push metadata to a registry. -- `HCP_CLIENT_ID` - The HCP client ID of a HashiCorp Cloud Platform service principle that Packer can use to authenticate to an HCP Packer registry. +- `HCP_CLIENT_ID` - The HCP client ID of a HashiCorp Cloud Platform service principle that Packer can use to +authenticate to an HCP Packer Registry. -- `HCP_CLIENT_SECRET` - The HCP client secret of the HashiCorp Cloud Platform service principle that Packer can use to authenticate to an HCP Packer registry. +- `HCP_CLIENT_SECRET` - The HCP client secret of the HashiCorp Cloud Platform service principle that Packer +can use to authenticate to an HCP Packer Registry. -- `HCP_PACKER_BUCKET_NAME` - The name of the image bucket where you want HCP Packer to store image metadata from builds associated with your template. HCP Packer automatically creates the image bucket if it does not already exist. If your HCL2 template contains an `hcp_packer_registry` block, the bucket name specified in the configuration will be overwritten by this environment variable. +- `HCP_PACKER_BUCKET_NAME` - The name of the HCP Packer Bucket where you want HCP Packer to store artifact metadata +from builds associated with your template. HCP Packer automatically creates the bucket if it does not already exist. +If your HCL2 template contains an `hcp_packer_registry` block, the bucket name specified in the configuration will be +overwritten by this environment variable. You can set these additional environment variables to control how metadata is pushed to the registry. -- `HCP_PACKER_BUILD_FINGERPRINT` - A unique identifier assigned to each iteration. To reuse a fingerprint that is associated with an existing incomplete iteration you must set this environment variable. Refer to [Iteration Fingerprinting](#iteration-fingerprinting) for usage details. +- `HCP_PACKER_BUILD_FINGERPRINT` - A unique identifier assigned to each version. To reuse a fingerprint that is +associated with an existing incomplete version you must set this environment variable. Refer to +[Version Fingerprinting](#version-fingerprinting) for usage details. -- `HCP_PACKER_REGISTRY` - When set, Packer does not push image metadata to HCP Packer from an otherwise configured template. Allowed values are [0|OFF]. +- `HCP_PACKER_REGISTRY` - When set, Packer does not push artifact metadata to HCP Packer from an otherwise +configured template. Allowed values are [0|OFF]. -- `HCP_ORGANIZATION_ID` - The ID of the HCP organization linked to your service principal. This is environment variable is not required and available for the sole purpose of keeping parity with the HCP SDK authentication options. Its use may change in a future release. +- `HCP_ORGANIZATION_ID` - The ID of the HCP organization linked to your service principal. This is environment +variable is not required and available for the sole purpose of keeping parity with the HCP SDK authentication options. +Its use may change in a future release. -- `HCP_PROJECT_ID` - The ID of the HCP project to use. This is useful if your service principal has access to multiple projects, as by default Packer will pick the one created first as target. +- `HCP_PROJECT_ID` - The ID of the HCP project to use. This is useful if your service principal has access to multiple +projects, as by default Packer will pick the one created first as target. --> **Note**: The HCP_PROJECT_ID environment variable must be set if you're authenticating with a project-level service principal, otherwise Packer will attempt to get the list of projects for an organization and error due to a lack of permissions for a project-level service principal. This is supported starting with Packer 1.9.3; older versions of Packer do not support using project-level service principals. +-> **Note**: The HCP_PROJECT_ID environment variable must be set if you're authenticating with a project-level service +principal, otherwise Packer will attempt to get the list of projects for an organization and error due to a lack of +permissions for a project-level service principal. This is supported starting with Packer 1.9.3; older versions of +Packer do not support using project-level service principals. ### HCP Packer Registry Block -The only metadata that Packer can infer from a template with the basic configuration are the build name and build fingerprint. For HCL2 templates, we recommend adding the `hcp_packer_registry` block to your template so that you can customize the metadata that Packer sends to the registry. +The only metadata that Packer can infer from a template with the basic configuration are the build name and build fingerprint. +For HCL2 templates, we recommend adding the `hcp_packer_registry` block to your template so that you can customize +the metadata that Packer sends to the registry. The `hcp_packer_registry` block is only available for HCL2 Packer templates. There is no [`PACKER_CONFIG`](/packer/docs/configure#packer-s-config-file) equivalent for JSON. -Refer to [`hcp_packer_registry`](/packer/docs/templates/hcl_templates/blocks/build/hcp_packer_registry) for a full list of configuration arguments. Refer to [Custom Configuration](/hcp/docs/packer/store-image-metadata/packer-template-configuration#custom-configuration) in the HCP Packer documentation for information and examples about how to customize image metadata. +Refer to [`hcp_packer_registry`](/packer/docs/templates/hcl_templates/blocks/build/hcp_packer_registry) for a full list +of configuration arguments. Refer to [Custom Configuration](/hcp/docs/packer/store-image-metadata/packer-template-configuration#custom-configuration) +in the HCP Packer documentation for information and examples about how to customize artifact metadata. -### Iteration Fingerprinting +### Version Fingerprinting -Packer uses a unique fingerprint for tracking the completion of builds associated to an iteration. By default a fingerprint is automatically generated by Packer during each invocation of `packer build`, unless a fingerprint is manually provided via the `HCP_PACKER_BUILD_FINGERPRINT` environment variable. +Packer uses a unique fingerprint for tracking the completion of builds associated to a version. By default a fingerprint +is automatically generated by Packer during each invocation of `packer build`, unless a fingerprint is manually provided +via the `HCP_PACKER_BUILD_FINGERPRINT` environment variable. -In versions before 1.9.0, this fingerprint was computed from the Git SHA of the current HEAD in which your template is stored. If you were running builds using a non Git managed template, you had to set the `HCP_PACKER_BUILD_FINGERPRINT` environment variable prior to invoking `packer build`. -Starting with Packer 1.9.0, fingerprint generation does not rely on Git at all, and instead Packer now generates a Unique Lexicographically sortable Identifier (ULID) as the fingerprint for every `packer build` invocation. +In versions before 1.9.0, this fingerprint was computed from the Git SHA of the current HEAD in which your template is +stored. If you were running builds using a non Git managed template, you had to set the `HCP_PACKER_BUILD_FINGERPRINT` +environment variable prior to invoking `packer build`. +Starting with Packer 1.9.0, fingerprint generation does not rely on Git at all, and instead Packer now generates +a Unique Lexicographically sortable Identifier (ULID) as the fingerprint for every `packer build` invocation. -#### Fingerprints and Incomplete Iterations +#### Fingerprints and Incomplete Versions -When you build a template with Packer, there's always a chance that it does not succeed because of a network issue, a provisioning failure, or some upstream error. When that happens, Packer will output the generated fingerprint associated with the incomplete iteration so that you can resume building that iteration using the `HCP_PACKER_BUILD_FINGERPRINT` environment variable; an iteration can be resumed until it is marked as complete. This environment variable is necessary for resuming an incomplete iteration, otherwise Packer will create a new iteration for the build. +When you build a template with Packer, there's always a chance that it does not succeed because of a network issue, +a provisioning failure, or some upstream error. When that happens, Packer will output the generated fingerprint +associated with the incomplete version so that you can resume building that version using the `HCP_PACKER_BUILD_FINGERPRINT` +environment variable; a version can be resumed until it is marked as complete. This environment variable is necessary +for resuming an incomplete version, otherwise Packer will create a new version for the build. There are two alternatives for when and how to set your own fingerprint: -* You can set it prior to invoking `packer build` for the first time on this template. This will require the fingerprint to be unique, otherwise Packer will attempt to continue the iteration with the same fingerprint. -* You can invoke `packer build` on the template, and if it fails, you can then get the fingerprint from the output of the command and set it for subsequent runs, Packer will then continue building this iteration. +* You can set it prior to invoking `packer build` for the first time on this template. This will require the +fingerprint to be unique, otherwise Packer will attempt to continue the version with the same fingerprint. +* You can invoke `packer build` on the template, and if it fails, you can then get the fingerprint from the output of +the command and set it for subsequent runs, Packer will then continue building this version. -The first alternative is recommended for CI environments, as you can use environment variables from the CI to generate a unique, deterministic, fingerprint, and then re-use this in case the step fails for any reason. This will let you continue building the same iteration, rather than creating a new one on each invocation. +The first alternative is recommended for CI environments, as you can use environment variables from the CI to generate +a unique, deterministic, fingerprint, and then re-use this in case the step fails for any reason. This will let you +continue building the same version, rather than creating a new one on each invocation. -The second alternative is good for local builds, as you can interact with the build environment directly, and therefore can decide if you want to continue building an iteration by setting the fingerprint provided by Packer in case of failure. +The second alternative is good for local builds, as you can interact with the build environment directly, and therefore +can decide if you want to continue building a version by setting the fingerprint provided by Packer in case of failure. -Please note that in all cases, an iteration can only be continued if it has not completed yet. Once an iteration is complete, it cannot be modified, and you will have to create a new one. +Please note that in all cases, a version can only be continued if it has not completed yet. Once a version is +complete, it cannot be modified, and you will have to create a new one. diff --git a/website/content/docs/index.mdx b/website/content/docs/index.mdx index 5fd386e1dc7..b4ab7cf0cd6 100644 --- a/website/content/docs/index.mdx +++ b/website/content/docs/index.mdx @@ -12,6 +12,8 @@ To install Packer and learn the standard Packer workflow, try the [Get Started t ## HCP Packer -The HCP Packer registry stores metadata about your images. You can use the registry to track information about golden images from your Packer builds, clearly designate which images are appropriate for test and production environments, and query for the right images to use in both Packer and Terraform configurations. +The HCP Packer registry stores metadata about your artifacts. You can use the registry to track information about +artifacts from your Packer builds, clearly designate which artifacts are appropriate for test and production +environments, and query for the right artifacts to use in both Packer and Terraform configurations. To get started, visit the [HCP Packer documentation](/hcp/docs/packer) or try the [Get Started with HCP Packer tutorials](/packer/tutorials/hcp-get-started). diff --git a/website/content/partials/datasource/hcp-packer-artifact/Config-not-required.mdx b/website/content/partials/datasource/hcp-packer-artifact/Config-not-required.mdx new file mode 100644 index 00000000000..f8b0957fe28 --- /dev/null +++ b/website/content/partials/datasource/hcp-packer-artifact/Config-not-required.mdx @@ -0,0 +1,6 @@ + + +- `component_type` (string) - The specific Packer builder used to create the artifact. + For example, "amazon-ebs.example" + + diff --git a/website/content/partials/datasource/hcp-packer-artifact/Config-required.mdx b/website/content/partials/datasource/hcp-packer-artifact/Config-required.mdx new file mode 100644 index 00000000000..2053ddc1d66 --- /dev/null +++ b/website/content/partials/datasource/hcp-packer-artifact/Config-required.mdx @@ -0,0 +1,22 @@ + + +- `bucket_name` (string) - The name of the bucket your artifact is in. + +- `channel_name` (string) - The name of the channel to use when retrieving your artifact. + Either `channel_name` or `version_fingerprint` MUST be set. + If using several artifacts from a single version, you may prefer sourcing a version first, + and referencing it for subsequent uses, as every `hcp_packer_artifact` with the channel set will generate a + potentially billable HCP Packer request, but if several `hcp_packer_artifact`s use a shared `hcp_packer_version` + that will only generate one potentially billable request. + +- `version_fingerprint` (string) - The fingerprint of the version to use when retrieving your artifact. + Either this or `channel_name` MUST be set. + Mutually exclusive with `channel_name` + +- `platform` (string) - The name of the platform that your artifact is for. + For example, "aws", "azure", or "gce". + +- `region` (string) - The name of the region your artifact is in. + For example "us-east-1". + + diff --git a/website/content/partials/datasource/hcp-packer-artifact/DatasourceOutput.mdx b/website/content/partials/datasource/hcp-packer-artifact/DatasourceOutput.mdx new file mode 100644 index 00000000000..dcd90f59092 --- /dev/null +++ b/website/content/partials/datasource/hcp-packer-artifact/DatasourceOutput.mdx @@ -0,0 +1,31 @@ + + +- `platform` (string) - The name of the platform that the artifact exists in. + For example, "aws", "azure", or "gce". + +- `component_type` (string) - The specific Packer builder or post-processor used to create the artifact. + +- `created_at` (string) - The date and time at which the artifact was created. + +- `build_id` (string) - The ID of the build that created the artifact. This is a ULID, which is a + unique identifier similar to a UUID. It is created by the HCP Packer + Registry when a build is first created, and is unique to this build. + +- `version_id` (string) - The version ID. This is a ULID, which is a unique identifier similar + to a UUID. It is created by the HCP Packer Registry when a version is + first created, and is unique to this version. + +- `channel_id` (string) - The ID of the channel used to query the version. This value will be empty if the `version_fingerprint` was used + directly instead of a channel. + +- `packer_run_uuid` (string) - The UUID associated with the Packer run that created this artifact. + +- `external_identifier` (string) - Identifier or URL of the remote artifact as given by a build. + For example, ami-12345. + +- `region` (string) - The region as given by `packer build`. eg. "ap-east-1". + For locally managed clouds, this may map instead to a cluster, server or datastore. + +- `labels` (map[string]string) - The key:value metadata labels associated with this build. + + diff --git a/website/content/partials/datasource/hcp-packer-image/Config-required.mdx b/website/content/partials/datasource/hcp-packer-image/Config-required.mdx index cca6bec0984..95abfd1fe85 100644 --- a/website/content/partials/datasource/hcp-packer-image/Config-required.mdx +++ b/website/content/partials/datasource/hcp-packer-image/Config-required.mdx @@ -7,9 +7,9 @@ Mutually exclusive with `iteration_id`. If using several images from a single iteration, you may prefer sourcing an iteration first, and referencing it for subsequent uses, - as every `hcp_packer_image` with the channel set will generate a + as every `hcp-packer-image` with the channel set will generate a potentially billable HCP Packer request, but if several - `hcp_packer_image`s use a shared `hcp_packer_iteration` that will + `hcp-packer-image`s use a shared `hcp-packer-iteration` that will only generate one potentially billable request. - `iteration_id` (string) - The ID of the iteration to use when retrieving your image diff --git a/website/content/partials/datasource/hcp-packer-version/Config-required.mdx b/website/content/partials/datasource/hcp-packer-version/Config-required.mdx new file mode 100644 index 00000000000..f97aced7e3c --- /dev/null +++ b/website/content/partials/datasource/hcp-packer-version/Config-required.mdx @@ -0,0 +1,7 @@ + + +- `bucket_name` (string) - The bucket name in the HCP Packer Registry. + +- `channel_name` (string) - The channel name in the given bucket to use for retrieving the version. + + diff --git a/website/content/partials/datasource/hcp-packer-version/DatasourceOutput.mdx b/website/content/partials/datasource/hcp-packer-version/DatasourceOutput.mdx new file mode 100644 index 00000000000..3a14240ce03 --- /dev/null +++ b/website/content/partials/datasource/hcp-packer-version/DatasourceOutput.mdx @@ -0,0 +1,25 @@ + + +- `author_id` (string) - Name of the author who created this version. + +- `bucket_name` (string) - The name of the bucket that this version is associated with. + +- `status` (string) - Current state of the version. + +- `created_at` (string) - The date the version was created. + +- `fingerprint` (string) - The fingerprint of the version; this is a unique identifier set by the Packer build + that created this version. + +- `id` (string) - The version ID. This is a ULID, which is a unique identifier similar + to a UUID. It is created by the HCP Packer Registry when a version is + first created, and is unique to this version. + +- `name` (string) - The version name is created by the HCP Packer Registry once a version is + "complete". Incomplete or failed versions currently default to having a name "v0". + +- `updated_at` (string) - The date when this version was last updated. + +- `channel_id` (string) - The ID of the channel used to query this version. + + diff --git a/website/data/docs-nav-data.json b/website/data/docs-nav-data.json index 7c7e110d518..807fb16f968 100644 --- a/website/data/docs-nav-data.json +++ b/website/data/docs-nav-data.json @@ -729,6 +729,14 @@ "title": "Overview", "path": "datasources/hcp" }, + { + "title": "Version", + "path": "datasources/hcp/hcp-packer-version" + }, + { + "title": "Artifact", + "path": "datasources/hcp/hcp-packer-artifact" + }, { "title": "Iteration", "path": "datasources/hcp/hcp-packer-iteration" From 12b8c885a3f80459aa35d06da376f845cfaee4cc Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 25 Jan 2024 11:32:18 -0500 Subject: [PATCH 275/381] Update error messaging for HCP incompatible plugin builds (#12800) * Update error messaging for HCP incompatible plugin builds * Update command/build.go Co-authored-by: Lucas Bajolet <105649352+lbajolet-hashicorp@users.noreply.github.com> --------- Co-authored-by: Lucas Bajolet <105649352+lbajolet-hashicorp@users.noreply.github.com> --- command/build.go | 18 +++++++++++++++++- internal/hcp/registry/types.bucket.go | 2 +- internal/hcp/registry/types.version.go | 2 +- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/command/build.go b/command/build.go index 7d231a5b7b3..c0a4d8c01aa 100644 --- a/command/build.go +++ b/command/build.go @@ -25,6 +25,10 @@ import ( "github.com/posener/complete" ) +const ( + hcpReadyIntegrationURL = "https://developer.hashicorp.com/packer/integrations?flags=hcp-ready" +) + type BuildCommand struct { Meta } @@ -202,6 +206,8 @@ func (c *BuildCommand) RunContext(buildCtx context.Context, cla *BuildArgs) int m map[string]error }{m: make(map[string]error)} limitParallel := semaphore.NewWeighted(cla.ParallelBuilds) + + var hasPossibleIncompatibleHCPIntegration bool for i := range builds { if err := buildCtx.Err(); err != nil { log.Println("Interrupted, not going to start any more builds.") @@ -267,12 +273,13 @@ func (c *BuildCommand) RunContext(buildCtx context.Context, cla *BuildArgs) int writeDiags(c.Ui, nil, hcl.Diagnostics{ &hcl.Diagnostic{ Summary: fmt.Sprintf( - "failed to complete HCP-enabled build %q", + "publishing build metadata to HCP Packer for %q failed", name), Severity: hcl.DiagError, Detail: hcperr.Error(), }, }) + hasPossibleIncompatibleHCPIntegration = true } if err != nil { @@ -384,6 +391,15 @@ func (c *BuildCommand) RunContext(buildCtx context.Context, cla *BuildArgs) int c.Ui.Say("\n==> Builds finished but no artifacts were created.") } + if hasPossibleIncompatibleHCPIntegration { + msg := fmt.Sprintf(` +It looks like one or more plugins in your build may be incompatible with HCP Packer. +Check that you are using an HCP Ready integration before trying again: +%s`, hcpReadyIntegrationURL) + + c.Ui.Error(msg) + } + if len(errs.m) > 0 { // If any errors occurred, exit with a non-zero exit status ret = 1 diff --git a/internal/hcp/registry/types.bucket.go b/internal/hcp/registry/types.bucket.go index b8f62a7b2f6..00b40e34568 100644 --- a/internal/hcp/registry/types.bucket.go +++ b/internal/hcp/registry/types.bucket.go @@ -641,7 +641,7 @@ func (bucket *Bucket) completeBuild( err = decoder.Decode(state) if err != nil { return packerSDKArtifacts, fmt.Errorf( - "failed to obtain HCP Packer artifact from post-processor artifact: %w", + "failed to obtain HCP Packer compliant artifact: %w", err) } log.Printf("[TRACE] updating artifacts for build %q", buildName) diff --git a/internal/hcp/registry/types.version.go b/internal/hcp/registry/types.version.go index 391717cc0c7..ae8edb86931 100644 --- a/internal/hcp/registry/types.version.go +++ b/internal/hcp/registry/types.version.go @@ -164,7 +164,7 @@ func (version *Version) statusSummary(ui sdkpacker.Ui) { buf := &strings.Builder{} buf.WriteString(fmt.Sprintf( - "\nVersion %q is not complete, the following builds are not done:\n\n", + "\nVersion %q is incomplete, the following builds are missing artifact metadata:\n\n", version.Fingerprint)) for _, b := range rem { buf.WriteString(fmt.Sprintf("* %q: %s\n", b.ComponentType, b.Status)) From 91ce35f439d2bd5c65b7d2e31165e481deccb8a9 Mon Sep 17 00:00:00 2001 From: Devashish Date: Fri, 26 Jan 2024 11:53:57 -0500 Subject: [PATCH 276/381] Expose versionFingerprint instead of versionId from packer template --- internal/hcp/registry/hcl.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/hcp/registry/hcl.go b/internal/hcp/registry/hcl.go index e0af421ba38..23c5af7ccd9 100644 --- a/internal/hcp/registry/hcl.go +++ b/internal/hcp/registry/hcl.go @@ -47,10 +47,11 @@ func (h *HCLRegistry) PopulateVersion(ctx context.Context) error { } versionID := h.bucket.Version.ID + versionFingerprint := h.bucket.Version.Fingerprint // FIXME: Remove h.configuration.HCPVars["iterationID"] = cty.StringVal(versionID) - h.configuration.HCPVars["versionID"] = cty.StringVal(versionID) + h.configuration.HCPVars["versionFingerprint"] = cty.StringVal(versionFingerprint) sha, err := getGitSHA(h.configuration.Basedir) if err != nil { From cbc16cfed51dbc011658d365b3531ab3d0116848 Mon Sep 17 00:00:00 2001 From: Devashish Date: Fri, 26 Jan 2024 12:04:53 -0500 Subject: [PATCH 277/381] Add versionFingerprint to EvalContext --- hcl2template/types.packer_config.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/hcl2template/types.packer_config.go b/hcl2template/types.packer_config.go index 10963226160..b88dfe4d35c 100644 --- a/hcl2template/types.packer_config.go +++ b/hcl2template/types.packer_config.go @@ -9,7 +9,7 @@ import ( "strings" "github.com/gobwas/glob" - hcl "github.com/hashicorp/hcl/v2" + "github.com/hashicorp/hcl/v2" "github.com/hashicorp/hcl/v2/hcldec" "github.com/hashicorp/hcl/v2/hclsyntax" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" @@ -128,6 +128,14 @@ func (cfg *PackerConfig) EvalContext(ctx BlockContext, variables map[string]cty. }) } + versionFingerprint, ok := cfg.HCPVars["versionFingerprint"] + if ok { + ectx.Variables[packerAccessor] = cty.ObjectVal(map[string]cty.Value{ + "version": cty.StringVal(cfg.CorePackerVersionString), + "versionFingerprint": versionFingerprint, + }) + } + // In the future we'd like to load and execute HCL blocks using a graph // dependency tree, so that any block can use any block whatever the // order. From b77d581cdabbd8876a6e739fe189dced476ebe11 Mon Sep 17 00:00:00 2001 From: Devashish Date: Fri, 26 Jan 2024 12:16:10 -0500 Subject: [PATCH 278/381] Add the deprecation warning and update docs --- hcl2template/types.packer_config.go | 8 ++++++-- .../hcl_templates/contextual-variables.mdx | 20 +++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/hcl2template/types.packer_config.go b/hcl2template/types.packer_config.go index b88dfe4d35c..f8343cfd697 100644 --- a/hcl2template/types.packer_config.go +++ b/hcl2template/types.packer_config.go @@ -5,6 +5,7 @@ package hcl2template import ( "fmt" + "log" "sort" "strings" @@ -110,8 +111,9 @@ func (cfg *PackerConfig) EvalContext(ctx BlockContext, variables map[string]cty. }), buildAccessor: cty.UnknownVal(cty.EmptyObject), packerAccessor: cty.ObjectVal(map[string]cty.Value{ - "version": cty.StringVal(cfg.CorePackerVersionString), - "iterationID": cty.UnknownVal(cty.String), + "version": cty.StringVal(cfg.CorePackerVersionString), + "iterationID": cty.UnknownVal(cty.String), + "versionFingerprint": cty.UnknownVal(cty.String), }), pathVariablesAccessor: cty.ObjectVal(map[string]cty.Value{ "cwd": cty.StringVal(strings.ReplaceAll(cfg.Cwd, `\`, `/`)), @@ -122,6 +124,8 @@ func (cfg *PackerConfig) EvalContext(ctx BlockContext, variables map[string]cty. iterID, ok := cfg.HCPVars["iterationID"] if ok { + log.Printf("[WARN] Deprecation: Contextual Variable `iterationID` has been deprecated packer context. " + + "Please use `versionFingerprint` variable instead.") ectx.Variables[packerAccessor] = cty.ObjectVal(map[string]cty.Value{ "version": cty.StringVal(cfg.CorePackerVersionString), "iterationID": iterID, diff --git a/website/content/docs/templates/hcl_templates/contextual-variables.mdx b/website/content/docs/templates/hcl_templates/contextual-variables.mdx index b755e1082b7..c091313c671 100644 --- a/website/content/docs/templates/hcl_templates/contextual-variables.mdx +++ b/website/content/docs/templates/hcl_templates/contextual-variables.mdx @@ -132,6 +132,8 @@ parenthesis may through off your shell escaping otherwise. # HCP Packer Iteration ID +~> **Note**: Deprecation: Contextual Variable `iterationID` has been deprecated packer context. Please use `versionFingerprint` variable instead. + If your build is pushing metadata to the HCP Packer registry, this variable is set to the value of the Iteration ID associated with this run. @@ -145,6 +147,22 @@ source "amazon-ebs" "cannonical-ubuntu-server" { } ``` +# HCP Packer Version Fingerprint + +If your build is pushing metadata to the HCP Packer registry, this variable is +set to the value of the Version Fingerprint associated with this run. + +```hcl +source "amazon-ebs" "cannonical-ubuntu-server" { + ami_name = "packer-example" + // ... + run_volume_tags = { + hcp_version_fingerprint = packer.versionFingerprint + } +} +``` + + ```shell-session ==> vanilla.amazon-ebs.cannonical-ubuntu-server: Adding tags to source instance vanilla.amazon-ebs.cannonical-ubuntu-server: Adding tag: "Name": "Packer Builder" @@ -158,6 +176,8 @@ You can also add this value to post-processors, for example to add to a manifest output = "manifest.json" strip_path = true custom_data = { + version_fingerprint = "${packer.versionFingerprint}" + // `packer.iterationID` has been deprecated. iteration = "${packer.iterationID}" } } From 14ce2a559ce73801df259fe45c2f69392f18a5e6 Mon Sep 17 00:00:00 2001 From: Devashish Date: Fri, 26 Jan 2024 12:24:53 -0500 Subject: [PATCH 279/381] fix shell session in the docs --- .../templates/hcl_templates/contextual-variables.mdx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/website/content/docs/templates/hcl_templates/contextual-variables.mdx b/website/content/docs/templates/hcl_templates/contextual-variables.mdx index c091313c671..fcf9f9855ec 100644 --- a/website/content/docs/templates/hcl_templates/contextual-variables.mdx +++ b/website/content/docs/templates/hcl_templates/contextual-variables.mdx @@ -147,6 +147,12 @@ source "amazon-ebs" "cannonical-ubuntu-server" { } ``` +```shell-session +==> vanilla.amazon-ebs.cannonical-ubuntu-server: Adding tags to source instance + vanilla.amazon-ebs.cannonical-ubuntu-server: Adding tag: "Name": "Packer Builder" + vanilla.amazon-ebs.cannonical-ubuntu-server: Adding tag: "hcp_iteration_id": "01FHGF3M2AK4TS6PCZES4VX5E7" +``` + # HCP Packer Version Fingerprint If your build is pushing metadata to the HCP Packer registry, this variable is @@ -162,11 +168,10 @@ source "amazon-ebs" "cannonical-ubuntu-server" { } ``` - ```shell-session ==> vanilla.amazon-ebs.cannonical-ubuntu-server: Adding tags to source instance vanilla.amazon-ebs.cannonical-ubuntu-server: Adding tag: "Name": "Packer Builder" - vanilla.amazon-ebs.cannonical-ubuntu-server: Adding tag: "hcp_iteration_id": "01FHGF3M2AK4TS6PCZES4VX5E7" + vanilla.amazon-ebs.cannonical-ubuntu-server: Adding tag: "hcp_version_fingerprint": "01FHGF3M2AK4TS6PCZES4VX5E74tf" ``` You can also add this value to post-processors, for example to add to a manifest file: From 4b591d69372e8a28913f106c4135fed26f305e1b Mon Sep 17 00:00:00 2001 From: Devashish Date: Fri, 26 Jan 2024 14:24:59 -0500 Subject: [PATCH 280/381] Add PR suggestions --- hcl2template/types.packer_config.go | 24 +++--- .../hcl_templates/contextual-variables.mdx | 81 ++++++++++++++----- 2 files changed, 74 insertions(+), 31 deletions(-) diff --git a/hcl2template/types.packer_config.go b/hcl2template/types.packer_config.go index f8343cfd697..0f547b22413 100644 --- a/hcl2template/types.packer_config.go +++ b/hcl2template/types.packer_config.go @@ -5,7 +5,6 @@ package hcl2template import ( "fmt" - "log" "sort" "strings" @@ -122,24 +121,23 @@ func (cfg *PackerConfig) EvalContext(ctx BlockContext, variables map[string]cty. }, } + packerVars := map[string]cty.Value{ + "version": cty.StringVal(cfg.CorePackerVersionString), + "iterationID": cty.UnknownVal(cty.String), + "versionFingerprint": cty.UnknownVal(cty.String), + } + iterID, ok := cfg.HCPVars["iterationID"] if ok { - log.Printf("[WARN] Deprecation: Contextual Variable `iterationID` has been deprecated packer context. " + - "Please use `versionFingerprint` variable instead.") - ectx.Variables[packerAccessor] = cty.ObjectVal(map[string]cty.Value{ - "version": cty.StringVal(cfg.CorePackerVersionString), - "iterationID": iterID, - }) + packerVars["iterationID"] = iterID } - - versionFingerprint, ok := cfg.HCPVars["versionFingerprint"] + versionFP, ok := cfg.HCPVars["versionFingerprint"] if ok { - ectx.Variables[packerAccessor] = cty.ObjectVal(map[string]cty.Value{ - "version": cty.StringVal(cfg.CorePackerVersionString), - "versionFingerprint": versionFingerprint, - }) + packerVars["versionFingerprint"] = versionFP } + ectx.Variables[packerAccessor] = cty.ObjectVal(packerVars) + // In the future we'd like to load and execute HCL blocks using a graph // dependency tree, so that any block can use any block whatever the // order. diff --git a/website/content/docs/templates/hcl_templates/contextual-variables.mdx b/website/content/docs/templates/hcl_templates/contextual-variables.mdx index fcf9f9855ec..03c04d82c86 100644 --- a/website/content/docs/templates/hcl_templates/contextual-variables.mdx +++ b/website/content/docs/templates/hcl_templates/contextual-variables.mdx @@ -132,25 +132,48 @@ parenthesis may through off your shell escaping otherwise. # HCP Packer Iteration ID -~> **Note**: Deprecation: Contextual Variable `iterationID` has been deprecated packer context. Please use `versionFingerprint` variable instead. +~> **Note**: The `packer.iterationID` variable is now deprecated and will be removed in a future version of Packer. HCP Packer Versions should be accessed with their fingerprint instead. The `packer.versionFingerprint` variable is now exposed to be used in its stead with the new HCP Packer data sources. If your build is pushing metadata to the HCP Packer registry, this variable is set to the value of the Iteration ID associated with this run. ```hcl -source "amazon-ebs" "cannonical-ubuntu-server" { - ami_name = "packer-example" - // ... - run_volume_tags = { - hcp_iteration_id = packer.iterationID +source "null" "example" { + communicator = "none" +} + +data "hcp-packer-version" "hardened-source" { + bucket_name = "example" + channel_name = "latest" +} + +data "hcp-packer-artifact" "file" { + bucket_name = "example" + version_fingerprint = "${data.hcp-packer-version.hardened-source.fingerprint}" + platform = "aws" + region = "us-east-1" +} + +build { + hcp_packer_registry { + bucket_name = "simple" + } + sources = [ + "source.null.example" + ] + + provisioner "shell-local" { + inline = [ + "echo data is ${packer.iterationID}" + ] } } + ``` ```shell-session -==> vanilla.amazon-ebs.cannonical-ubuntu-server: Adding tags to source instance - vanilla.amazon-ebs.cannonical-ubuntu-server: Adding tag: "Name": "Packer Builder" - vanilla.amazon-ebs.cannonical-ubuntu-server: Adding tag: "hcp_iteration_id": "01FHGF3M2AK4TS6PCZES4VX5E7" +==> mybuild.null.example: Running local shell script: /var/folders/cz/q3cr3tld2457gtlgw7qs1kqc0000gq/T/packer-shell842419427 + mybuild.null.example: data is 01HN3KCRPVKR5PBQ28TS6B12W0 ``` # HCP Packer Version Fingerprint @@ -159,19 +182,42 @@ If your build is pushing metadata to the HCP Packer registry, this variable is set to the value of the Version Fingerprint associated with this run. ```hcl -source "amazon-ebs" "cannonical-ubuntu-server" { - ami_name = "packer-example" - // ... - run_volume_tags = { - hcp_version_fingerprint = packer.versionFingerprint +source "null" "example" { + communicator = "none" +} + +data "hcp-packer-version" "hardened-source" { + bucket_name = "example" + channel_name = "latest" +} + +data "hcp-packer-artifact" "file" { + bucket_name = "example" + version_fingerprint = "${data.hcp-packer-version.hardened-source.fingerprint}" + platform = "aws" + region = "us-east-1" +} + +build { + hcp_packer_registry { + bucket_name = "simple" + } + sources = [ + "source.null.example" + ] + + provisioner "shell-local" { + inline = [ + "echo data is ${packer.versionFingerprint}" + ] } } + ``` ```shell-session -==> vanilla.amazon-ebs.cannonical-ubuntu-server: Adding tags to source instance - vanilla.amazon-ebs.cannonical-ubuntu-server: Adding tag: "Name": "Packer Builder" - vanilla.amazon-ebs.cannonical-ubuntu-server: Adding tag: "hcp_version_fingerprint": "01FHGF3M2AK4TS6PCZES4VX5E74tf" +==> mybuild.null.example: Running local shell script: /var/folders/cz/q3cr3tld2457gtlgw7qs1kqc0000gq/T/packer-shell842419427 + mybuild.null.example: data is 01HN3KCRPVKR5PBQ28TS6B12W0 ``` You can also add this value to post-processors, for example to add to a manifest file: @@ -182,7 +228,6 @@ You can also add this value to post-processors, for example to add to a manifest strip_path = true custom_data = { version_fingerprint = "${packer.versionFingerprint}" - // `packer.iterationID` has been deprecated. iteration = "${packer.iterationID}" } } From 682eca2877cd1426e98319b7137c7da6caa795d9 Mon Sep 17 00:00:00 2001 From: Devashish Date: Fri, 26 Jan 2024 14:29:45 -0500 Subject: [PATCH 281/381] Remove repeated code --- hcl2template/types.packer_config.go | 5 ----- 1 file changed, 5 deletions(-) diff --git a/hcl2template/types.packer_config.go b/hcl2template/types.packer_config.go index 0f547b22413..3ead0b6b5f1 100644 --- a/hcl2template/types.packer_config.go +++ b/hcl2template/types.packer_config.go @@ -109,11 +109,6 @@ func (cfg *PackerConfig) EvalContext(ctx BlockContext, variables map[string]cty. "name": cty.UnknownVal(cty.String), }), buildAccessor: cty.UnknownVal(cty.EmptyObject), - packerAccessor: cty.ObjectVal(map[string]cty.Value{ - "version": cty.StringVal(cfg.CorePackerVersionString), - "iterationID": cty.UnknownVal(cty.String), - "versionFingerprint": cty.UnknownVal(cty.String), - }), pathVariablesAccessor: cty.ObjectVal(map[string]cty.Value{ "cwd": cty.StringVal(strings.ReplaceAll(cfg.Cwd, `\`, `/`)), "root": cty.StringVal(strings.ReplaceAll(cfg.Basedir, `\`, `/`)), From da653239185038470e9fb2c981f7620ed5b8ea71 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 23 Jan 2024 15:32:20 -0500 Subject: [PATCH 282/381] Remove all external plugin docs This change removes all external plugin docs using the old remote docs framework from the Packer core documentation in favor of the Packer integration framework. Remove plugins will be enabled on the integration portal and contacted to merge their PRs to finalize the integration migration. --- website/data/plugins-manifest.json | 97 ------------------------------ 1 file changed, 97 deletions(-) diff --git a/website/data/plugins-manifest.json b/website/data/plugins-manifest.json index 49e5221c9e1..0d4f101c7a3 100644 --- a/website/data/plugins-manifest.json +++ b/website/data/plugins-manifest.json @@ -1,99 +1,2 @@ [ - { - "title": "Anka", - "path": "anka", - "repo": "veertuinc/packer-plugin-veertu-anka", - "pluginTier": "community", - "sourceBranch": "master", - "version": "latest" - }, - { - "title": "DigitalOcean", - "path": "digitalocean", - "repo": "digitalocean/packer-plugin-digitalocean", - "pluginTier": "verified", - "version": "latest", - "isHcpPackerReady": true - }, - { - "title": "External", - "path": "external", - "repo": "joomcode/packer-plugin-external", - "version": "latest", - "sourceBranch": "main" - }, - { - "title": "Gridscale", - "path": "gridscale", - "repo": "gridscale/packer-plugin-gridscale", - "version": "latest", - "pluginTier": "verified", - "isHcpPackerReady": false - }, - { - "title": "IPSW", - "path": "ipsw", - "repo": "torarnv/packer-plugin-ipsw", - "version": "latest", - "sourceBranch": "main", - "pluginTier": "community" - }, - { - "title": "Kamatera", - "path": "kamatera", - "repo": "kamatera/packer-plugin-kamatera", - "pluginTier": "community", - "version": "latest" - }, - { - "title": "Libvirt", - "path": "libvirt", - "repo": "thomasklein94/packer-plugin-libvirt", - "pluginTier": "community", - "version": "latest" - }, - { - "title": "Nutanix", - "path": "nutanix", - "repo": "nutanix-cloud-native/packer-plugin-nutanix", - "version": "latest", - "pluginTier": "verified", - "sourceBranch": "main" - }, - { - "title": "Outscale", - "path": "outscale", - "repo": "outscale/packer-plugin-outscale", - "version": "latest", - "pluginTier": "verified", - "isHcpPackerReady": true - }, - { - "title": "UCloud", - "path": "ucloud", - "repo": "ucloud/packer-plugin-ucloud", - "version": "latest", - "pluginTier": "community" - }, - { - "title": "Volcengine", - "path": "volcengine", - "repo": "volcengine/packer-plugin-volcengine", - "pluginTier": "community", - "version": "latest" - }, - { - "title": "Vultr", - "path": "vultr", - "repo": "vultr/packer-plugin-vultr", - "pluginTier": "community", - "version": "latest" - }, - { - "title": "Ksyun", - "path": "ksyun", - "repo": "kingsoftcloud/packer-plugin-ksyun", - "pluginTier": "community", - "version": "latest" - } ] From ec403555dc7c1e57ff465e6fb3252c0af677f87b Mon Sep 17 00:00:00 2001 From: Heat Hamilton Date: Mon, 29 Jan 2024 14:59:28 -0500 Subject: [PATCH 283/381] Updated next, node, npm, nvmrc and Docker node versions; added husky pre-commit hook v9 --- website/.husky/pre-commit | 1 + website/.nvmrc | 2 +- website/Dockerfile | 2 +- website/README.md | 2 +- website/package-lock.json | 1083 +++++++++++++++---------------------- website/package.json | 19 +- 6 files changed, 445 insertions(+), 664 deletions(-) create mode 100644 website/.husky/pre-commit diff --git a/website/.husky/pre-commit b/website/.husky/pre-commit new file mode 100644 index 00000000000..9e1c644b65a --- /dev/null +++ b/website/.husky/pre-commit @@ -0,0 +1 @@ +next-hashicorp precommit \ No newline at end of file diff --git a/website/.nvmrc b/website/.nvmrc index 6f7f377bf51..3f430af82b3 100644 --- a/website/.nvmrc +++ b/website/.nvmrc @@ -1 +1 @@ -v16 +v18 diff --git a/website/Dockerfile b/website/Dockerfile index f8cbf41594e..ef0a51433f7 100644 --- a/website/Dockerfile +++ b/website/Dockerfile @@ -1,4 +1,4 @@ -FROM docker.mirror.hashicorp.services/node:14.17.0-alpine +FROM docker.mirror.hashicorp.services/node:18.18.2-alpine RUN apk add --update --no-cache git make g++ automake autoconf libtool nasm libpng-dev COPY ./package.json /website/package.json diff --git a/website/README.md b/website/README.md index 12d457c4d79..611b80b0982 100644 --- a/website/README.md +++ b/website/README.md @@ -49,7 +49,7 @@ The Docker image is pre-built with all the website dependencies installed, which ### With Node -If your local development environment has a supported version (v16+) of [node installed](https://nodejs.org/en/) you can run: +If your local development environment has a supported version (v18+) of [node installed](https://nodejs.org/en/) you can run: - `npm install` - `npm start` diff --git a/website/package-lock.json b/website/package-lock.json index 55458aed469..f79c4a2cf05 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -8,15 +8,14 @@ "name": "packer-docs", "version": "1.0.0", "devDependencies": { - "@hashicorp/platform-cli": "^2.6.0", - "@hashicorp/platform-content-conformance": "^0.0.10", - "dart-linkcheck": "2.0.15", - "husky": "4.3.8", - "next": "^12.3.1", - "prettier": "2.2.1" + "@hashicorp/platform-cli": "^2.7.3", + "@hashicorp/platform-content-conformance": "^0.0.12", + "husky": "^9.0.6", + "next": "^14.0.4", + "prettier": "^3.2.4" }, "engines": { - "npm": ">=7.0.0" + "npm": ">=9.6.7" } }, "node_modules/@ampproject/remapping": { @@ -772,18 +771,27 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "dev": true, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, "node_modules/@hashicorp/platform-cli": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@hashicorp/platform-cli/-/platform-cli-2.6.0.tgz", - "integrity": "sha512-nMO7Uiy/A5CT/BCE9RyQt6/Uci7bxwTesxCNWkXlciyqlIrz9WmBa9hr710IiMoDzrzQ1tL6AgFIeTbXs4RTqA==", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@hashicorp/platform-cli/-/platform-cli-2.7.3.tgz", + "integrity": "sha512-8vmKiF67gxGQFj8GkNcm8udNYwm/Ao3mLpmUD0vDTN/SA6jdONyXt43/O3H7FvEkVfaUT5K0huljp4b5hY+LYQ==", "dev": true, "dependencies": { - "@hashicorp/platform-cms": "0.3.0", + "@hashicorp/platform-cms": "0.4.0", "@typescript-eslint/eslint-plugin": "^5.48.0", "@typescript-eslint/parser": "^5.48.0", "chalk": "4.1.0", "commander": "7.2.0", - "ejs": "3.1.5", + "ejs": "^3.1.9", "eslint": "^8.31.0", "eslint-config-next": "^13.1.1", "eslint-config-prettier": "^8.6.0", @@ -794,7 +802,7 @@ "inquirer": "7.3.3", "lint-staged": "11.1.2", "open": "7.3.0", - "prettier": "2.5.1", + "prettier": "^2.8.7", "readdirp": "3.5.0", "signale": "1.4.0", "slugify": "1.4.6", @@ -813,30 +821,33 @@ } }, "node_modules/@hashicorp/platform-cli/node_modules/prettier": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", - "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, "bin": { "prettier": "bin-prettier.js" }, "engines": { "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/@hashicorp/platform-cms": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@hashicorp/platform-cms/-/platform-cms-0.3.0.tgz", - "integrity": "sha512-sRX9A+kDEZvfZy8PvGFbEaHjn5G1mEsHwTri1vDnrmKG8apE+ELlug83b0iEkD5wIJi9OqaewMIb0NrLxg9s5A==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@hashicorp/platform-cms/-/platform-cms-0.4.0.tgz", + "integrity": "sha512-Q8fixx7JnzzDvuMEC1+UK8xO4bqMh/QxNX7lPusfMixVhnnyJaTF7xRhDRFWMG1bhUwI9TJxQYElWC2aDj7CmA==", "dev": true, "dependencies": { - "rivet-graphql": "0.3.1" + "rivet-graphql": "^0.6.0-canary-20230309231927" } }, "node_modules/@hashicorp/platform-content-conformance": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/@hashicorp/platform-content-conformance/-/platform-content-conformance-0.0.10.tgz", - "integrity": "sha512-vXLbd2w9phS4JfFyh17jCiyu+LXVonTfb7WEUK2eMlOL/wxe2umyJvEQaJNzD5bwyYC8LuXGA5JkbnPXnU5ZQg==", + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@hashicorp/platform-content-conformance/-/platform-content-conformance-0.0.12.tgz", + "integrity": "sha512-Va6XTh7cH1M11yqgi4GsLPZZx1NgXQjKvCzadynJyJJhpXe++oQDS5ItDm8ABxeM/EuKU4dOfA7PMUkLzAtAWQ==", "dev": true, "dependencies": { "find-up": "^6.3.0", @@ -853,7 +864,7 @@ "vfile-reporter": "^7.0.4", "vfile-reporter-json": "^3.2.0", "vfile-statistics": "^2.0.0", - "yaml": "^2.1.3", + "yaml": "^2.2.2", "yargs": "^17.4.1", "zod": "^3.19.1" }, @@ -1111,9 +1122,9 @@ } }, "node_modules/@hashicorp/platform-content-conformance/node_modules/yaml": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", - "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", "dev": true, "engines": { "node": ">= 14" @@ -1604,9 +1615,9 @@ } }, "node_modules/@next/env": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/env/-/env-12.3.1.tgz", - "integrity": "sha512-9P9THmRFVKGKt9DYqeC2aKIxm8rlvkK38V1P1sRE7qyoPBIs8l9oo79QoSdPtOWfzkbDAVUqvbQGgTMsb8BtJg==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.0.4.tgz", + "integrity": "sha512-irQnbMLbUNQpP1wcE5NstJtbuA/69kRfzBrpAD7Gsn8zm/CY6YQYc3HQBz8QPxwISG26tIm5afvvVbu508oBeQ==", "dev": true }, "node_modules/@next/eslint-plugin-next": { @@ -1618,42 +1629,10 @@ "glob": "7.1.7" } }, - "node_modules/@next/swc-android-arm-eabi": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.3.1.tgz", - "integrity": "sha512-i+BvKA8tB//srVPPQxIQN5lvfROcfv4OB23/L1nXznP+N/TyKL8lql3l7oo2LNhnH66zWhfoemg3Q4VJZSruzQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-android-arm64": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.3.1.tgz", - "integrity": "sha512-CmgU2ZNyBP0rkugOOqLnjl3+eRpXBzB/I2sjwcGZ7/Z6RcUJXK5Evz+N0ucOxqE4cZ3gkTeXtSzRrMK2mGYV8Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, "node_modules/@next/swc-darwin-arm64": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.3.1.tgz", - "integrity": "sha512-hT/EBGNcu0ITiuWDYU9ur57Oa4LybD5DOQp4f22T6zLfpoBMfBibPtR8XktXmOyFHrL/6FC2p9ojdLZhWhvBHg==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.0.4.tgz", + "integrity": "sha512-mF05E/5uPthWzyYDyptcwHptucf/jj09i2SXBPwNzbgBNc+XnwzrL0U6BmPjQeOL+FiB+iG1gwBeq7mlDjSRPg==", "cpu": [ "arm64" ], @@ -1667,9 +1646,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.3.1.tgz", - "integrity": "sha512-9S6EVueCVCyGf2vuiLiGEHZCJcPAxglyckTZcEwLdJwozLqN0gtS0Eq0bQlGS3dH49Py/rQYpZ3KVWZ9BUf/WA==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.0.4.tgz", + "integrity": "sha512-IZQ3C7Bx0k2rYtrZZxKKiusMTM9WWcK5ajyhOZkYYTCc8xytmwSzR1skU7qLgVT/EY9xtXDG0WhY6fyujnI3rw==", "cpu": [ "x64" ], @@ -1682,42 +1661,10 @@ "node": ">= 10" } }, - "node_modules/@next/swc-freebsd-x64": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.3.1.tgz", - "integrity": "sha512-qcuUQkaBZWqzM0F1N4AkAh88lLzzpfE6ImOcI1P6YeyJSsBmpBIV8o70zV+Wxpc26yV9vpzb+e5gCyxNjKJg5Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm-gnueabihf": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.3.1.tgz", - "integrity": "sha512-diL9MSYrEI5nY2wc/h/DBewEDUzr/DqBjIgHJ3RUNtETAOB3spMNHvJk2XKUDjnQuluLmFMloet9tpEqU2TT9w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.3.1.tgz", - "integrity": "sha512-o/xB2nztoaC7jnXU3Q36vGgOolJpsGG8ETNjxM1VAPxRwM7FyGCPHOMk1XavG88QZSQf+1r+POBW0tLxQOJ9DQ==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.0.4.tgz", + "integrity": "sha512-VwwZKrBQo/MGb1VOrxJ6LrKvbpo7UbROuyMRvQKTFKhNaXjUmKTu7wxVkIuCARAfiI8JpaWAnKR+D6tzpCcM4w==", "cpu": [ "arm64" ], @@ -1731,9 +1678,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.3.1.tgz", - "integrity": "sha512-2WEasRxJzgAmP43glFNhADpe8zB7kJofhEAVNbDJZANp+H4+wq+/cW1CdDi8DqjkShPEA6/ejJw+xnEyDID2jg==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.0.4.tgz", + "integrity": "sha512-8QftwPEW37XxXoAwsn+nXlodKWHfpMaSvt81W43Wh8dv0gkheD+30ezWMcFGHLI71KiWmHK5PSQbTQGUiidvLQ==", "cpu": [ "arm64" ], @@ -1747,9 +1694,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.3.1.tgz", - "integrity": "sha512-JWEaMyvNrXuM3dyy9Pp5cFPuSSvG82+yABqsWugjWlvfmnlnx9HOQZY23bFq3cNghy5V/t0iPb6cffzRWylgsA==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.0.4.tgz", + "integrity": "sha512-/s/Pme3VKfZAfISlYVq2hzFS8AcAIOTnoKupc/j4WlvF6GQ0VouS2Q2KEgPuO1eMBwakWPB1aYFIA4VNVh667A==", "cpu": [ "x64" ], @@ -1763,9 +1710,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.3.1.tgz", - "integrity": "sha512-xoEWQQ71waWc4BZcOjmatuvPUXKTv6MbIFzpm4LFeCHsg2iwai0ILmNXf81rJR+L1Wb9ifEke2sQpZSPNz1Iyg==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.0.4.tgz", + "integrity": "sha512-m8z/6Fyal4L9Bnlxde5g2Mfa1Z7dasMQyhEhskDATpqr+Y0mjOBZcXQ7G5U+vgL22cI4T7MfvgtrM2jdopqWaw==", "cpu": [ "x64" ], @@ -1779,9 +1726,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.3.1.tgz", - "integrity": "sha512-hswVFYQYIeGHE2JYaBVtvqmBQ1CppplQbZJS/JgrVI3x2CurNhEkmds/yqvDONfwfbttTtH4+q9Dzf/WVl3Opw==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.0.4.tgz", + "integrity": "sha512-7Wv4PRiWIAWbm5XrGz3D8HUkCVDMMz9igffZG4NB1p4u1KoItwx9qjATHz88kwCEal/HXmbShucaslXCQXUM5w==", "cpu": [ "arm64" ], @@ -1795,9 +1742,9 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.3.1.tgz", - "integrity": "sha512-Kny5JBehkTbKPmqulr5i+iKntO5YMP+bVM8Hf8UAmjSMVo3wehyLVc9IZkNmcbxi+vwETnQvJaT5ynYBkJ9dWA==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.0.4.tgz", + "integrity": "sha512-zLeNEAPULsl0phfGb4kdzF/cAVIfaC7hY+kt0/d+y9mzcZHsMS3hAS829WbJ31DkSlVKQeHEjZHIdhN+Pg7Gyg==", "cpu": [ "ia32" ], @@ -1811,9 +1758,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.3.1.tgz", - "integrity": "sha512-W1ijvzzg+kPEX6LAc+50EYYSEo0FVu7dmTE+t+DM4iOLqgGHoW9uYSz9wCVdkXOEEMP9xhXfGpcSxsfDucyPkA==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.0.4.tgz", + "integrity": "sha512-yEh2+R8qDlDCjxVpzOTEpBLQTEFAcP2A8fUFLaWNap9GitYKkKv1//y2S6XY6zsR4rCOPRpU7plYDR+az2n30A==", "cpu": [ "x64" ], @@ -1959,18 +1906,18 @@ } }, "node_modules/@swc/helpers": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.11.tgz", - "integrity": "sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz", + "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==", "dev": true, "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@swc/helpers/node_modules/tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, "node_modules/@tootallnate/once": { @@ -2720,9 +2667,9 @@ } }, "node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", "dev": true }, "node_modules/asynckit": { @@ -3086,6 +3033,18 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dev": true, + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, "node_modules/cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -3438,6 +3397,12 @@ "node": ">= 10" } }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "dev": true + }, "node_modules/cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", @@ -3573,12 +3538,6 @@ "node": ">= 10" } }, - "node_modules/compare-versions": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", - "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", - "dev": true - }, "node_modules/component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -3628,12 +3587,12 @@ } }, "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", "dev": true, "dependencies": { - "node-fetch": "2.6.7" + "node-fetch": "^2.6.12" } }, "node_modules/cross-spawn": { @@ -3695,17 +3654,6 @@ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true }, - "node_modules/dart-linkcheck": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/dart-linkcheck/-/dart-linkcheck-2.0.15.tgz", - "integrity": "sha512-ZMvxkAyEpBTvBFk+DPjcK0ObNy8GM4gmrGG1qIu0EXb/zj25vjRWNnhLHKZw4JlOLo02oWlwDeqo98GuBlJcIg==", - "dev": true, - "bin": { - "linkcheck": "bin/linkcheck", - "linkcheck-linux": "bin/linkcheck-linux", - "linkcheck-win": "bin/linkcheck-win" - } - }, "node_modules/data-urls": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", @@ -4014,12 +3962,12 @@ "dev": true }, "node_modules/ejs": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.5.tgz", - "integrity": "sha512-dldq3ZfFtgVTJMLjOe+/3sROTzALlL9E34V4/sDtUd/KlBSS0s6U1/+WPE1B4sj9CXHJpL1M6rhNJnc9Wbal9w==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", "dev": true, "dependencies": { - "jake": "^10.6.1" + "jake": "^10.8.5" }, "bin": { "ejs": "bin/cli.js" @@ -5351,9 +5299,9 @@ } }, "node_modules/filelist": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.3.tgz", - "integrity": "sha512-LwjCsruLWQULGYKy7TX0OPtrL9kLpojOFKc5VCTxdFTV7w5zbsgqVKfnkKG7Qgjtq50gKfO56hJv88OfcGb70Q==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, "dependencies": { "minimatch": "^5.0.1" @@ -5369,9 +5317,9 @@ } }, "node_modules/filelist/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -5690,6 +5638,12 @@ "node": ">=10.13.0" } }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, "node_modules/global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", @@ -5824,9 +5778,9 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, "node_modules/grapheme-splitter": { @@ -5836,21 +5790,22 @@ "dev": true }, "node_modules/graphql": { - "version": "15.8.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", - "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", + "version": "16.8.1", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", + "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", "dev": true, "engines": { - "node": ">= 10.x" + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } }, "node_modules/graphql-request": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-3.7.0.tgz", - "integrity": "sha512-dw5PxHCgBneN2DDNqpWu8QkbbJ07oOziy8z+bK/TAXufsOLaETuVO4GkXrbs0WjhdKhBMN3BkpN/RIvUHkmNUQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-5.1.0.tgz", + "integrity": "sha512-0OeRVYigVwIiXhNmqnPDt+JhMzsjinxHE7TVy3Lm6jUzav0guVcL0lfSbi6jVTRAxcbwgyr6yrZioSHxf9gHzw==", "dev": true, "dependencies": { - "cross-fetch": "^3.0.6", + "@graphql-typed-document-node/core": "^3.1.1", + "cross-fetch": "^3.1.5", "extract-files": "^9.0.0", "form-data": "^3.0.0" }, @@ -6123,106 +6078,18 @@ } }, "node_modules/husky": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/husky/-/husky-4.3.8.tgz", - "integrity": "sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.6.tgz", + "integrity": "sha512-EEuw/rfTiMjOfuL7pGO/i9otg1u36TXxqjIA6D9qxVjd/UXoDOsLor/BSFf5hTK50shwzCU3aVVwdXDp/lp7RA==", "dev": true, - "hasInstallScript": true, - "dependencies": { - "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "compare-versions": "^3.6.0", - "cosmiconfig": "^7.0.0", - "find-versions": "^4.0.0", - "opencollective-postinstall": "^2.0.2", - "pkg-dir": "^5.0.0", - "please-upgrade-node": "^3.2.0", - "slash": "^3.0.0", - "which-pm-runs": "^1.0.0" - }, "bin": { - "husky-run": "bin/run.js", - "husky-upgrade": "lib/upgrader/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/husky" - } - }, - "node_modules/husky/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "husky": "bin.js" }, "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/husky/node_modules/find-versions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz", - "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==", - "dev": true, - "dependencies": { - "semver-regex": "^3.1.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/husky/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/husky/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/husky/node_modules/pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", - "dev": true, - "dependencies": { - "find-up": "^5.0.0" - }, - "engines": { - "node": ">=10" + "url": "https://github.com/sponsors/typicode" } }, "node_modules/iconv-lite": { @@ -7087,15 +6954,15 @@ } }, "node_modules/jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", "dev": true, "dependencies": { "async": "^3.2.3", "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" + "filelist": "^1.0.4", + "minimatch": "^3.1.2" }, "bin": { "jake": "bin/cli.js" @@ -8631,10 +8498,16 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -8678,51 +8551,45 @@ "dev": true }, "node_modules/next": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/next/-/next-12.3.1.tgz", - "integrity": "sha512-l7bvmSeIwX5lp07WtIiP9u2ytZMv7jIeB8iacR28PuUEFG5j0HGAPnMqyG5kbZNBG2H7tRsrQ4HCjuMOPnANZw==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/next/-/next-14.0.4.tgz", + "integrity": "sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==", "dev": true, "dependencies": { - "@next/env": "12.3.1", - "@swc/helpers": "0.4.11", + "@next/env": "14.0.4", + "@swc/helpers": "0.5.2", + "busboy": "1.6.0", "caniuse-lite": "^1.0.30001406", - "postcss": "8.4.14", - "styled-jsx": "5.0.7", - "use-sync-external-store": "1.2.0" + "graceful-fs": "^4.2.11", + "postcss": "8.4.31", + "styled-jsx": "5.1.1", + "watchpack": "2.4.0" }, "bin": { "next": "dist/bin/next" }, "engines": { - "node": ">=12.22.0" + "node": ">=18.17.0" }, "optionalDependencies": { - "@next/swc-android-arm-eabi": "12.3.1", - "@next/swc-android-arm64": "12.3.1", - "@next/swc-darwin-arm64": "12.3.1", - "@next/swc-darwin-x64": "12.3.1", - "@next/swc-freebsd-x64": "12.3.1", - "@next/swc-linux-arm-gnueabihf": "12.3.1", - "@next/swc-linux-arm64-gnu": "12.3.1", - "@next/swc-linux-arm64-musl": "12.3.1", - "@next/swc-linux-x64-gnu": "12.3.1", - "@next/swc-linux-x64-musl": "12.3.1", - "@next/swc-win32-arm64-msvc": "12.3.1", - "@next/swc-win32-ia32-msvc": "12.3.1", - "@next/swc-win32-x64-msvc": "12.3.1" + "@next/swc-darwin-arm64": "14.0.4", + "@next/swc-darwin-x64": "14.0.4", + "@next/swc-linux-arm64-gnu": "14.0.4", + "@next/swc-linux-arm64-musl": "14.0.4", + "@next/swc-linux-x64-gnu": "14.0.4", + "@next/swc-linux-x64-musl": "14.0.4", + "@next/swc-win32-arm64-msvc": "14.0.4", + "@next/swc-win32-ia32-msvc": "14.0.4", + "@next/swc-win32-x64-msvc": "14.0.4" }, "peerDependencies": { - "fibers": ">= 3.1.0", - "node-sass": "^6.0.0 || ^7.0.0", - "react": "^17.0.2 || ^18.0.0-0", - "react-dom": "^17.0.2 || ^18.0.0-0", + "@opentelemetry/api": "^1.1.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", "sass": "^1.3.0" }, "peerDependenciesMeta": { - "fibers": { - "optional": true - }, - "node-sass": { + "@opentelemetry/api": { "optional": true }, "sass": { @@ -8738,9 +8605,9 @@ "peer": true }, "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, "dependencies": { "whatwg-url": "^5.0.0" @@ -8760,19 +8627,19 @@ "node_modules/node-fetch/node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true }, "node_modules/node-fetch/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true }, "node_modules/node-fetch/node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "dependencies": { "tr46": "~0.0.3", @@ -9165,15 +9032,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/opencollective-postinstall": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", - "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", - "dev": true, - "bin": { - "opencollective-postinstall": "index.js" - } - }, "node_modules/optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -9541,9 +9399,9 @@ } }, "node_modules/postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "dev": true, "funding": [ { @@ -9553,10 +9411,14 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "nanoid": "^3.3.4", + "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -9839,15 +9701,18 @@ } }, "node_modules/prettier": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", - "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.4.tgz", + "integrity": "sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==", "dev": true, "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/prettier-linter-helpers": { @@ -9973,9 +9838,9 @@ } }, "node_modules/react": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.0.0.tgz", - "integrity": "sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", "dev": true, "peer": true, "dependencies": { @@ -9986,17 +9851,17 @@ } }, "node_modules/react-dom": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.0.0.tgz", - "integrity": "sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", "dev": true, "peer": true, "dependencies": { "loose-envify": "^1.1.0", - "scheduler": "^0.21.0" + "scheduler": "^0.23.0" }, "peerDependencies": { - "react": "^18.0.0" + "react": "^18.2.0" } }, "node_modules/react-is": { @@ -10525,13 +10390,14 @@ } }, "node_modules/rivet-graphql": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/rivet-graphql/-/rivet-graphql-0.3.1.tgz", - "integrity": "sha512-HEov02XhZ6H1jOME+mO8CZwliu/UtgZSHixYUwvQ7HSx3gk8EOVaQY5c3zscOYjZECvP8cR4+1Ob3KHWJRWEMw==", + "version": "0.6.0-canary-20230309231927", + "resolved": "https://registry.npmjs.org/rivet-graphql/-/rivet-graphql-0.6.0-canary-20230309231927.tgz", + "integrity": "sha512-6+HlBIKGty0+XULdpQaXwFpXgItmNUOCSZ8a6Eit/kJzXPp7YVyBMvCN9ozaRVqHUK8PiToGB+jg+jo8/V+bgw==", "dev": true, "dependencies": { - "graphql": "^15.3.0", - "graphql-request": "^3.0.0" + "@graphql-typed-document-node/core": "^3.1.2", + "graphql": "^16.6.0", + "graphql-request": "~5.1.0" } }, "node_modules/rsvp": { @@ -10961,9 +10827,9 @@ } }, "node_modules/scheduler": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", - "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", "dev": true, "peer": true, "dependencies": { @@ -10991,18 +10857,6 @@ "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", "dev": true }, - "node_modules/semver-regex": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.4.tgz", - "integrity": "sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -11722,6 +11576,15 @@ "node": ">= 0.4" } }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -11959,10 +11822,13 @@ "dev": true }, "node_modules/styled-jsx": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.7.tgz", - "integrity": "sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", "dev": true, + "dependencies": { + "client-only": "0.0.1" + }, "engines": { "node": ">= 12.0.0" }, @@ -13192,15 +13058,6 @@ "node": ">=0.10.0" } }, - "node_modules/use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "dev": true, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -13689,6 +13546,19 @@ "makeerror": "1.0.12" } }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", @@ -13784,12 +13654,6 @@ "dev": true, "peer": true }, - "node_modules/which-pm-runs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", - "dev": true - }, "node_modules/which-typed-array": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", @@ -14629,18 +14493,25 @@ "integrity": "sha512-lxJ9R5ygVm8ZWgYdUweoq5ownDlJ4upvoWmO4eLxBYHdMo+vZ/Rx0EN6MbKWDJOSUGrqJy2Gt+Dyv/VKml0fjg==", "dev": true }, + "@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "dev": true, + "requires": {} + }, "@hashicorp/platform-cli": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@hashicorp/platform-cli/-/platform-cli-2.6.0.tgz", - "integrity": "sha512-nMO7Uiy/A5CT/BCE9RyQt6/Uci7bxwTesxCNWkXlciyqlIrz9WmBa9hr710IiMoDzrzQ1tL6AgFIeTbXs4RTqA==", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@hashicorp/platform-cli/-/platform-cli-2.7.3.tgz", + "integrity": "sha512-8vmKiF67gxGQFj8GkNcm8udNYwm/Ao3mLpmUD0vDTN/SA6jdONyXt43/O3H7FvEkVfaUT5K0huljp4b5hY+LYQ==", "dev": true, "requires": { - "@hashicorp/platform-cms": "0.3.0", + "@hashicorp/platform-cms": "0.4.0", "@typescript-eslint/eslint-plugin": "^5.48.0", "@typescript-eslint/parser": "^5.48.0", "chalk": "4.1.0", "commander": "7.2.0", - "ejs": "3.1.5", + "ejs": "^3.1.9", "eslint": "^8.31.0", "eslint-config-next": "^13.1.1", "eslint-config-prettier": "^8.6.0", @@ -14651,7 +14522,7 @@ "inquirer": "7.3.3", "lint-staged": "11.1.2", "open": "7.3.0", - "prettier": "2.5.1", + "prettier": "^2.8.7", "readdirp": "3.5.0", "signale": "1.4.0", "slugify": "1.4.6", @@ -14667,26 +14538,26 @@ }, "dependencies": { "prettier": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", - "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true } } }, "@hashicorp/platform-cms": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@hashicorp/platform-cms/-/platform-cms-0.3.0.tgz", - "integrity": "sha512-sRX9A+kDEZvfZy8PvGFbEaHjn5G1mEsHwTri1vDnrmKG8apE+ELlug83b0iEkD5wIJi9OqaewMIb0NrLxg9s5A==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@hashicorp/platform-cms/-/platform-cms-0.4.0.tgz", + "integrity": "sha512-Q8fixx7JnzzDvuMEC1+UK8xO4bqMh/QxNX7lPusfMixVhnnyJaTF7xRhDRFWMG1bhUwI9TJxQYElWC2aDj7CmA==", "dev": true, "requires": { - "rivet-graphql": "0.3.1" + "rivet-graphql": "^0.6.0-canary-20230309231927" } }, "@hashicorp/platform-content-conformance": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/@hashicorp/platform-content-conformance/-/platform-content-conformance-0.0.10.tgz", - "integrity": "sha512-vXLbd2w9phS4JfFyh17jCiyu+LXVonTfb7WEUK2eMlOL/wxe2umyJvEQaJNzD5bwyYC8LuXGA5JkbnPXnU5ZQg==", + "version": "0.0.12", + "resolved": "https://registry.npmjs.org/@hashicorp/platform-content-conformance/-/platform-content-conformance-0.0.12.tgz", + "integrity": "sha512-Va6XTh7cH1M11yqgi4GsLPZZx1NgXQjKvCzadynJyJJhpXe++oQDS5ItDm8ABxeM/EuKU4dOfA7PMUkLzAtAWQ==", "dev": true, "requires": { "find-up": "^6.3.0", @@ -14703,7 +14574,7 @@ "vfile-reporter": "^7.0.4", "vfile-reporter-json": "^3.2.0", "vfile-statistics": "^2.0.0", - "yaml": "^2.1.3", + "yaml": "^2.2.2", "yargs": "^17.4.1", "zod": "^3.19.1" }, @@ -14885,9 +14756,9 @@ "dev": true }, "yaml": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.1.tgz", - "integrity": "sha512-e0WHiYql7+9wr4cWMx3TVQrNwejKaEe7/rHNmQmqRjazfOP5W8PB6Jpebb5o6fIapbz9o9+2ipcaTM2ZwDI6lw==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", "dev": true }, "yargs": { @@ -15282,9 +15153,9 @@ "dev": true }, "@next/env": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/env/-/env-12.3.1.tgz", - "integrity": "sha512-9P9THmRFVKGKt9DYqeC2aKIxm8rlvkK38V1P1sRE7qyoPBIs8l9oo79QoSdPtOWfzkbDAVUqvbQGgTMsb8BtJg==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.0.4.tgz", + "integrity": "sha512-irQnbMLbUNQpP1wcE5NstJtbuA/69kRfzBrpAD7Gsn8zm/CY6YQYc3HQBz8QPxwISG26tIm5afvvVbu508oBeQ==", "dev": true }, "@next/eslint-plugin-next": { @@ -15296,94 +15167,66 @@ "glob": "7.1.7" } }, - "@next/swc-android-arm-eabi": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.3.1.tgz", - "integrity": "sha512-i+BvKA8tB//srVPPQxIQN5lvfROcfv4OB23/L1nXznP+N/TyKL8lql3l7oo2LNhnH66zWhfoemg3Q4VJZSruzQ==", - "dev": true, - "optional": true - }, - "@next/swc-android-arm64": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-android-arm64/-/swc-android-arm64-12.3.1.tgz", - "integrity": "sha512-CmgU2ZNyBP0rkugOOqLnjl3+eRpXBzB/I2sjwcGZ7/Z6RcUJXK5Evz+N0ucOxqE4cZ3gkTeXtSzRrMK2mGYV8Q==", - "dev": true, - "optional": true - }, "@next/swc-darwin-arm64": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.3.1.tgz", - "integrity": "sha512-hT/EBGNcu0ITiuWDYU9ur57Oa4LybD5DOQp4f22T6zLfpoBMfBibPtR8XktXmOyFHrL/6FC2p9ojdLZhWhvBHg==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.0.4.tgz", + "integrity": "sha512-mF05E/5uPthWzyYDyptcwHptucf/jj09i2SXBPwNzbgBNc+XnwzrL0U6BmPjQeOL+FiB+iG1gwBeq7mlDjSRPg==", "dev": true, "optional": true }, "@next/swc-darwin-x64": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-12.3.1.tgz", - "integrity": "sha512-9S6EVueCVCyGf2vuiLiGEHZCJcPAxglyckTZcEwLdJwozLqN0gtS0Eq0bQlGS3dH49Py/rQYpZ3KVWZ9BUf/WA==", - "dev": true, - "optional": true - }, - "@next/swc-freebsd-x64": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-freebsd-x64/-/swc-freebsd-x64-12.3.1.tgz", - "integrity": "sha512-qcuUQkaBZWqzM0F1N4AkAh88lLzzpfE6ImOcI1P6YeyJSsBmpBIV8o70zV+Wxpc26yV9vpzb+e5gCyxNjKJg5Q==", - "dev": true, - "optional": true - }, - "@next/swc-linux-arm-gnueabihf": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.3.1.tgz", - "integrity": "sha512-diL9MSYrEI5nY2wc/h/DBewEDUzr/DqBjIgHJ3RUNtETAOB3spMNHvJk2XKUDjnQuluLmFMloet9tpEqU2TT9w==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.0.4.tgz", + "integrity": "sha512-IZQ3C7Bx0k2rYtrZZxKKiusMTM9WWcK5ajyhOZkYYTCc8xytmwSzR1skU7qLgVT/EY9xtXDG0WhY6fyujnI3rw==", "dev": true, "optional": true }, "@next/swc-linux-arm64-gnu": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.3.1.tgz", - "integrity": "sha512-o/xB2nztoaC7jnXU3Q36vGgOolJpsGG8ETNjxM1VAPxRwM7FyGCPHOMk1XavG88QZSQf+1r+POBW0tLxQOJ9DQ==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.0.4.tgz", + "integrity": "sha512-VwwZKrBQo/MGb1VOrxJ6LrKvbpo7UbROuyMRvQKTFKhNaXjUmKTu7wxVkIuCARAfiI8JpaWAnKR+D6tzpCcM4w==", "dev": true, "optional": true }, "@next/swc-linux-arm64-musl": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.3.1.tgz", - "integrity": "sha512-2WEasRxJzgAmP43glFNhADpe8zB7kJofhEAVNbDJZANp+H4+wq+/cW1CdDi8DqjkShPEA6/ejJw+xnEyDID2jg==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.0.4.tgz", + "integrity": "sha512-8QftwPEW37XxXoAwsn+nXlodKWHfpMaSvt81W43Wh8dv0gkheD+30ezWMcFGHLI71KiWmHK5PSQbTQGUiidvLQ==", "dev": true, "optional": true }, "@next/swc-linux-x64-gnu": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.3.1.tgz", - "integrity": "sha512-JWEaMyvNrXuM3dyy9Pp5cFPuSSvG82+yABqsWugjWlvfmnlnx9HOQZY23bFq3cNghy5V/t0iPb6cffzRWylgsA==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.0.4.tgz", + "integrity": "sha512-/s/Pme3VKfZAfISlYVq2hzFS8AcAIOTnoKupc/j4WlvF6GQ0VouS2Q2KEgPuO1eMBwakWPB1aYFIA4VNVh667A==", "dev": true, "optional": true }, "@next/swc-linux-x64-musl": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.3.1.tgz", - "integrity": "sha512-xoEWQQ71waWc4BZcOjmatuvPUXKTv6MbIFzpm4LFeCHsg2iwai0ILmNXf81rJR+L1Wb9ifEke2sQpZSPNz1Iyg==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.0.4.tgz", + "integrity": "sha512-m8z/6Fyal4L9Bnlxde5g2Mfa1Z7dasMQyhEhskDATpqr+Y0mjOBZcXQ7G5U+vgL22cI4T7MfvgtrM2jdopqWaw==", "dev": true, "optional": true }, "@next/swc-win32-arm64-msvc": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.3.1.tgz", - "integrity": "sha512-hswVFYQYIeGHE2JYaBVtvqmBQ1CppplQbZJS/JgrVI3x2CurNhEkmds/yqvDONfwfbttTtH4+q9Dzf/WVl3Opw==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.0.4.tgz", + "integrity": "sha512-7Wv4PRiWIAWbm5XrGz3D8HUkCVDMMz9igffZG4NB1p4u1KoItwx9qjATHz88kwCEal/HXmbShucaslXCQXUM5w==", "dev": true, "optional": true }, "@next/swc-win32-ia32-msvc": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.3.1.tgz", - "integrity": "sha512-Kny5JBehkTbKPmqulr5i+iKntO5YMP+bVM8Hf8UAmjSMVo3wehyLVc9IZkNmcbxi+vwETnQvJaT5ynYBkJ9dWA==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.0.4.tgz", + "integrity": "sha512-zLeNEAPULsl0phfGb4kdzF/cAVIfaC7hY+kt0/d+y9mzcZHsMS3hAS829WbJ31DkSlVKQeHEjZHIdhN+Pg7Gyg==", "dev": true, "optional": true }, "@next/swc-win32-x64-msvc": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.3.1.tgz", - "integrity": "sha512-W1ijvzzg+kPEX6LAc+50EYYSEo0FVu7dmTE+t+DM4iOLqgGHoW9uYSz9wCVdkXOEEMP9xhXfGpcSxsfDucyPkA==", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.0.4.tgz", + "integrity": "sha512-yEh2+R8qDlDCjxVpzOTEpBLQTEFAcP2A8fUFLaWNap9GitYKkKv1//y2S6XY6zsR4rCOPRpU7plYDR+az2n30A==", "dev": true, "optional": true }, @@ -15492,18 +15335,18 @@ } }, "@swc/helpers": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.4.11.tgz", - "integrity": "sha512-rEUrBSGIoSFuYxwBYtlUFMlE2CwGhmW+w9355/5oduSw8e5h2+Tj4UrAGNNgP9915++wj5vkQo0UuOBqOAq4nw==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz", + "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==", "dev": true, "requires": { "tslib": "^2.4.0" }, "dependencies": { "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true } } @@ -16064,9 +15907,9 @@ "dev": true }, "async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", "dev": true }, "asynckit": { @@ -16345,6 +16188,15 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dev": true, + "requires": { + "streamsearch": "^1.1.0" + } + }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", @@ -16604,6 +16456,12 @@ "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true }, + "client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "dev": true + }, "cliui": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", @@ -16714,12 +16572,6 @@ "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true }, - "compare-versions": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", - "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", - "dev": true - }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", @@ -16763,12 +16615,12 @@ } }, "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", "dev": true, "requires": { - "node-fetch": "2.6.7" + "node-fetch": "^2.6.12" } }, "cross-spawn": { @@ -16820,12 +16672,6 @@ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true }, - "dart-linkcheck": { - "version": "2.0.15", - "resolved": "https://registry.npmjs.org/dart-linkcheck/-/dart-linkcheck-2.0.15.tgz", - "integrity": "sha512-ZMvxkAyEpBTvBFk+DPjcK0ObNy8GM4gmrGG1qIu0EXb/zj25vjRWNnhLHKZw4JlOLo02oWlwDeqo98GuBlJcIg==", - "dev": true - }, "data-urls": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", @@ -17071,12 +16917,12 @@ "dev": true }, "ejs": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.5.tgz", - "integrity": "sha512-dldq3ZfFtgVTJMLjOe+/3sROTzALlL9E34V4/sDtUd/KlBSS0s6U1/+WPE1B4sj9CXHJpL1M6rhNJnc9Wbal9w==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", + "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", "dev": true, "requires": { - "jake": "^10.6.1" + "jake": "^10.8.5" } }, "electron-to-chromium": { @@ -18109,9 +17955,9 @@ } }, "filelist": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.3.tgz", - "integrity": "sha512-LwjCsruLWQULGYKy7TX0OPtrL9kLpojOFKc5VCTxdFTV7w5zbsgqVKfnkKG7Qgjtq50gKfO56hJv88OfcGb70Q==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, "requires": { "minimatch": "^5.0.1" @@ -18127,9 +17973,9 @@ } }, "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -18362,6 +18208,12 @@ "is-glob": "^4.0.3" } }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, "global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", @@ -18462,9 +18314,9 @@ } }, "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, "grapheme-splitter": { @@ -18474,18 +18326,19 @@ "dev": true }, "graphql": { - "version": "15.8.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", - "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", + "version": "16.8.1", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", + "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", "dev": true }, "graphql-request": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-3.7.0.tgz", - "integrity": "sha512-dw5PxHCgBneN2DDNqpWu8QkbbJ07oOziy8z+bK/TAXufsOLaETuVO4GkXrbs0WjhdKhBMN3BkpN/RIvUHkmNUQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-5.1.0.tgz", + "integrity": "sha512-0OeRVYigVwIiXhNmqnPDt+JhMzsjinxHE7TVy3Lm6jUzav0guVcL0lfSbi6jVTRAxcbwgyr6yrZioSHxf9gHzw==", "dev": true, "requires": { - "cross-fetch": "^3.0.6", + "@graphql-typed-document-node/core": "^3.1.1", + "cross-fetch": "^3.1.5", "extract-files": "^9.0.0", "form-data": "^3.0.0" } @@ -18693,70 +18546,10 @@ "peer": true }, "husky": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/husky/-/husky-4.3.8.tgz", - "integrity": "sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "compare-versions": "^3.6.0", - "cosmiconfig": "^7.0.0", - "find-versions": "^4.0.0", - "opencollective-postinstall": "^2.0.2", - "pkg-dir": "^5.0.0", - "please-upgrade-node": "^3.2.0", - "slash": "^3.0.0", - "which-pm-runs": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "find-versions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz", - "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==", - "dev": true, - "requires": { - "semver-regex": "^3.1.2" - } - }, - "locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - }, - "pkg-dir": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", - "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", - "dev": true, - "requires": { - "find-up": "^5.0.0" - } - } - } + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.6.tgz", + "integrity": "sha512-EEuw/rfTiMjOfuL7pGO/i9otg1u36TXxqjIA6D9qxVjd/UXoDOsLor/BSFf5hTK50shwzCU3aVVwdXDp/lp7RA==", + "dev": true }, "iconv-lite": { "version": "0.4.24", @@ -19356,15 +19149,15 @@ } }, "jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", "dev": true, "requires": { "async": "^3.2.3", "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" + "filelist": "^1.0.4", + "minimatch": "^3.1.2" } }, "jest": { @@ -20546,9 +20339,9 @@ "dev": true }, "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true }, "nanomatch": { @@ -20584,30 +20377,28 @@ "dev": true }, "next": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/next/-/next-12.3.1.tgz", - "integrity": "sha512-l7bvmSeIwX5lp07WtIiP9u2ytZMv7jIeB8iacR28PuUEFG5j0HGAPnMqyG5kbZNBG2H7tRsrQ4HCjuMOPnANZw==", - "dev": true, - "requires": { - "@next/env": "12.3.1", - "@next/swc-android-arm-eabi": "12.3.1", - "@next/swc-android-arm64": "12.3.1", - "@next/swc-darwin-arm64": "12.3.1", - "@next/swc-darwin-x64": "12.3.1", - "@next/swc-freebsd-x64": "12.3.1", - "@next/swc-linux-arm-gnueabihf": "12.3.1", - "@next/swc-linux-arm64-gnu": "12.3.1", - "@next/swc-linux-arm64-musl": "12.3.1", - "@next/swc-linux-x64-gnu": "12.3.1", - "@next/swc-linux-x64-musl": "12.3.1", - "@next/swc-win32-arm64-msvc": "12.3.1", - "@next/swc-win32-ia32-msvc": "12.3.1", - "@next/swc-win32-x64-msvc": "12.3.1", - "@swc/helpers": "0.4.11", + "version": "14.0.4", + "resolved": "https://registry.npmjs.org/next/-/next-14.0.4.tgz", + "integrity": "sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==", + "dev": true, + "requires": { + "@next/env": "14.0.4", + "@next/swc-darwin-arm64": "14.0.4", + "@next/swc-darwin-x64": "14.0.4", + "@next/swc-linux-arm64-gnu": "14.0.4", + "@next/swc-linux-arm64-musl": "14.0.4", + "@next/swc-linux-x64-gnu": "14.0.4", + "@next/swc-linux-x64-musl": "14.0.4", + "@next/swc-win32-arm64-msvc": "14.0.4", + "@next/swc-win32-ia32-msvc": "14.0.4", + "@next/swc-win32-x64-msvc": "14.0.4", + "@swc/helpers": "0.5.2", + "busboy": "1.6.0", "caniuse-lite": "^1.0.30001406", - "postcss": "8.4.14", - "styled-jsx": "5.0.7", - "use-sync-external-store": "1.2.0" + "graceful-fs": "^4.2.11", + "postcss": "8.4.31", + "styled-jsx": "5.1.1", + "watchpack": "2.4.0" } }, "nice-try": { @@ -20618,9 +20409,9 @@ "peer": true }, "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, "requires": { "whatwg-url": "^5.0.0" @@ -20629,19 +20420,19 @@ "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true }, "whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "requires": { "tr46": "~0.0.3", @@ -20952,12 +20743,6 @@ "is-wsl": "^2.1.1" } }, - "opencollective-postinstall": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", - "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", - "dev": true - }, "optionator": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", @@ -21226,12 +21011,12 @@ "peer": true }, "postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", "dev": true, "requires": { - "nanoid": "^3.3.4", + "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } @@ -21454,9 +21239,9 @@ "dev": true }, "prettier": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz", - "integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.4.tgz", + "integrity": "sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==", "dev": true }, "prettier-linter-helpers": { @@ -21555,9 +21340,9 @@ "dev": true }, "react": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.0.0.tgz", - "integrity": "sha512-x+VL6wbT4JRVPm7EGxXhZ8w8LTROaxPXOqhlGyVSrv0sB1jkyFGgXxJ8LVoPRLvPR6/CIZGFmfzqUa2NYeMr2A==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", "dev": true, "peer": true, "requires": { @@ -21565,14 +21350,14 @@ } }, "react-dom": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.0.0.tgz", - "integrity": "sha512-XqX7uzmFo0pUceWFCt7Gff6IyIMzFUn7QMZrbrQfGxtaxXZIcGQzoNpRLE3fQLnS4XzLLPMZX2T9TRcSrasicw==", + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", "dev": true, "peer": true, "requires": { "loose-envify": "^1.1.0", - "scheduler": "^0.21.0" + "scheduler": "^0.23.0" } }, "react-is": { @@ -21977,13 +21762,14 @@ } }, "rivet-graphql": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/rivet-graphql/-/rivet-graphql-0.3.1.tgz", - "integrity": "sha512-HEov02XhZ6H1jOME+mO8CZwliu/UtgZSHixYUwvQ7HSx3gk8EOVaQY5c3zscOYjZECvP8cR4+1Ob3KHWJRWEMw==", + "version": "0.6.0-canary-20230309231927", + "resolved": "https://registry.npmjs.org/rivet-graphql/-/rivet-graphql-0.6.0-canary-20230309231927.tgz", + "integrity": "sha512-6+HlBIKGty0+XULdpQaXwFpXgItmNUOCSZ8a6Eit/kJzXPp7YVyBMvCN9ozaRVqHUK8PiToGB+jg+jo8/V+bgw==", "dev": true, "requires": { - "graphql": "^15.3.0", - "graphql-request": "^3.0.0" + "@graphql-typed-document-node/core": "^3.1.2", + "graphql": "^16.6.0", + "graphql-request": "~5.1.0" } }, "rsvp": { @@ -22325,9 +22111,9 @@ } }, "scheduler": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", - "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", "dev": true, "peer": true, "requires": { @@ -22349,12 +22135,6 @@ "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", "dev": true }, - "semver-regex": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.4.tgz", - "integrity": "sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==", - "dev": true - }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -22955,6 +22735,12 @@ "internal-slot": "^1.0.4" } }, + "streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true + }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -23130,11 +22916,13 @@ "dev": true }, "styled-jsx": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.0.7.tgz", - "integrity": "sha512-b3sUzamS086YLRuvnaDigdAewz1/EFYlHpYBP5mZovKEdQQOIIYq8lApylub3HHZ6xFjV051kkGU7cudJmrXEA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", + "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", "dev": true, - "requires": {} + "requires": { + "client-only": "0.0.1" + } }, "stylelint": { "version": "13.8.0", @@ -24067,13 +23855,6 @@ "dev": true, "peer": true }, - "use-sync-external-store": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", - "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", - "dev": true, - "requires": {} - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -24443,6 +24224,16 @@ "makeerror": "1.0.12" } }, + "watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, "webidl-conversions": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", @@ -24520,12 +24311,6 @@ "dev": true, "peer": true }, - "which-pm-runs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", - "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", - "dev": true - }, "which-typed-array": { "version": "1.1.9", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", diff --git a/website/package.json b/website/package.json index fe977d49062..5b37e969ca4 100644 --- a/website/package.json +++ b/website/package.json @@ -4,28 +4,23 @@ "version": "1.0.0", "author": "HashiCorp", "devDependencies": { - "@hashicorp/platform-cli": "^2.6.0", - "@hashicorp/platform-content-conformance": "^0.0.10", - "dart-linkcheck": "2.0.15", - "husky": "4.3.8", - "next": "^12.3.1", - "prettier": "2.2.1" - }, - "husky": { - "hooks": { - "pre-commit": "next-hashicorp precommit" - } + "@hashicorp/platform-cli": "^2.7.3", + "@hashicorp/platform-content-conformance": "^0.0.12", + "husky": "^9.0.6", + "next": "^14.0.4", + "prettier": "^3.2.4" }, "main": "index.js", "scripts": { "build": "./scripts/website-build.sh", "format": "next-hashicorp format", + "prepare": "husky", "lint": "next-hashicorp lint", "start": "./scripts/website-start.sh", "linkcheck": "linkcheck https://packer.io", "content-check": "hc-content --config base-docs" }, "engines": { - "npm": ">=7.0.0" + "npm": ">=9.6.7" } } From 1e6041ab05e5214a9f8693ae15aa0687d89ed382 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 7 Dec 2023 10:30:11 -0500 Subject: [PATCH 284/381] docs/plugins:Fix incorrect plugin directory path --- website/content/docs/plugins/install-plugins.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/plugins/install-plugins.mdx b/website/content/docs/plugins/install-plugins.mdx index b2d97975216..1919ff5fce1 100644 --- a/website/content/docs/plugins/install-plugins.mdx +++ b/website/content/docs/plugins/install-plugins.mdx @@ -220,7 +220,7 @@ directory, as documented in [Configuring Packer](https://developer.hashicorp.com/packer/docs/configure#packer-s-plugin-directory). For example, if your configuration directory is located in `~/.config/packer`, -you can copy the binary to `~/.config/plugins/packer-plugin-NAME`, and +you can copy the binary to `~/.config/packer/plugins/packer-plugin-NAME`, and Packer will be able to load it afterwards. If you have a `required_plugins` for the plugin you're manually installing, make sure From ca066f73bf8649adf393e860011d1d3eb1aa1e71 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 23 Jan 2024 15:36:15 -0500 Subject: [PATCH 285/381] Update CHANGELOG --- CHANGELOG.md | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 81da4bcc5e9..efb48eac5c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,68 @@ -## 1.10.1 (Upcoming) +## 1.11.0 (Upcoming) + +### NOTES: +**Breaking Change**: Support for loading single-component plugins has been removed from Packer. [GH-12785](https://github.com/hashicorp/packer/pull/12785) + +### IMPROVEMENTS: +* core: remove support single-component plugins. [GH-12785](https://github.com/hashicorp/packer/pull/12785) + +## 1.10.1 (January 30, 2024) + +### NOTES: +* **HCP Packer** has been updated to follow an artifact-agnostic approach for + publishing and consuming built artifacts. To best support the new approach, HCP Packer components within Packer have + been updated to use the v2 nomenclature when publishing build metadata to + HCP Packer. These changes include data source components for consuming HCP + Packer stored artifacts. The data source components [hcp-packer-version](https://developer.hashicorp.com/packer/docs/datasources/hcp/hcp-packer-version) + and [hcp-packer-artifact](https://developer.hashicorp.com/packer/docs/datasources/hcp/hcp-packer-artifact) respectively replace, the now deprecated, + [hcp-packer-iteration](https://developer.hashicorp.com/packer/docs/datasources/hcp/hcp-packer-iteration) + and [hcp-packer-image](https://developer.hashicorp.com/packer/docs/datasources/hcp/hcp-packer-image) + component data sources. The added changes are compatible with all existing HCP Packer workflows and do not warrant any + immediate template changes by the user. However, we encourage all HCP Packer users to visit the updated + HCP Packer [CHANGELOG](https://developer.hashicorp.com/hcp/docs/changelog) to familiarize themselves with the nomenclature changes. + [GH-12794](https://github.com/hashicorp/packer/pull/12794) [GH-12799](https://github.com/hashicorp/packer/pull/12799) +* The `hcp-packer-image` data source has been deprecated, please use HCP Packer + Artifact data source instead. + [GH-12794](https://github.com/hashicorp/packer/pull/12794) +* The `hcp-packer-iteration` data source has been deprecated, please use HCP + Packer Version data source instead. + [GH-12794](https://github.com/hashicorp/packer/pull/12794) +* The contextual variable `packer.iterationID` has been deprecated, please use + the new contextual variable `packer.versionFingerprint`. The iterationID + represents the HCP Packer iteration that build metadata has been publish + to, with this release an Iteration is now referred to as a Version and the + ID has been replaced by the Version Fingerprint. + [GH-12803](https://github.com/hashicorp/packer/pull/12803) + +### FEATURES: +* **New Data source** `hcp-packer-artifact` The HCP Packer Artifact Data Source + retrieves information about an artifact from the HCP Packer Registry. + [GH-12794](https://github.com/hashicorp/packer/pull/12794) +* **New Data source** `hcp-packer-version` The HCP Packer Version Data Source + retrieves information about HCP Packer Version from the HCP Packer. + Registry. [GH-12794](https://github.com/hashicorp/packer/pull/12794) + +### SECURITY: +* core: Bump Go dependencies to address various CVEs. [GH-12777](https://github.com/hashicorp/packer/pull/12777) +* core: Bump github.com/cloudflare/circl to address GHSA-9763-4f94-gfch. [GH-12781](https://github.com/hashicorp/packer/pull/12781) + +### IMPROVEMENTS: +* core: Bump github.com/hashicorp/hcp-sdk-go from 0.79.0 to 0.81.0 + [GH-12792](https://github.com/hashicorp/packer/pull/12792) + [GH-12764](https://github.com/hashicorp/packer/pull/12764) +* core: Update error messaging for HCP incompatible plugin builds. + [GH-12800](https://github.com/hashicorp/packer/pull/12800) +* core: Update HCP Packer integration to use HCP Packer v2 nomenclature, with + this change HCP Packer iterations are now referred to as Versions, and + Images are now referred to as Artifacts. The data sources for interacting + with HCP Packer have been respectively renamed to align with the terminology + of Version and Artifact. + [GH-12794](https://github.com/hashicorp/packer/pull/12794) + [GH-12799](https://github.com/hashicorp/packer/pull/12799) +* core: Update spacing for flags within Help text. + [GH-12742](https://github.com/hashicorp/packer/pull/12742) + [GH-12743](https://github.com/hashicorp/packer/pull/12743) + ## 1.10.0 (December 5, 2023) From 08d41c2679963a9d9e0faae935b8afe0d9a4eb09 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 30 Jan 2024 15:33:21 -0500 Subject: [PATCH 286/381] Fix URL rewrite check error for DevDot portal (#12818) Refer to job https://github.com/hashicorp/packer/actions/runs/7709708630/job/21011464094 --- website/content/docs/plugins/install-plugins.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/content/docs/plugins/install-plugins.mdx b/website/content/docs/plugins/install-plugins.mdx index 1919ff5fce1..4302db8473f 100644 --- a/website/content/docs/plugins/install-plugins.mdx +++ b/website/content/docs/plugins/install-plugins.mdx @@ -69,7 +69,7 @@ various outputs, like error messages. At initialization, Packer attempts to discover the plugins installed locally. The logic follows what's described in Configuring Packer's -[plugin directory](https://developer.hashicorp.com/packer/docs/configure#packer-s-plugin-directory) +[plugin directory](/packer/docs/configure#packer-s-plugin-directory) section. While Packer is not verbose during this step, you can peek into what it is discovering @@ -208,7 +208,7 @@ packer plugins install github.com/hashicorp/vagrant The command will install the plugin in the `PACKER_CONFIG_DIR` set, or its default location, which depends on the OS/environment, as documented in -[Configuring Packer](https://developer.hashicorp.com/packer/docs/configure#packer-s-plugin-directory). +[Configuring Packer](/packer/docs/configure#packer-s-plugin-directory). @@ -217,7 +217,7 @@ If you have obtained or built a plugin binary for your OS/Architecture and want use it with Packer, you can install it manually. For Packer to load the plugin, it must be named with the convention `packer-plugin-NAME`, and placed in Packer's plugin directory, as documented in -[Configuring Packer](https://developer.hashicorp.com/packer/docs/configure#packer-s-plugin-directory). +[Configuring Packer](/packer/docs/configure#packer-s-plugin-directory). For example, if your configuration directory is located in `~/.config/packer`, you can copy the binary to `~/.config/packer/plugins/packer-plugin-NAME`, and From 767005149c13a51d3feba87f4a1a3a92e2f69a06 Mon Sep 17 00:00:00 2001 From: Heat Hamilton <55773810+heatlikeheatwave@users.noreply.github.com> Date: Tue, 30 Jan 2024 17:25:03 -0500 Subject: [PATCH 287/381] website: fix husky command (#12821) * Change husky pre-commit hook to work in sub-directory of .git * Added dart-linkcheck back in for linkcheck command --- website/.husky/pre-commit | 4 +++- website/package-lock.json | 32 +++++++++++++++++++++++++------- website/package.json | 7 ++++--- 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/website/.husky/pre-commit b/website/.husky/pre-commit index 9e1c644b65a..ed0b6423e4d 100644 --- a/website/.husky/pre-commit +++ b/website/.husky/pre-commit @@ -1 +1,3 @@ -next-hashicorp precommit \ No newline at end of file +cd website + +npx next-hashicorp precommit \ No newline at end of file diff --git a/website/package-lock.json b/website/package-lock.json index f79c4a2cf05..23bfe8113ea 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -10,7 +10,8 @@ "devDependencies": { "@hashicorp/platform-cli": "^2.7.3", "@hashicorp/platform-content-conformance": "^0.0.12", - "husky": "^9.0.6", + "dart-linkcheck": "^2.0.15", + "husky": "^9.0.7", "next": "^14.0.4", "prettier": "^3.2.4" }, @@ -3654,6 +3655,17 @@ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true }, + "node_modules/dart-linkcheck": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/dart-linkcheck/-/dart-linkcheck-2.0.15.tgz", + "integrity": "sha512-ZMvxkAyEpBTvBFk+DPjcK0ObNy8GM4gmrGG1qIu0EXb/zj25vjRWNnhLHKZw4JlOLo02oWlwDeqo98GuBlJcIg==", + "dev": true, + "bin": { + "linkcheck": "bin/linkcheck", + "linkcheck-linux": "bin/linkcheck-linux", + "linkcheck-win": "bin/linkcheck-win" + } + }, "node_modules/data-urls": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", @@ -6078,9 +6090,9 @@ } }, "node_modules/husky": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.6.tgz", - "integrity": "sha512-EEuw/rfTiMjOfuL7pGO/i9otg1u36TXxqjIA6D9qxVjd/UXoDOsLor/BSFf5hTK50shwzCU3aVVwdXDp/lp7RA==", + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.7.tgz", + "integrity": "sha512-vWdusw+y12DUEeoZqW1kplOFqk3tedGV8qlga8/SF6a3lOiWLqGZZQvfWvY0fQYdfiRi/u1DFNpudTSV9l1aCg==", "dev": true, "bin": { "husky": "bin.js" @@ -16672,6 +16684,12 @@ "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true }, + "dart-linkcheck": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/dart-linkcheck/-/dart-linkcheck-2.0.15.tgz", + "integrity": "sha512-ZMvxkAyEpBTvBFk+DPjcK0ObNy8GM4gmrGG1qIu0EXb/zj25vjRWNnhLHKZw4JlOLo02oWlwDeqo98GuBlJcIg==", + "dev": true + }, "data-urls": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", @@ -18546,9 +18564,9 @@ "peer": true }, "husky": { - "version": "9.0.6", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.6.tgz", - "integrity": "sha512-EEuw/rfTiMjOfuL7pGO/i9otg1u36TXxqjIA6D9qxVjd/UXoDOsLor/BSFf5hTK50shwzCU3aVVwdXDp/lp7RA==", + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.7.tgz", + "integrity": "sha512-vWdusw+y12DUEeoZqW1kplOFqk3tedGV8qlga8/SF6a3lOiWLqGZZQvfWvY0fQYdfiRi/u1DFNpudTSV9l1aCg==", "dev": true }, "iconv-lite": { diff --git a/website/package.json b/website/package.json index 5b37e969ca4..6f934508cec 100644 --- a/website/package.json +++ b/website/package.json @@ -6,7 +6,8 @@ "devDependencies": { "@hashicorp/platform-cli": "^2.7.3", "@hashicorp/platform-content-conformance": "^0.0.12", - "husky": "^9.0.6", + "dart-linkcheck": "^2.0.15", + "husky": "^9.0.7", "next": "^14.0.4", "prettier": "^3.2.4" }, @@ -14,11 +15,11 @@ "scripts": { "build": "./scripts/website-build.sh", "format": "next-hashicorp format", - "prepare": "husky", "lint": "next-hashicorp lint", "start": "./scripts/website-start.sh", "linkcheck": "linkcheck https://packer.io", - "content-check": "hc-content --config base-docs" + "content-check": "hc-content --config base-docs", + "prepare": "cd .. && husky website/.husky" }, "engines": { "npm": ">=9.6.7" From dff49df12903a96597d46d6d3d4b46aa26e0aa03 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 30 Jan 2024 11:49:03 -0500 Subject: [PATCH 288/381] hcl2template: check bucket name at parse-time Not validating the bucket's name during parse leads to configurations being marked as valid, even if the bucket name is not, which will fail during a real build afterwards. To avoid this problem and fail with an error as quickly as possible, we add a check during parsing, so that it gets reported for validate as well. --- .../testdata/hcp_par/invalid_bucket.pkr.hcl | 12 ++ .../testdata/hcp_par/long-description.pkr.hcl | 6 + .../testdata/hcp_par/long_bucket.pkr.hcl | 12 ++ .../testdata/hcp_par/ok_bucket.pkr.hcl | 12 ++ .../testdata/hcp_par/short_bucket.pkr.hcl | 12 ++ .../types.build.hcp_packer_registry.go | 11 ++ .../types.build.hcp_packer_registry_test.go | 111 ++++++++++++++++++ hcl2template/types.packer_config_test.go | 1 + 8 files changed, 177 insertions(+) create mode 100644 hcl2template/testdata/hcp_par/invalid_bucket.pkr.hcl create mode 100644 hcl2template/testdata/hcp_par/long_bucket.pkr.hcl create mode 100644 hcl2template/testdata/hcp_par/ok_bucket.pkr.hcl create mode 100644 hcl2template/testdata/hcp_par/short_bucket.pkr.hcl diff --git a/hcl2template/testdata/hcp_par/invalid_bucket.pkr.hcl b/hcl2template/testdata/hcp_par/invalid_bucket.pkr.hcl new file mode 100644 index 00000000000..6f2d36afaaa --- /dev/null +++ b/hcl2template/testdata/hcp_par/invalid_bucket.pkr.hcl @@ -0,0 +1,12 @@ +source "null" "test" { + communicator = "none" +} + +build { + name = "bucket-slug" + hcp_packer_registry { + bucket_name = "invalid_bucket" + } + + sources = ["null.test"] +} diff --git a/hcl2template/testdata/hcp_par/long-description.pkr.hcl b/hcl2template/testdata/hcp_par/long-description.pkr.hcl index c20502e1bd8..68abb110ce8 100644 --- a/hcl2template/testdata/hcp_par/long-description.pkr.hcl +++ b/hcl2template/testdata/hcp_par/long-description.pkr.hcl @@ -1,3 +1,7 @@ +source "null" "test" { + communicator = "none" +} + build { name = "bucket-slug" hcp_packer_registry { @@ -7,4 +11,6 @@ super super super super super super super super super super super super super su super super super long description EOT } + + sources = ["null.test"] } diff --git a/hcl2template/testdata/hcp_par/long_bucket.pkr.hcl b/hcl2template/testdata/hcp_par/long_bucket.pkr.hcl new file mode 100644 index 00000000000..1a234647df4 --- /dev/null +++ b/hcl2template/testdata/hcp_par/long_bucket.pkr.hcl @@ -0,0 +1,12 @@ +source "null" "test" { + communicator = "none" +} + +build { + name = "bucket-slug" + hcp_packer_registry { + bucket_name = "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" + } + + sources = ["null.test"] +} diff --git a/hcl2template/testdata/hcp_par/ok_bucket.pkr.hcl b/hcl2template/testdata/hcp_par/ok_bucket.pkr.hcl new file mode 100644 index 00000000000..6f2cfbfff68 --- /dev/null +++ b/hcl2template/testdata/hcp_par/ok_bucket.pkr.hcl @@ -0,0 +1,12 @@ +source "null" "test" { + communicator = "none" +} + +build { + name = "bucket-slug" + hcp_packer_registry { + bucket_name = "ok-Bucket-name-1" + } + + sources = ["null.test"] +} diff --git a/hcl2template/testdata/hcp_par/short_bucket.pkr.hcl b/hcl2template/testdata/hcp_par/short_bucket.pkr.hcl new file mode 100644 index 00000000000..734dd8b46bf --- /dev/null +++ b/hcl2template/testdata/hcp_par/short_bucket.pkr.hcl @@ -0,0 +1,12 @@ +source "null" "test" { + communicator = "none" +} + +build { + name = "bucket-slug" + hcp_packer_registry { + bucket_name = "ba" + } + + sources = ["null.test"] +} diff --git a/hcl2template/types.build.hcp_packer_registry.go b/hcl2template/types.build.hcp_packer_registry.go index b64b3ff4e55..ba8935b5d6a 100644 --- a/hcl2template/types.build.hcp_packer_registry.go +++ b/hcl2template/types.build.hcp_packer_registry.go @@ -5,6 +5,7 @@ package hcl2template import ( "fmt" + "regexp" "github.com/hashicorp/hcl/v2" "github.com/hashicorp/hcl/v2/gohcl" @@ -23,6 +24,8 @@ type HCPPackerRegistryBlock struct { HCL2Ref } +var bucketNameRegexp = regexp.MustCompile("^[a-zA-Z0-9-]{3,36}$") + func (p *Parser) decodeHCPRegistry(block *hcl.Block, cfg *PackerConfig) (*HCPPackerRegistryBlock, hcl.Diagnostics) { par := &HCPPackerRegistryBlock{} body := block.Body @@ -51,6 +54,14 @@ func (p *Parser) decodeHCPRegistry(block *hcl.Block, cfg *PackerConfig) (*HCPPac return nil, diags } + if !bucketNameRegexp.MatchString(b.Slug) { + diags = diags.Append(&hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: fmt.Sprintf("%s.bucket_name can only contain between 3 and 36 ASCII letters, numbers and hyphens", buildHCPPackerRegistryLabel), + Subject: block.DefRange.Ptr(), + }) + } + par.Slug = b.Slug par.Description = b.Description diff --git a/hcl2template/types.build.hcp_packer_registry_test.go b/hcl2template/types.build.hcp_packer_registry_test.go index 3ada389c29d..b27b80e5b34 100644 --- a/hcl2template/types.build.hcp_packer_registry_test.go +++ b/hcl2template/types.build.hcp_packer_registry_test.go @@ -7,7 +7,9 @@ import ( "path/filepath" "testing" + "github.com/hashicorp/hcl/v2" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" + "github.com/hashicorp/packer/builder/null" "github.com/hashicorp/packer/packer" "github.com/zclconf/go-cty/cty" ) @@ -129,11 +131,120 @@ func Test_ParseHCPPackerRegistryBlock(t *testing.T) { &PackerConfig{ CorePackerVersionString: lockedVersion, Basedir: filepath.Join("testdata", "hcp_par"), + Sources: map[SourceRef]SourceBlock{ + refNull: { + Type: "null", + Name: "test", + block: &hcl.Block{ + Type: "source", + }, + }, + }, + }, + true, true, + nil, + false, + }, + {"bucket name too short", + defaultParser, + parseTestArgs{"testdata/hcp_par/short_bucket.pkr.hcl", nil, nil}, + &PackerConfig{ + CorePackerVersionString: lockedVersion, + Basedir: filepath.Join("testdata", "hcp_par"), + Sources: map[SourceRef]SourceBlock{ + refNull: { + Type: "null", + Name: "test", + block: &hcl.Block{ + Type: "source", + }, + }, + }, }, true, true, nil, false, }, + {"bucket name too long", + defaultParser, + parseTestArgs{"testdata/hcp_par/long_bucket.pkr.hcl", nil, nil}, + &PackerConfig{ + CorePackerVersionString: lockedVersion, + Basedir: filepath.Join("testdata", "hcp_par"), + Sources: map[SourceRef]SourceBlock{ + refNull: { + Type: "null", + Name: "test", + block: &hcl.Block{ + Type: "source", + }, + }, + }, + }, + true, true, + nil, + false, + }, + {"bucket name invalid chars", + defaultParser, + parseTestArgs{"testdata/hcp_par/invalid_bucket.pkr.hcl", nil, nil}, + &PackerConfig{ + CorePackerVersionString: lockedVersion, + Basedir: filepath.Join("testdata", "hcp_par"), + Sources: map[SourceRef]SourceBlock{ + refNull: { + Type: "null", + Name: "test", + block: &hcl.Block{ + Type: "source", + }, + }, + }, + }, + true, true, + nil, + false, + }, + {"bucket name OK", + defaultParser, + parseTestArgs{"testdata/hcp_par/ok_bucket.pkr.hcl", nil, nil}, + &PackerConfig{ + CorePackerVersionString: lockedVersion, + Basedir: filepath.Join("testdata", "hcp_par"), + Sources: map[SourceRef]SourceBlock{ + refNull: { + Type: "null", + Name: "test", + block: &hcl.Block{ + Type: "source", + }, + }, + }, + Builds: Builds{ + { + Name: "bucket-slug", + HCPPackerRegistry: &HCPPackerRegistryBlock{Slug: "ok-Bucket-name-1"}, + Sources: []SourceUseBlock{ + { + SourceRef: refNull, + }, + }, + }, + }, + }, + false, false, + []packersdk.Build{ + &packer.CoreBuild{ + BuildName: "bucket-slug", + Type: "null.test", + Builder: &null.Builder{}, + Provisioners: []packer.CoreBuildProvisioner{}, + PostProcessors: [][]packer.CoreBuildPostProcessor{}, + Prepared: true, + }, + }, + false, + }, } testParse(t, tests) } diff --git a/hcl2template/types.packer_config_test.go b/hcl2template/types.packer_config_test.go index 5eae6a2f21f..69bc2da2c1c 100644 --- a/hcl2template/types.packer_config_test.go +++ b/hcl2template/types.packer_config_test.go @@ -22,6 +22,7 @@ var ( refVBIsoUbuntu1204 = SourceRef{Type: "virtualbox-iso", Name: "ubuntu-1204"} refAWSEBSUbuntu1604 = SourceRef{Type: "amazon-ebs", Name: "ubuntu-1604"} refAWSV3MyImage = SourceRef{Type: "amazon-v3-ebs", Name: "my-image"} + refNull = SourceRef{Type: "null", Name: "test"} pTrue = pointerToBool(true) ) From 4d38323ae1d42a9d6b0d6b6a7db2d809b69ab4c2 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 7 Feb 2024 15:40:08 -0500 Subject: [PATCH 289/381] Remove external Plugins from left navbar --- .github/workflows/check-plugin-docs.js | 105 ------------------ .github/workflows/check-plugin-docs.yml | 34 ------ .../content/docs/plugins/install-plugins.mdx | 2 +- website/data/docs-nav-data.json | 4 - 4 files changed, 1 insertion(+), 144 deletions(-) delete mode 100644 .github/workflows/check-plugin-docs.js delete mode 100644 .github/workflows/check-plugin-docs.yml diff --git a/.github/workflows/check-plugin-docs.js b/.github/workflows/check-plugin-docs.js deleted file mode 100644 index cb61a1870ab..00000000000 --- a/.github/workflows/check-plugin-docs.js +++ /dev/null @@ -1,105 +0,0 @@ -const fs = require("fs"); -const path = require("path"); -const { resolvePluginDocs } = require("@hashicorp/platform-packer-plugins"); - -const COLOR_RESET = "\x1b[0m"; -const COLOR_GREEN = "\x1b[32m"; -const COLOR_BLUE = "\x1b[34m"; -const COLOR_RED = "\x1b[31m"; - -const VALID_PLUGIN_TIERS = ["official", "community", "verified"]; - - -async function checkPluginDocs() { - const failureMessages = []; - const pluginsPath = "website/data/plugins-manifest.json"; - const pluginsFile = fs.readFileSync(path.join(process.cwd(), pluginsPath)); - const pluginEntries = JSON.parse(pluginsFile); - const pluginEntriesWithDocs = await resolvePluginDocs(pluginEntries); - const entriesCount = pluginEntries.length; - console.log(`\nResolving plugin docs from ${entriesCount} repositories …`); - for (var i = 0; i < entriesCount; i++) { - const pluginEntry = pluginEntriesWithDocs[i]; - const { title, repo, version } = pluginEntry; - console.log(`\n${COLOR_BLUE}${repo}${COLOR_RESET} | ${title}`); - console.log(`Fetching docs from release "${version}" …`); - try { - // Validate that all required properties are present - const undefinedProps = ["title", "repo", "version", "path"].filter( - (key) => typeof pluginEntry[key] == "undefined" - ); - if (undefinedProps.length > 0) { - throw new Error( - `Failed to validate plugin docs config. Undefined configuration properties ${JSON.stringify( - undefinedProps - )} found for "${ - title || pluginEntry.path || repo - }". In "website/data/docs-remote-plugins.json", please ensure the missing properties ${JSON.stringify( - undefinedProps - )} are defined. Additional information on this configuration can be found in "website/README.md".` - ); - } - // Validate pluginTier property - const { pluginTier } = pluginEntry; - if (typeof pluginTier !== "undefined") { - const isValid = VALID_PLUGIN_TIERS.indexOf(pluginTier) !== -1; - if (!isValid) { - throw new Error( - `Failed to validate plugin docs config. Invalid pluginTier "${pluginTier}" found for "${ - title || pluginEntry.path || repo - }". In "website/data/docs-remote-plugins.json", the optional pluginTier property must be one of ${JSON.stringify( - VALID_PLUGIN_TIERS - )}. The pluginTier property can also be omitted, in which case it will be determined from the plugin repository owner.` - ); - } - } - // Validate that local zip files are not used in production - if (typeof pluginEntry.zipFile !== "undefined") { - throw new Error( - `Local ZIP file being used for "${ - title || pluginEntry.path || repo - }". The zipFile option should only be used for local development. Please omit the zipFile attribute and ensure the plugin entry points to a remote repository.` - ); - } - // Attempt to fetch plugin docs files - const docsMdxFiles = pluginEntry.files - const mdxFilesByComponent = docsMdxFiles.reduce((acc, mdxFile) => { - const componentType = mdxFile.filePath.split("/")[1]; - if (!acc[componentType]) acc[componentType] = []; - acc[componentType].push(mdxFile); - return acc; - }, {}); - console.log(`${COLOR_GREEN}Found valid docs:${COLOR_RESET}`); - Object.keys(mdxFilesByComponent).forEach((component) => { - const componentFiles = mdxFilesByComponent[component]; - console.log(` ${component}`); - componentFiles.forEach(({ filePath }) => { - const pathFromComponent = filePath.split("/").slice(2).join("/"); - console.log(` ├── ${pathFromComponent}`); - }); - }); - } catch (err) { - console.log(`${COLOR_RED}${err}${COLOR_RESET}`); - failureMessages.push(`\n${COLOR_RED}× ${repo}: ${COLOR_RESET}${err}`); - } - } - - if (failureMessages.length === 0) { - console.log( - `\n---\n\n${COLOR_GREEN}Summary: Successfully resolved all plugin docs.` - ); - pluginEntries.forEach((e) => - console.log(`${COLOR_GREEN}✓ ${e.repo}${COLOR_RESET}`) - ); - console.log(""); - } else { - console.log( - `\n---\n\n${COLOR_RED}Summary: Failed to fetch docs for ${failureMessages.length} plugin(s):` - ); - failureMessages.forEach((err) => console.log(err)); - console.log(""); - process.exit(1); - } -} - -checkPluginDocs(); diff --git a/.github/workflows/check-plugin-docs.yml b/.github/workflows/check-plugin-docs.yml deleted file mode 100644 index 00ba2851ef8..00000000000 --- a/.github/workflows/check-plugin-docs.yml +++ /dev/null @@ -1,34 +0,0 @@ -# -# This GitHub action checks plugin repositories for valid docs. -# -# This provides a quick assessment on PRs of whether -# there might be issues with docs in plugin repositories. -# -# This is intended to help debug Vercel build issues, which -# may or may not be related to docs in plugin repositories. - -name: "website: Check plugin docs" -on: - pull_request: - paths: - - "website/**" - schedule: - - cron: "45 0 * * *" - -permissions: - contents: read - -jobs: - check-plugin-docs: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - - name: Setup Node - uses: actions/setup-node@e33196f7422957bea03ed53f6fbb155025ffc7b8 # v3.7.0 - with: - node-version: '16.x' - - name: Install Dependencies - run: npm i @hashicorp/platform-packer-plugins - - name: Fetch and validate plugin docs - run: node .github/workflows/check-plugin-docs.js diff --git a/website/content/docs/plugins/install-plugins.mdx b/website/content/docs/plugins/install-plugins.mdx index 4302db8473f..2413d025ffb 100644 --- a/website/content/docs/plugins/install-plugins.mdx +++ b/website/content/docs/plugins/install-plugins.mdx @@ -11,7 +11,7 @@ Packer plugins are separate, standalone applications that perform tasks during e You do not need to install the components that ship with the Packer binary. Packer automatically knows how to find and launch these built-in plugins. -This page explains how to install custom external plugins. Refer to [External Plugins](/packer/plugins) for a list of available plugins and their documentation. +This page explains how to install custom external plugins. Refer to [External Plugins](/packer/integrations) for a list of available plugins and their documentation. Depending on the template type you're using (HCL2 or legacy JSON), the methods for installing plugins may differ. diff --git a/website/data/docs-nav-data.json b/website/data/docs-nav-data.json index 807fb16f968..e5423f814c7 100644 --- a/website/data/docs-nav-data.json +++ b/website/data/docs-nav-data.json @@ -856,10 +856,6 @@ "title": "Installing Plugins", "path": "plugins/install-plugins" }, - { - "title": "External Plugins", - "href": "/plugins" - }, { "title": "Developing Plugins", "routes": [ From 9b01bfa4865ee90d2fe1289ae9b43d1d8aeb87bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 Feb 2024 12:13:09 -0500 Subject: [PATCH 290/381] build(deps): bump github.com/hashicorp/hcp-sdk-go from 0.82.0 to 0.83.0 (#12827) Bumps [github.com/hashicorp/hcp-sdk-go](https://github.com/hashicorp/hcp-sdk-go) from 0.82.0 to 0.83.0. - [Release notes](https://github.com/hashicorp/hcp-sdk-go/releases) - [Changelog](https://github.com/hashicorp/hcp-sdk-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/hcp-sdk-go/compare/v0.82.0...v0.83.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/hcp-sdk-go dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index fb898a3d03a..697525ebc71 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/hashicorp/go-uuid v1.0.3 github.com/hashicorp/go-version v1.6.0 github.com/hashicorp/hcl/v2 v2.19.1 - github.com/hashicorp/hcp-sdk-go v0.82.0 + github.com/hashicorp/hcp-sdk-go v0.83.0 github.com/hashicorp/packer-plugin-amazon v1.2.1 github.com/hashicorp/packer-plugin-sdk v0.5.2 github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 diff --git a/go.sum b/go.sum index bdecb380cef..ee86695fd14 100644 --- a/go.sum +++ b/go.sum @@ -299,8 +299,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= -github.com/hashicorp/hcp-sdk-go v0.82.0 h1:VdVTVwyqkuDJ3LGvSj4ldpB4aH1HD84seQYxYy0LcSc= -github.com/hashicorp/hcp-sdk-go v0.82.0/go.mod h1:vQ4fzdL1AmhIAbCw+4zmFe5Hbpajj3NvRWkJoVuxmAk= +github.com/hashicorp/hcp-sdk-go v0.83.0 h1:/IoDE0H+dTdoEorEAhdWepyxzTpQlSj1WxLTkHaBCbA= +github.com/hashicorp/hcp-sdk-go v0.83.0/go.mod h1:vQ4fzdL1AmhIAbCw+4zmFe5Hbpajj3NvRWkJoVuxmAk= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR/prTM= From 548893bbee4e5a49bbbb07a81d19b2e2641fa421 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 7 Feb 2024 11:22:26 -0500 Subject: [PATCH 291/381] build: don't suggest lack of HCP support on fail When running a build with HCP Packer enabled, Packer attempts to push the build status to HCP. If the build fails, we update the status to BUILD_FAILED, and that's the end of it. If however the build succeeds, Packer attempts to get the HCP artifact from the builder, which will only succeed if the builder supports it. Otherwise, we'll get either nil, or an artifact type that is not compatible with what is expected for HCP support. When either of those happens, we warn that the builder may not support HCP Packer at all, so users are aware of the problem. However, when the error was introduced, it only looked at the fact that an error was produced, independently of the type of error. This caused legitimate errors while building to be reported as potential incompatibility between the builder and HCP, which was confusing to users. This commit changes this by introducing a new error type, only produced when the artifact either is nil, or failed to be deserialised into a HCP artifact, which lets us produce the incompatibility warning with more accuracy. --- command/build.go | 43 ++++++++++++++------------- internal/hcp/registry/types.bucket.go | 17 +++++++++-- 2 files changed, 37 insertions(+), 23 deletions(-) diff --git a/command/build.go b/command/build.go index c0a4d8c01aa..60ede416894 100644 --- a/command/build.go +++ b/command/build.go @@ -207,7 +207,6 @@ func (c *BuildCommand) RunContext(buildCtx context.Context, cla *BuildArgs) int }{m: make(map[string]error)} limitParallel := semaphore.NewWeighted(cla.ParallelBuilds) - var hasPossibleIncompatibleHCPIntegration bool for i := range builds { if err := buildCtx.Err(); err != nil { log.Println("Interrupted, not going to start any more builds.") @@ -270,16 +269,29 @@ func (c *BuildCommand) RunContext(buildCtx context.Context, cla *BuildArgs) int runArtifacts, err) if hcperr != nil { - writeDiags(c.Ui, nil, hcl.Diagnostics{ - &hcl.Diagnostic{ - Summary: fmt.Sprintf( - "publishing build metadata to HCP Packer for %q failed", - name), - Severity: hcl.DiagError, - Detail: hcperr.Error(), - }, - }) - hasPossibleIncompatibleHCPIntegration = true + if _, ok := hcperr.(*registry.NotAHCPArtifactError); ok { + writeDiags(c.Ui, nil, hcl.Diagnostics{ + &hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: fmt.Sprintf("The %q builder produced an artifact that cannot be pushed to HCP Packer", b.Name()), + Detail: fmt.Sprintf( + `%s +Check that you are using an HCP Ready integration before trying again: +%s`, + hcperr, hcpReadyIntegrationURL), + }, + }) + } else { + writeDiags(c.Ui, nil, hcl.Diagnostics{ + &hcl.Diagnostic{ + Summary: fmt.Sprintf( + "publishing build metadata to HCP Packer for %q failed", + name), + Severity: hcl.DiagError, + Detail: hcperr.Error(), + }, + }) + } } if err != nil { @@ -391,15 +403,6 @@ func (c *BuildCommand) RunContext(buildCtx context.Context, cla *BuildArgs) int c.Ui.Say("\n==> Builds finished but no artifacts were created.") } - if hasPossibleIncompatibleHCPIntegration { - msg := fmt.Sprintf(` -It looks like one or more plugins in your build may be incompatible with HCP Packer. -Check that you are using an HCP Ready integration before trying again: -%s`, hcpReadyIntegrationURL) - - c.Ui.Error(msg) - } - if len(errs.m) > 0 { // If any errors occurred, exit with a non-zero exit status ret = 1 diff --git a/internal/hcp/registry/types.bucket.go b/internal/hcp/registry/types.bucket.go index 00b40e34568..6b92e6ce196 100644 --- a/internal/hcp/registry/types.bucket.go +++ b/internal/hcp/registry/types.bucket.go @@ -595,6 +595,10 @@ func (bucket *Bucket) startBuild(ctx context.Context, buildName string) error { return nil } +type NotAHCPArtifactError struct { + error +} + func (bucket *Bucket) completeBuild( ctx context.Context, buildName string, @@ -638,12 +642,19 @@ func (bucket *Bucket) completeBuild( } state := art.State(packerSDKRegistry.ArtifactStateURI) + if state == nil { + return packerSDKArtifacts, &NotAHCPArtifactError{ + fmt.Errorf("The HCP artifact returned by the builder is nil, this is likely because the builder does not support HCP Packer."), + } + } + err = decoder.Decode(state) if err != nil { - return packerSDKArtifacts, fmt.Errorf( - "failed to obtain HCP Packer compliant artifact: %w", - err) + return packerSDKArtifacts, &NotAHCPArtifactError{ + fmt.Errorf("Failed to obtain HCP Packer compliant artifact: %s", err), + } } + log.Printf("[TRACE] updating artifacts for build %q", buildName) err = bucket.UpdateArtifactForBuild(buildName, sdkImages...) From 72db1c35e9c5fc096585a21c1f6a25b1b7ad7c5d Mon Sep 17 00:00:00 2001 From: Jenna Goldstrich Date: Fri, 16 Feb 2024 10:40:58 -0800 Subject: [PATCH 292/381] Don't use old nomenclature in terminology docs (#12843) --- website/content/docs/terminology.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/website/content/docs/terminology.mdx b/website/content/docs/terminology.mdx index d7ddeffd2c7..31bee6ed6f6 100644 --- a/website/content/docs/terminology.mdx +++ b/website/content/docs/terminology.mdx @@ -28,7 +28,7 @@ for quick referencing. artifact is a set of AMI IDs (one per region). For the VMware builder, the artifact is a directory of files comprising the created virtual machine. -- `Builds` are a single task that eventually produces an image for a single +- `Builds` are a single task that eventually produces an artifact for a single platform. Multiple builds run in parallel. Example usage in a sentence: "The Packer build produced an AMI to run our web application." Or: "Packer is running the builds now for VMware, AWS, and VirtualBox." @@ -36,7 +36,7 @@ for quick referencing. - `Builders` are components of Packer that are able to create a machine image for a single platform. Builders read in some configuration and use that to run and generate a machine image. A builder is invoked as part of a build - in order to create the actual resulting images. Example builders include + in order to create the actual resulting artifacts. Example builders include VirtualBox, VMware, and Amazon EC2. - `Commands` are sub-commands for the `packer` program that perform some job. @@ -55,7 +55,7 @@ for quick referencing. - `Provisioners` are components of Packer that install and configure software within a running machine prior to that machine being turned into a static - image. They perform the major work of making the image contain useful + artifact. They perform the major work of making the artifact contain useful software. Example provisioners include shell scripts, Chef, Puppet, etc. - `Templates` are either [HCL](https://packer.io/templates/hcl_templates) or JSON files which From 047b5d790e82e2b3a1e00db4b8065fd50e9d0bcf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 23 Feb 2024 14:14:00 +0000 Subject: [PATCH 293/381] build(deps-dev): bump json5 from 1.0.1 to 1.0.2 in /website Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2. - [Release notes](https://github.com/json5/json5/releases) - [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md) - [Commits](https://github.com/json5/json5/compare/v1.0.1...v1.0.2) --- updated-dependencies: - dependency-name: json5 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- website/package-lock.json | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/website/package-lock.json b/website/package-lock.json index a739f371adb..e7d047e0635 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -6729,9 +6729,9 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "bin": { "json5": "lib/cli.js" @@ -11233,9 +11233,9 @@ } }, "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "dependencies": { "minimist": "^1.2.0" @@ -17070,9 +17070,9 @@ "dev": true }, "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, "jsonfile": { @@ -20532,9 +20532,9 @@ }, "dependencies": { "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "requires": { "minimist": "^1.2.0" From 8a1d1e0c8830e4facf486e8abdc93a3b79763ff9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 23 Feb 2024 20:03:08 -0500 Subject: [PATCH 294/381] build(deps): bump github.com/hashicorp/hcp-sdk-go from 0.83.0 to 0.85.0 (#12850) Bumps [github.com/hashicorp/hcp-sdk-go](https://github.com/hashicorp/hcp-sdk-go) from 0.83.0 to 0.85.0. - [Release notes](https://github.com/hashicorp/hcp-sdk-go/releases) - [Changelog](https://github.com/hashicorp/hcp-sdk-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/hcp-sdk-go/compare/v0.83.0...v0.85.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/hcp-sdk-go dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 697525ebc71..deab270a917 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/hashicorp/go-uuid v1.0.3 github.com/hashicorp/go-version v1.6.0 github.com/hashicorp/hcl/v2 v2.19.1 - github.com/hashicorp/hcp-sdk-go v0.83.0 + github.com/hashicorp/hcp-sdk-go v0.85.0 github.com/hashicorp/packer-plugin-amazon v1.2.1 github.com/hashicorp/packer-plugin-sdk v0.5.2 github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 diff --git a/go.sum b/go.sum index ee86695fd14..c4d29664a91 100644 --- a/go.sum +++ b/go.sum @@ -299,8 +299,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= -github.com/hashicorp/hcp-sdk-go v0.83.0 h1:/IoDE0H+dTdoEorEAhdWepyxzTpQlSj1WxLTkHaBCbA= -github.com/hashicorp/hcp-sdk-go v0.83.0/go.mod h1:vQ4fzdL1AmhIAbCw+4zmFe5Hbpajj3NvRWkJoVuxmAk= +github.com/hashicorp/hcp-sdk-go v0.85.0 h1:RDXpIf4gIGfz6je8Qq0FGg+8kwj7KboQTOxnklWyVJk= +github.com/hashicorp/hcp-sdk-go v0.85.0/go.mod h1:vQ4fzdL1AmhIAbCw+4zmFe5Hbpajj3NvRWkJoVuxmAk= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR/prTM= From 32f89015fef72926605cfdd5fe783cb0a20d75ca Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Mon, 26 Feb 2024 16:56:23 -0500 Subject: [PATCH 295/381] hcp: fix hcp artifact extraction method With Packer 1.10.1 we started warning when a build failed to complete because of a potential incompatibility with the builder being used. This led to cases in which the build failed for other reasons, and Packer would still warn of potential incompatibilities, even if the builder was in effect HCP compatible. We attempted to fix this issue by introducing a new error type, and checks when we read the artifacts linked to a build, however this loop would fail when any one of the artifacts is not compatible with HCP Packer, leading to false failures. To avoid this problem, we log incompatibilities to the verbose logger, and only signal the problem if all the artifacts could not be used to upload data to HCP Packer, in which case it's almost certain that if the build succeeded and no artifacts are registered to the build, that all the components used are not compatible with HCP, and should be reported as such to users. --- internal/hcp/registry/types.bucket.go | 24 ++-- internal/hcp/registry/types.bucket_test.go | 125 +++++++++++++++++++++ 2 files changed, 141 insertions(+), 8 deletions(-) diff --git a/internal/hcp/registry/types.bucket.go b/internal/hcp/registry/types.bucket.go index 6b92e6ce196..6eda3b484bf 100644 --- a/internal/hcp/registry/types.bucket.go +++ b/internal/hcp/registry/types.bucket.go @@ -643,26 +643,34 @@ func (bucket *Bucket) completeBuild( state := art.State(packerSDKRegistry.ArtifactStateURI) if state == nil { - return packerSDKArtifacts, &NotAHCPArtifactError{ - fmt.Errorf("The HCP artifact returned by the builder is nil, this is likely because the builder does not support HCP Packer."), - } + log.Printf("[WARN] - artifact %q returned a nil value for the HCP state, ignoring", art.BuilderId()) + continue } err = decoder.Decode(state) if err != nil { - return packerSDKArtifacts, &NotAHCPArtifactError{ - fmt.Errorf("Failed to obtain HCP Packer compliant artifact: %s", err), - } + log.Printf("[WARN] - artifact %q failed to be decoded to an HCP artifact, this is probably because it is not compatible: %s", art.BuilderId(), err) + continue } - log.Printf("[TRACE] updating artifacts for build %q", buildName) err = bucket.UpdateArtifactForBuild(buildName, sdkImages...) - if err != nil { return packerSDKArtifacts, fmt.Errorf("failed to add artifact for %q: %s", buildName, err) } } + build, err := bucket.Version.Build(buildName) + if err != nil { + return packerSDKArtifacts, fmt.Errorf( + "failed to get build %q from version being built. This is a Packer bug.", + buildName) + } + if len(build.Artifacts) == 0 { + return packerSDKArtifacts, &NotAHCPArtifactError{ + fmt.Errorf("No HCP Packer-compatible artifacts were found for the build"), + } + } + parErr := bucket.markBuildComplete(ctx, buildName) if parErr != nil { return packerSDKArtifacts, fmt.Errorf( diff --git a/internal/hcp/registry/types.bucket_test.go b/internal/hcp/registry/types.bucket_test.go index 57b18d6a928..1b50fb887bf 100644 --- a/internal/hcp/registry/types.bucket_test.go +++ b/internal/hcp/registry/types.bucket_test.go @@ -5,10 +5,15 @@ package registry import ( "context" + "reflect" "strconv" + "sync" "testing" "github.com/google/go-cmp/cmp" + "github.com/hashicorp/hcp-sdk-go/clients/cloud-packer-service/stable/2023-01-01/models" + "github.com/hashicorp/packer-plugin-sdk/packer" + "github.com/hashicorp/packer-plugin-sdk/packer/registry/image" "github.com/hashicorp/packer/hcl2template" hcpPackerAPI "github.com/hashicorp/packer/internal/hcp/api" ) @@ -385,3 +390,123 @@ func TestReadFromHCLBuildBlock(t *testing.T) { }) } } + +func TestCompleteBuild(t *testing.T) { + hcpArtifact := &packer.MockArtifact{ + BuilderIdValue: "builder.test", + FilesValue: []string{"file.one"}, + IdValue: "Test", + StateValues: map[string]interface{}{ + "builder.test": "OK", + image.ArtifactStateURI: &image.Image{ + ImageID: "hcp-test", + ProviderName: "none", + ProviderRegion: "none", + Labels: map[string]string{}, + SourceImageID: "", + }, + }, + DestroyCalled: false, + StringValue: "", + } + nonHCPArtifact := &packer.MockArtifact{ + BuilderIdValue: "builder.test", + FilesValue: []string{"file.one"}, + IdValue: "Test", + StateValues: map[string]interface{}{ + "builder.test": "OK", + }, + DestroyCalled: false, + StringValue: "", + } + + testCases := []struct { + name string + artifactsToUse []packer.Artifact + expectError bool + wantNotHCPErr bool + }{ + { + "OK - one artifact compatible with HCP", + []packer.Artifact{ + hcpArtifact, + }, + false, false, + }, + { + "Fail - no artifacts", + []packer.Artifact{}, + true, false, + }, + { + "Fail - only non HCP compatible artifacts", + []packer.Artifact{ + nonHCPArtifact, + }, + true, true, + }, + { + "OK - one hcp artifact, one non hcp artifact (order matters)", + []packer.Artifact{ + hcpArtifact, + nonHCPArtifact, + }, + false, false, + }, + { + "OK - one non hcp artifact, one hcp artifact (order matters)", + []packer.Artifact{ + nonHCPArtifact, + hcpArtifact, + }, + false, false, + }, + } + mockCli := &hcpPackerAPI.Client{ + Packer: hcpPackerAPI.NewMockPackerClientService(), + } + + for _, tt := range testCases { + t.Run(tt.name, func(t *testing.T) { + dummyBucket := &Bucket{ + Name: "test-bucket", + Description: "test", + Destination: "none", + RunningBuilds: map[string]chan struct{}{ + // Need buffer with 1 cap so we can signal end of + // heartbeats in test, otherwise it'll block + "test-build": make(chan struct{}, 1), + }, + Version: &Version{ + ID: "noneID", + Fingerprint: "TestFingerprint", + RunUUID: "testuuid", + builds: sync.Map{}, + }, + client: mockCli, + } + + dummyBucket.Version.StoreBuild("test-build", &Build{ + ID: "test-build", + Platform: "none", + ComponentType: "none", + RunUUID: "testuuid", + Artifacts: make(map[string]image.Image), + Status: models.HashicorpCloudPacker20230101BuildStatusBUILDRUNNING, + }) + + _, err := dummyBucket.completeBuild(context.Background(), "test-build", tt.artifactsToUse, nil) + if err != nil != tt.expectError { + t.Errorf("expected %t error; got %t", tt.expectError, err != nil) + t.Logf("error was: %s", err) + } + + if err != nil && tt.wantNotHCPErr { + _, ok := err.(*NotAHCPArtifactError) + if !ok { + t.Errorf("expected a NotAHCPArtifactError, got a %q", reflect.TypeOf(err).String()) + } + } + }) + } +} From 94aaff44a12fc23da02c2621bacceff130711582 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Mon, 15 Jan 2024 14:31:04 -0500 Subject: [PATCH 296/381] packer: only support one directory for plugins Since we're removing the alternative plugin installation directories in favour of only supporting installing them in the PACKER_PLUGIN_PATH directory, we only return one directory when getting the known plugin directories. --- command/init.go | 2 +- command/init_test.go | 2 +- command/plugins_install.go | 2 +- command/plugins_install_test.go | 2 +- command/plugins_installed.go | 2 +- command/plugins_remove.go | 2 +- command/plugins_remove_test.go | 2 +- command/plugins_required.go | 2 +- hcl2template/plugin.go | 2 +- main.go | 11 ++++++++--- packer/plugin.go | 24 ++++++++---------------- packer/plugin_folders.go | 26 +++++++------------------- 12 files changed, 32 insertions(+), 47 deletions(-) diff --git a/command/init.go b/command/init.go index 9e5b82f04ba..3c7cfea09f9 100644 --- a/command/init.go +++ b/command/init.go @@ -76,7 +76,7 @@ for more info.`) } opts := plugingetter.ListInstallationsOptions{ - FromFolders: c.Meta.CoreConfig.Components.PluginConfig.KnownPluginFolders, + FromFolders: []string{c.Meta.CoreConfig.Components.PluginConfig.PluginDirectory}, BinaryInstallationOptions: plugingetter.BinaryInstallationOptions{ OS: runtime.GOOS, ARCH: runtime.GOARCH, diff --git a/command/init_test.go b/command/init_test.go index d39699ee51c..ad501f15182 100644 --- a/command/init_test.go +++ b/command/init_test.go @@ -267,7 +267,7 @@ func TestInitCommand_Run(t *testing.T) { t.Fatalf("Failed to discover plugins: %s", err) } - c.CoreConfig.Components.PluginConfig.KnownPluginFolders = []string{tt.packerConfigDir} + c.CoreConfig.Components.PluginConfig.PluginDirectory = tt.packerConfigDir if got := c.Run(args); got != tt.want { t.Errorf("InitCommand.Run() = %v, want %v", got, tt.want) } diff --git a/command/plugins_install.go b/command/plugins_install.go index 753d2d558ba..c63ff2afacf 100644 --- a/command/plugins_install.go +++ b/command/plugins_install.go @@ -121,7 +121,7 @@ func (c *PluginsInstallCommand) ParseArgs(args []string) (*PluginsInstallArgs, i func (c *PluginsInstallCommand) RunContext(buildCtx context.Context, args *PluginsInstallArgs) int { opts := plugingetter.ListInstallationsOptions{ - FromFolders: c.Meta.CoreConfig.Components.PluginConfig.KnownPluginFolders, + FromFolders: []string{c.Meta.CoreConfig.Components.PluginConfig.PluginDirectory}, BinaryInstallationOptions: plugingetter.BinaryInstallationOptions{ OS: runtime.GOOS, ARCH: runtime.GOARCH, diff --git a/command/plugins_install_test.go b/command/plugins_install_test.go index 5461360c36e..e8ad08fd4d8 100644 --- a/command/plugins_install_test.go +++ b/command/plugins_install_test.go @@ -151,7 +151,7 @@ func TestPluginsInstallCommand_Run(t *testing.T) { t.Fatalf("Failed to discover plugins: %s", err) } - c.CoreConfig.Components.PluginConfig.KnownPluginFolders = []string{tt.packerConfigDir} + c.CoreConfig.Components.PluginConfig.PluginDirectory = tt.packerConfigDir if got := c.Run(tt.pluginSourceArgs); got != tt.want { t.Errorf("PluginsInstallCommand.Run() = %v, want %v", got, tt.want) } diff --git a/command/plugins_installed.go b/command/plugins_installed.go index b19be4e5c33..55e47f9894a 100644 --- a/command/plugins_installed.go +++ b/command/plugins_installed.go @@ -43,7 +43,7 @@ func (c *PluginsInstalledCommand) Run(args []string) int { func (c *PluginsInstalledCommand) RunContext(buildCtx context.Context) int { opts := plugingetter.ListInstallationsOptions{ - FromFolders: c.Meta.CoreConfig.Components.PluginConfig.KnownPluginFolders, + FromFolders: []string{c.Meta.CoreConfig.Components.PluginConfig.PluginDirectory}, BinaryInstallationOptions: plugingetter.BinaryInstallationOptions{ OS: runtime.GOOS, ARCH: runtime.GOARCH, diff --git a/command/plugins_remove.go b/command/plugins_remove.go index 5c13636f5c6..6da31410770 100644 --- a/command/plugins_remove.go +++ b/command/plugins_remove.go @@ -52,7 +52,7 @@ func (c *PluginsRemoveCommand) RunContext(buildCtx context.Context, args []strin } opts := plugingetter.ListInstallationsOptions{ - FromFolders: c.Meta.CoreConfig.Components.PluginConfig.KnownPluginFolders, + FromFolders: []string{c.Meta.CoreConfig.Components.PluginConfig.PluginDirectory}, BinaryInstallationOptions: plugingetter.BinaryInstallationOptions{ OS: runtime.GOOS, ARCH: runtime.GOARCH, diff --git a/command/plugins_remove_test.go b/command/plugins_remove_test.go index 4149ceaeb9c..852ab49aad5 100644 --- a/command/plugins_remove_test.go +++ b/command/plugins_remove_test.go @@ -186,7 +186,7 @@ func TestPluginsRemoveCommand_Run(t *testing.T) { Meta: tt.Meta, } - c.CoreConfig.Components.PluginConfig.KnownPluginFolders = []string{tt.packerConfigDir} + c.CoreConfig.Components.PluginConfig.PluginDirectory = tt.packerConfigDir if got := c.Run(tt.pluginSourceArgs); got != tt.want { t.Errorf("PluginsRemoveCommand.Run() = %v, want %v", got, tt.want) } diff --git a/command/plugins_required.go b/command/plugins_required.go index 7776b19210b..fd851380817 100644 --- a/command/plugins_required.go +++ b/command/plugins_required.go @@ -84,7 +84,7 @@ func (c *PluginsRequiredCommand) RunContext(buildCtx context.Context, cla *Plugi } opts := plugingetter.ListInstallationsOptions{ - FromFolders: c.Meta.CoreConfig.Components.PluginConfig.KnownPluginFolders, + FromFolders: []string{c.Meta.CoreConfig.Components.PluginConfig.PluginDirectory}, BinaryInstallationOptions: plugingetter.BinaryInstallationOptions{ OS: runtime.GOOS, ARCH: runtime.GOARCH, diff --git a/hcl2template/plugin.go b/hcl2template/plugin.go index 321616017b6..de8549f38ca 100644 --- a/hcl2template/plugin.go +++ b/hcl2template/plugin.go @@ -56,7 +56,7 @@ func (cfg *PackerConfig) PluginRequirements() (plugingetter.Requirements, hcl.Di func (cfg *PackerConfig) DetectPluginBinaries() hcl.Diagnostics { opts := plugingetter.ListInstallationsOptions{ - FromFolders: cfg.parser.PluginConfig.KnownPluginFolders, + FromFolders: []string{cfg.parser.PluginConfig.PluginDirectory}, BinaryInstallationOptions: plugingetter.BinaryInstallationOptions{ OS: runtime.GOOS, ARCH: runtime.GOARCH, diff --git a/main.go b/main.go index fe902f5bdb3..bb1d741d694 100644 --- a/main.go +++ b/main.go @@ -329,11 +329,16 @@ func extractMachineReadable(args []string) ([]string, bool) { } func loadConfig() (*config, error) { + pluginDir, err := packer.PluginFolder() + if err != nil { + return nil, err + } + var config config config.Plugins = &packer.PluginConfig{ - PluginMinPort: 10000, - PluginMaxPort: 25000, - KnownPluginFolders: packer.PluginFolders("."), + PluginMinPort: 10000, + PluginMaxPort: 25000, + PluginDirectory: pluginDir, } if err := config.Plugins.Discover(); err != nil { return nil, err diff --git a/packer/plugin.go b/packer/plugin.go index 86e02289f5c..fe3c71623f4 100644 --- a/packer/plugin.go +++ b/packer/plugin.go @@ -27,13 +27,13 @@ var defaultChecksummer = plugingetter.Checksummer{ // PluginConfig helps load and use packer plugins type PluginConfig struct { - KnownPluginFolders []string - PluginMinPort int - PluginMaxPort int - Builders BuilderSet - Provisioners ProvisionerSet - PostProcessors PostProcessorSet - DataSources DatasourceSet + PluginDirectory string + PluginMinPort int + PluginMaxPort int + Builders BuilderSet + Provisioners ProvisionerSet + PostProcessors PostProcessorSet + DataSources DatasourceSet } // PACKERSPACE is used to represent the spaces that separate args for a command @@ -67,15 +67,7 @@ func (c *PluginConfig) Discover() error { return nil } - if len(c.KnownPluginFolders) == 0 { - //PluginFolders should match the call in github.com/hahicorp/packer/main.go#loadConfig - c.KnownPluginFolders = PluginFolders(".") - } - - // Pick last folder as it's the one with the highest priority - // This is the same logic used when installing plugins via Packer's plugin installation commands. - pluginInstallationPath := c.KnownPluginFolders[len(c.KnownPluginFolders)-1] - if err := c.discoverInstalledComponents(pluginInstallationPath); err != nil { + if err := c.discoverInstalledComponents(c.PluginDirectory); err != nil { return err } diff --git a/packer/plugin_folders.go b/packer/plugin_folders.go index e1d4dbea4a2..5682c91b8d6 100644 --- a/packer/plugin_folders.go +++ b/packer/plugin_folders.go @@ -7,33 +7,21 @@ import ( "log" "os" "path/filepath" - "strings" "github.com/hashicorp/packer-plugin-sdk/pathing" ) -// PluginFolders returns the list of known plugin folders based on system. -func PluginFolders(dirs ...string) []string { - res := []string{} - +// PluginFolder returns the known plugin folder based on system. +func PluginFolder() (string, error) { if packerPluginPath := os.Getenv("PACKER_PLUGIN_PATH"); packerPluginPath != "" { - res = append(res, strings.Split(packerPluginPath, string(os.PathListSeparator))...) - return res - } - - if path, err := os.Executable(); err != nil { - log.Printf("[ERR] Error finding executable: %v", err) - } else { - res = append(res, filepath.Dir(path)) + return packerPluginPath, nil } - res = append(res, dirs...) - - if cd, err := pathing.ConfigDir(); err != nil { + cd, err := pathing.ConfigDir() + if err != nil { log.Printf("[ERR] Error loading config directory: %v", err) - } else { - res = append(res, filepath.Join(cd, "plugins")) + return "", err } - return res + return filepath.Join(cd, "plugins"), nil } From 664700d0c0451ae4a2006106930803328f53a24e Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Mon, 15 Jan 2024 14:32:46 -0500 Subject: [PATCH 297/381] packer: rm support for manually-installed plugins Since we'll be only accepting plugins installed locally along with a shasum, and those that adopt the convention we introduced with required_plugins, we remove support for plugins that only have a packer-plugin-.* type name. --- packer/plugin.go | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/packer/plugin.go b/packer/plugin.go index fe3c71623f4..246a7e1fec7 100644 --- a/packer/plugin.go +++ b/packer/plugin.go @@ -71,24 +71,6 @@ func (c *PluginConfig) Discover() error { return err } - // Manually installed plugins take precedence over all. Duplicate plugins installed - // prior to the packer plugins install command should be removed by user to avoid overrides. - for _, knownFolder := range c.KnownPluginFolders { - pluginPaths, err := c.discoverSingle(filepath.Join(knownFolder, "packer-plugin-*")) - if err != nil { - return err - } - for pluginName, pluginPath := range pluginPaths { - // Test pluginPath points to an executable - if _, err := exec.LookPath(pluginPath); err != nil { - log.Printf("[WARN] %q is not executable; skipping", pluginPath) - continue - } - if err := c.DiscoverMultiPlugin(pluginName, pluginPath); err != nil { - return err - } - } - } return nil } From 4b00a81bf3bb64b119cc3541bd3c7260c006beda Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Mon, 15 Jan 2024 14:41:25 -0500 Subject: [PATCH 298/381] packer: remove directory slices from structs Since we'll only look in the plugin directory, and not from multiple sources now, for installing/listing plugins, we can simplify the structures which used to accept multiple directories so they only accept one. --- command/init.go | 4 +- command/plugins_install.go | 9 +- command/plugins_installed.go | 2 +- command/plugins_remove.go | 2 +- command/plugins_required.go | 2 +- hcl2template/plugin.go | 2 +- packer/plugin-getter/plugins.go | 183 +++++++++++++-------------- packer/plugin-getter/plugins_test.go | 136 ++------------------ packer/plugin.go | 9 +- packer/plugin_discover_test.go | 50 +++----- 10 files changed, 137 insertions(+), 262 deletions(-) diff --git a/command/init.go b/command/init.go index 3c7cfea09f9..2d8a1937759 100644 --- a/command/init.go +++ b/command/init.go @@ -76,7 +76,7 @@ for more info.`) } opts := plugingetter.ListInstallationsOptions{ - FromFolders: []string{c.Meta.CoreConfig.Components.PluginConfig.PluginDirectory}, + PluginDirectory: c.Meta.CoreConfig.Components.PluginConfig.PluginDirectory, BinaryInstallationOptions: plugingetter.BinaryInstallationOptions{ OS: runtime.GOOS, ARCH: runtime.GOARCH, @@ -132,7 +132,7 @@ for more info.`) } newInstall, err := pluginRequirement.InstallLatest(plugingetter.InstallOptions{ - InFolders: opts.FromFolders, + PluginDirectory: opts.PluginDirectory, BinaryInstallationOptions: opts.BinaryInstallationOptions, Getters: getters, Force: cla.Force, diff --git a/command/plugins_install.go b/command/plugins_install.go index c63ff2afacf..1234579206a 100644 --- a/command/plugins_install.go +++ b/command/plugins_install.go @@ -121,7 +121,7 @@ func (c *PluginsInstallCommand) ParseArgs(args []string) (*PluginsInstallArgs, i func (c *PluginsInstallCommand) RunContext(buildCtx context.Context, args *PluginsInstallArgs) int { opts := plugingetter.ListInstallationsOptions{ - FromFolders: []string{c.Meta.CoreConfig.Components.PluginConfig.PluginDirectory}, + PluginDirectory: c.Meta.CoreConfig.Components.PluginConfig.PluginDirectory, BinaryInstallationOptions: plugingetter.BinaryInstallationOptions{ OS: runtime.GOOS, ARCH: runtime.GOARCH, @@ -176,7 +176,7 @@ func (c *PluginsInstallCommand) RunContext(buildCtx context.Context, args *Plugi } newInstall, err := pluginRequirement.InstallLatest(plugingetter.InstallOptions{ - InFolders: opts.FromFolders, + PluginDirectory: opts.PluginDirectory, BinaryInstallationOptions: opts.BinaryInstallationOptions, Getters: getters, Force: args.Force, @@ -201,10 +201,7 @@ func (c *PluginsInstallCommand) RunContext(buildCtx context.Context, args *Plugi } func (c *PluginsInstallCommand) InstallFromBinary(opts plugingetter.ListInstallationsOptions, pluginIdentifier *addrs.Plugin, args *PluginsInstallArgs) int { - // As with the other commands, we get the last plugin directory as it - // has precedence over the others, and is where we'll install the - // plugins to. - pluginDir := opts.FromFolders[len(opts.FromFolders)-1] + pluginDir := opts.PluginDirectory var err error diff --git a/command/plugins_installed.go b/command/plugins_installed.go index 55e47f9894a..9652572da2f 100644 --- a/command/plugins_installed.go +++ b/command/plugins_installed.go @@ -43,7 +43,7 @@ func (c *PluginsInstalledCommand) Run(args []string) int { func (c *PluginsInstalledCommand) RunContext(buildCtx context.Context) int { opts := plugingetter.ListInstallationsOptions{ - FromFolders: []string{c.Meta.CoreConfig.Components.PluginConfig.PluginDirectory}, + PluginDirectory: c.Meta.CoreConfig.Components.PluginConfig.PluginDirectory, BinaryInstallationOptions: plugingetter.BinaryInstallationOptions{ OS: runtime.GOOS, ARCH: runtime.GOARCH, diff --git a/command/plugins_remove.go b/command/plugins_remove.go index 6da31410770..7b29ffa7bd2 100644 --- a/command/plugins_remove.go +++ b/command/plugins_remove.go @@ -52,7 +52,7 @@ func (c *PluginsRemoveCommand) RunContext(buildCtx context.Context, args []strin } opts := plugingetter.ListInstallationsOptions{ - FromFolders: []string{c.Meta.CoreConfig.Components.PluginConfig.PluginDirectory}, + PluginDirectory: c.Meta.CoreConfig.Components.PluginConfig.PluginDirectory, BinaryInstallationOptions: plugingetter.BinaryInstallationOptions{ OS: runtime.GOOS, ARCH: runtime.GOARCH, diff --git a/command/plugins_required.go b/command/plugins_required.go index fd851380817..7ba301dcfcf 100644 --- a/command/plugins_required.go +++ b/command/plugins_required.go @@ -84,7 +84,7 @@ func (c *PluginsRequiredCommand) RunContext(buildCtx context.Context, cla *Plugi } opts := plugingetter.ListInstallationsOptions{ - FromFolders: []string{c.Meta.CoreConfig.Components.PluginConfig.PluginDirectory}, + PluginDirectory: c.Meta.CoreConfig.Components.PluginConfig.PluginDirectory, BinaryInstallationOptions: plugingetter.BinaryInstallationOptions{ OS: runtime.GOOS, ARCH: runtime.GOARCH, diff --git a/hcl2template/plugin.go b/hcl2template/plugin.go index de8549f38ca..15358573d6e 100644 --- a/hcl2template/plugin.go +++ b/hcl2template/plugin.go @@ -56,7 +56,7 @@ func (cfg *PackerConfig) PluginRequirements() (plugingetter.Requirements, hcl.Di func (cfg *PackerConfig) DetectPluginBinaries() hcl.Diagnostics { opts := plugingetter.ListInstallationsOptions{ - FromFolders: []string{cfg.parser.PluginConfig.PluginDirectory}, + PluginDirectory: cfg.parser.PluginConfig.PluginDirectory, BinaryInstallationOptions: plugingetter.BinaryInstallationOptions{ OS: runtime.GOOS, ARCH: runtime.GOARCH, diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index d6f52ebcc22..1aa7834d138 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -58,9 +58,8 @@ type BinaryInstallationOptions struct { } type ListInstallationsOptions struct { - // FromFolders where plugins could be installed. Paths should be absolute for - // safety but can also be relative. - FromFolders []string + // The directory in which to look for when installing plugins + PluginDirectory string BinaryInstallationOptions } @@ -105,84 +104,84 @@ func (pr Requirement) ListInstallations(opts ListInstallationsOptions) (InstallL FilenamePrefix := pr.FilenamePrefix() filenameSuffix := opts.FilenameSuffix() log.Printf("[TRACE] listing potential installations for %q that match %q. %#v", pr.Identifier, pr.VersionConstraints, opts) - for _, knownFolder := range opts.FromFolders { - glob := "" + + glob := "" + if pr.Identifier == nil { + glob = filepath.Join(opts.PluginDirectory, "*", "*", "*", FilenamePrefix+"*"+filenameSuffix) + } else { + glob = filepath.Join(opts.PluginDirectory, pr.Identifier.Hostname, pr.Identifier.Namespace, pr.Identifier.Type, FilenamePrefix+"*"+filenameSuffix) + } + + matches, err := filepath.Glob(glob) + if err != nil { + return nil, fmt.Errorf("ListInstallations: %q failed to list binaries in folder: %v", pr.Identifier.String(), err) + } + for _, path := range matches { + fname := filepath.Base(path) + if fname == "." { + continue + } + + // base name could look like packer-plugin-amazon_v1.2.3_x5.1_darwin_amd64.exe + versionsStr := strings.TrimPrefix(fname, FilenamePrefix) + versionsStr = strings.TrimSuffix(versionsStr, filenameSuffix) + if pr.Identifier == nil { - glob = filepath.Join(knownFolder, "*", "*", "*", FilenamePrefix+"*"+filenameSuffix) - } else { - glob = filepath.Join(knownFolder, pr.Identifier.Hostname, pr.Identifier.Namespace, pr.Identifier.Type, FilenamePrefix+"*"+filenameSuffix) + if idx := strings.Index(versionsStr, "_"); idx > 0 { + versionsStr = versionsStr[idx+1:] + } } - matches, err := filepath.Glob(glob) + // versionsStr now looks like v1.2.3_x5.1 or amazon_v1.2.3_x5.1 + parts := strings.SplitN(versionsStr, "_", 2) + pluginVersionStr, protocolVerionStr := parts[0], parts[1] + pv, err := version.NewVersion(pluginVersionStr) if err != nil { - return nil, fmt.Errorf("ListInstallations: %q failed to list binaries in folder: %v", pr.Identifier.String(), err) + // could not be parsed, ignoring the file + log.Printf("found %q with an incorrect %q version, ignoring it. %v", path, pluginVersionStr, err) + continue } - for _, path := range matches { - fname := filepath.Base(path) - if fname == "." { - continue - } - - // base name could look like packer-plugin-amazon_v1.2.3_x5.1_darwin_amd64.exe - versionsStr := strings.TrimPrefix(fname, FilenamePrefix) - versionsStr = strings.TrimSuffix(versionsStr, filenameSuffix) - if pr.Identifier == nil { - if idx := strings.Index(versionsStr, "_"); idx > 0 { - versionsStr = versionsStr[idx+1:] - } - } + // no constraint means always pass, this will happen for implicit + // plugin requirements and when we list all plugins. + if !pr.VersionConstraints.Check(pv) { + log.Printf("[TRACE] version %q of file %q does not match constraint %q", pluginVersionStr, path, pr.VersionConstraints.String()) + continue + } - // versionsStr now looks like v1.2.3_x5.1 or amazon_v1.2.3_x5.1 - parts := strings.SplitN(versionsStr, "_", 2) - pluginVersionStr, protocolVerionStr := parts[0], parts[1] - pv, err := version.NewVersion(pluginVersionStr) - if err != nil { - // could not be parsed, ignoring the file - log.Printf("found %q with an incorrect %q version, ignoring it. %v", path, pluginVersionStr, err) - continue - } + if err := opts.CheckProtocolVersion(protocolVerionStr); err != nil { + log.Printf("[NOTICE] binary %s requires protocol version %s that is incompatible "+ + "with this version of Packer. %s", path, protocolVerionStr, err) + continue + } - // no constraint means always pass, this will happen for implicit - // plugin requirements and when we list all plugins. - if !pr.VersionConstraints.Check(pv) { - log.Printf("[TRACE] version %q of file %q does not match constraint %q", pluginVersionStr, path, pr.VersionConstraints.String()) - continue - } + checksumOk := false + for _, checksummer := range opts.Checksummers { - if err := opts.CheckProtocolVersion(protocolVerionStr); err != nil { - log.Printf("[NOTICE] binary %s requires protocol version %s that is incompatible "+ - "with this version of Packer. %s", path, protocolVerionStr, err) + cs, err := checksummer.GetCacheChecksumOfFile(path) + if err != nil { + log.Printf("[TRACE] GetChecksumOfFile(%q) failed: %v", path, err) continue } - checksumOk := false - for _, checksummer := range opts.Checksummers { - - cs, err := checksummer.GetCacheChecksumOfFile(path) - if err != nil { - log.Printf("[TRACE] GetChecksumOfFile(%q) failed: %v", path, err) - continue - } - - if err := checksummer.ChecksumFile(cs, path); err != nil { - log.Printf("[TRACE] ChecksumFile(%q) failed: %v", path, err) - continue - } - checksumOk = true - break - } - if !checksumOk { - log.Printf("[TRACE] No checksum found for %q ignoring possibly unsafe binary", path) + if err := checksummer.ChecksumFile(cs, path); err != nil { + log.Printf("[TRACE] ChecksumFile(%q) failed: %v", path, err) continue } - - res = append(res, &Installation{ - BinaryPath: path, - Version: pluginVersionStr, - }) + checksumOk = true + break + } + if !checksumOk { + log.Printf("[TRACE] No checksum found for %q ignoring possibly unsafe binary", path) + continue } + + res = append(res, &Installation{ + BinaryPath: path, + Version: pluginVersionStr, + }) } + return res, nil } @@ -224,9 +223,8 @@ type InstallOptions struct { // Different means to get releases, sha256 and binary files. Getters []Getter - // Any downloaded binary and checksum file will be put in the last possible - // folder of this list. - InFolders []string + // The directory in which the plugins should be installed + PluginDirectory string // Forces installation of the plugin, even if already installed. Force bool @@ -481,7 +479,7 @@ func (pr *Requirement) InstallLatest(opts InstallOptions) (*Installation, error) outputFolder := filepath.Join( // Pick last folder as it's the one with the highest priority - opts.InFolders[len(opts.InFolders)-1], + opts.PluginDirectory, // add expected full path filepath.Join(pr.Identifier.Parts()...), ) @@ -549,36 +547,33 @@ func (pr *Requirement) InstallLatest(opts InstallOptions) (*Installation, error) expectedZipFilename := checksum.Filename expectedBinaryFilename := strings.TrimSuffix(expectedZipFilename, filepath.Ext(expectedZipFilename)) + opts.BinaryInstallationOptions.Ext - for _, outputFolder := range opts.InFolders { - potentialOutputFilename := filepath.Join( - outputFolder, - filepath.Join(pr.Identifier.Parts()...), - expectedBinaryFilename, - ) - for _, potentialChecksumer := range opts.Checksummers { - // First check if a local checksum file is already here in the expected - // download folder. Here we want to download a binary so we only check - // for an existing checksum file from the folder we want to download - // into. - cs, err := potentialChecksumer.GetCacheChecksumOfFile(potentialOutputFilename) - if err == nil && len(cs) > 0 { - localChecksum := &FileChecksum{ - Expected: cs, - Checksummer: potentialChecksumer, - } - - log.Printf("[TRACE] found a pre-exising %q checksum file", potentialChecksumer.Type) - // if outputFile is there and matches the checksum: do nothing more. - if err := localChecksum.ChecksumFile(localChecksum.Expected, potentialOutputFilename); err == nil && !opts.Force { - log.Printf("[INFO] %s v%s plugin is already correctly installed in %q", pr.Identifier, version, potentialOutputFilename) - return nil, nil // success - } + outputFileName := filepath.Join( + outputFolder, + expectedBinaryFilename, + ) + for _, potentialChecksumer := range opts.Checksummers { + // First check if a local checksum file is already here in the expected + // download folder. Here we want to download a binary so we only check + // for an existing checksum file from the folder we want to download + // into. + cs, err := potentialChecksumer.GetCacheChecksumOfFile(outputFileName) + if err == nil && len(cs) > 0 { + localChecksum := &FileChecksum{ + Expected: cs, + Checksummer: potentialChecksumer, + } + + log.Printf("[TRACE] found a pre-exising %q checksum file", potentialChecksumer.Type) + // if outputFile is there and matches the checksum: do nothing more. + if err := localChecksum.ChecksumFile(localChecksum.Expected, outputFileName); err == nil && !opts.Force { + log.Printf("[INFO] %s v%s plugin is already correctly installed in %q", pr.Identifier, version, outputFileName) + return nil, nil // success } } } // The last folder from the installation list is where we will install. - outputFileName := filepath.Join(outputFolder, expectedBinaryFilename) + outputFileName = filepath.Join(outputFolder, expectedBinaryFilename) // create directories if need be if err := os.MkdirAll(outputFolder, 0755); err != nil { diff --git a/packer/plugin-getter/plugins_test.go b/packer/plugin-getter/plugins_test.go index e13f8cb3825..1f58e349601 100644 --- a/packer/plugin-getter/plugins_test.go +++ b/packer/plugin-getter/plugins_test.go @@ -78,10 +78,7 @@ func TestPlugin_ListInstallations(t *testing.T) { // empty }, ListInstallationsOptions{ - []string{ - pluginFolderOne, - pluginFolderTwo, - }, + pluginFolderOne, BinaryInstallationOptions{ OS: "windows", ARCH: "amd64", Ext: ".exe", @@ -119,22 +116,6 @@ func TestPlugin_ListInstallations(t *testing.T) { Version: "v4.5.8", BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "google", "packer-plugin-google_v4.5.8_x5.0_windows_amd64.exe"), }, - { - Version: "v4.5.6", - BinaryPath: filepath.Join(pluginFolderTwo, "github.com", "hashicorp", "google", "packer-plugin-google_v4.5.6_x5.0_windows_amd64.exe"), - }, - { - Version: "v4.5.9", - BinaryPath: filepath.Join(pluginFolderTwo, "github.com", "hashicorp", "google", "packer-plugin-google_v4.5.9_x5.0_windows_amd64.exe"), - }, - { - Version: "v4.5.6", - BinaryPath: filepath.Join(pluginFolderTwo, "github.com", "hashicorp copy", "google", "packer-plugin-google_v4.5.6_x5.0_windows_amd64.exe"), - }, - { - Version: "v4.5.9", - BinaryPath: filepath.Join(pluginFolderTwo, "github.com", "hashicorp copy", "google", "packer-plugin-google_v4.5.9_x5.0_windows_amd64.exe"), - }, }, }, @@ -144,10 +125,7 @@ func TestPlugin_ListInstallations(t *testing.T) { Identifier: "github.com/hashicorp/amazon", }, ListInstallationsOptions{ - []string{ - pluginFolderOne, - pluginFolderTwo, - }, + pluginFolderOne, BinaryInstallationOptions{ APIVersionMajor: "5", APIVersionMinor: "0", OS: "darwin", ARCH: "amd64", @@ -181,10 +159,7 @@ func TestPlugin_ListInstallations(t *testing.T) { Identifier: "github.com/hashicorp/amazon", }, ListInstallationsOptions{ - []string{ - pluginFolderOne, - pluginFolderTwo, - }, + pluginFolderOne, BinaryInstallationOptions{ APIVersionMajor: "5", APIVersionMinor: "1", OS: "darwin", ARCH: "amd64", @@ -214,10 +189,6 @@ func TestPlugin_ListInstallations(t *testing.T) { Version: "v1.2.5", BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "amazon", "packer-plugin-amazon_v1.2.5_x5.0_darwin_amd64"), }, - { - Version: "v1.2.6", - BinaryPath: filepath.Join(pluginFolderTwo, "github.com", "hashicorp", "amazon", "packer-plugin-amazon_v1.2.6_x5.1_darwin_amd64"), - }, }, }, { @@ -226,10 +197,7 @@ func TestPlugin_ListInstallations(t *testing.T) { Identifier: "github.com/hashicorp/amazon", }, ListInstallationsOptions{ - []string{ - pluginFolderOne, - pluginFolderTwo, - }, + pluginFolderOne, BinaryInstallationOptions{ APIVersionMajor: "5", APIVersionMinor: "0", OS: "windows", ARCH: "amd64", @@ -258,61 +226,13 @@ func TestPlugin_ListInstallations(t *testing.T) { }, }, }, - { - "windows_google_multifolder", - fields{ - Identifier: "github.com/hashicorp/google", - }, - ListInstallationsOptions{ - []string{ - pluginFolderOne, - pluginFolderTwo, - }, - BinaryInstallationOptions{ - APIVersionMajor: "5", APIVersionMinor: "0", - OS: "windows", ARCH: "amd64", - Ext: ".exe", - Checksummers: []Checksummer{ - { - Type: "sha256", - Hash: sha256.New(), - }, - }, - }, - }, - false, - []*Installation{ - { - Version: "v4.5.6", - BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "google", "packer-plugin-google_v4.5.6_x5.0_windows_amd64.exe"), - }, - { - Version: "v4.5.7", - BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "google", "packer-plugin-google_v4.5.7_x5.0_windows_amd64.exe"), - }, - { - Version: "v4.5.8", - BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "google", "packer-plugin-google_v4.5.8_x5.0_windows_amd64.exe"), - }, - { - Version: "v4.5.6", - BinaryPath: filepath.Join(pluginFolderTwo, "github.com", "hashicorp", "google", "packer-plugin-google_v4.5.6_x5.0_windows_amd64.exe"), - }, - { - Version: "v4.5.9", - BinaryPath: filepath.Join(pluginFolderTwo, "github.com", "hashicorp", "google", "packer-plugin-google_v4.5.9_x5.0_windows_amd64.exe"), - }, - }, - }, { "test nil identifier - multiple plugins with same version", fields{ Identifier: "", }, ListInstallationsOptions{ - []string{ - pluginFolderThree, - }, + pluginFolderThree, BinaryInstallationOptions{ APIVersionMajor: "5", APIVersionMinor: "0", OS: "linux", ARCH: "amd64", @@ -398,11 +318,7 @@ func TestRequirement_InstallLatest(t *testing.T) { }, }, }, - []string{ - pluginFolderWrongChecksums, - pluginFolderOne, - pluginFolderTwo, - }, + pluginFolderOne, false, BinaryInstallationOptions{ APIVersionMajor: "5", APIVersionMinor: "0", @@ -435,11 +351,7 @@ func TestRequirement_InstallLatest(t *testing.T) { }, }, }, - []string{ - pluginFolderWrongChecksums, - pluginFolderOne, - pluginFolderTwo, - }, + pluginFolderOne, false, BinaryInstallationOptions{ APIVersionMajor: "5", APIVersionMinor: "1", @@ -481,11 +393,7 @@ func TestRequirement_InstallLatest(t *testing.T) { }, }, }, - []string{ - pluginFolderWrongChecksums, - pluginFolderOne, - pluginFolderTwo, - }, + pluginFolderOne, false, BinaryInstallationOptions{ APIVersionMajor: "5", APIVersionMinor: "0", @@ -529,11 +437,7 @@ func TestRequirement_InstallLatest(t *testing.T) { }, }, }, - []string{ - pluginFolderWrongChecksums, - pluginFolderOne, - pluginFolderTwo, - }, + pluginFolderTwo, false, BinaryInstallationOptions{ APIVersionMajor: "6", APIVersionMinor: "1", @@ -580,11 +484,7 @@ func TestRequirement_InstallLatest(t *testing.T) { }, }, }, - []string{ - pluginFolderWrongChecksums, - pluginFolderOne, - pluginFolderTwo, - }, + pluginFolderTwo, false, BinaryInstallationOptions{ APIVersionMajor: "6", APIVersionMinor: "1", @@ -631,11 +531,7 @@ func TestRequirement_InstallLatest(t *testing.T) { }, }, }, - []string{ - pluginFolderWrongChecksums, - pluginFolderOne, - pluginFolderTwo, - }, + pluginFolderTwo, false, BinaryInstallationOptions{ APIVersionMajor: "6", APIVersionMinor: "1", @@ -676,11 +572,7 @@ func TestRequirement_InstallLatest(t *testing.T) { }, }, }, - []string{ - pluginFolderWrongChecksums, - pluginFolderOne, - pluginFolderTwo, - }, + pluginFolderTwo, false, BinaryInstallationOptions{ APIVersionMajor: "6", APIVersionMinor: "1", @@ -720,9 +612,7 @@ func TestRequirement_InstallLatest(t *testing.T) { }, }, }, - []string{ - pluginFolderWrongChecksums, - }, + pluginFolderTwo, false, BinaryInstallationOptions{ APIVersionMajor: "6", APIVersionMinor: "1", diff --git a/packer/plugin.go b/packer/plugin.go index 246a7e1fec7..3fd404d7a03 100644 --- a/packer/plugin.go +++ b/packer/plugin.go @@ -67,6 +67,10 @@ func (c *PluginConfig) Discover() error { return nil } + if c.PluginDirectory == "" { + c.PluginDirectory, _ = PluginFolder() + } + if err := c.discoverInstalledComponents(c.PluginDirectory); err != nil { return err } @@ -120,7 +124,6 @@ func (c *PluginConfig) discoverSingle(glob string) (map[string]string, error) { // After the split the plugin name is "baz". pluginName = strings.SplitN(pluginName, "_", 2)[0] - log.Printf("[INFO] Discovered potential plugin: %s = %s", pluginName, match) pluginPath, err := filepath.Abs(match) if err != nil { pluginPath = match @@ -284,12 +287,12 @@ func (c *PluginConfig) discoverInstalledComponents(path string) error { for _, checksummer := range binInstallOpts.Checksummers { cs, err := checksummer.GetCacheChecksumOfFile(pluginPath) if err != nil { - log.Printf("[TRACE] GetChecksumOfFile(%q) failed: %v", pluginPath, err) + log.Printf("[TRACE] GetChecksumOfFile(%q) failed: %v\n", pluginPath, err) continue } if err := checksummer.ChecksumFile(cs, pluginPath); err != nil { - log.Printf("[TRACE] ChecksumFile(%q) failed: %v", pluginPath, err) + log.Printf("[TRACE] ChecksumFile(%q) failed: %v\n", pluginPath, err) continue } checksumOk = true diff --git a/packer/plugin_discover_test.go b/packer/plugin_discover_test.go index 6dbe8589b2e..472f9d6e06a 100644 --- a/packer/plugin_discover_test.go +++ b/packer/plugin_discover_test.go @@ -57,25 +57,25 @@ func TestMultiPlugin_describe(t *testing.T) { expectedBuilderName := mockPluginName + "-" + mockBuilderName if !c.Builders.Has(expectedBuilderName) { - t.Fatalf("expected to find builder %q", expectedBuilderName) + t.Errorf("expected to find builder %q", expectedBuilderName) } } for mockProvisionerName := range plugin.Provisioners { expectedProvisionerName := mockPluginName + "-" + mockProvisionerName if !c.Provisioners.Has(expectedProvisionerName) { - t.Fatalf("expected to find builder %q", expectedProvisionerName) + t.Errorf("expected to find builder %q", expectedProvisionerName) } } for mockPostProcessorName := range plugin.PostProcessors { expectedPostProcessorName := mockPluginName + "-" + mockPostProcessorName if !c.PostProcessors.Has(expectedPostProcessorName) { - t.Fatalf("expected to find post-processor %q", expectedPostProcessorName) + t.Errorf("expected to find post-processor %q", expectedPostProcessorName) } } for mockDatasourceName := range plugin.Datasources { expectedDatasourceName := mockPluginName + "-" + mockDatasourceName if !c.DataSources.Has(expectedDatasourceName) { - t.Fatalf("expected to find datasource %q", expectedDatasourceName) + t.Errorf("expected to find datasource %q", expectedDatasourceName) } } } @@ -207,40 +207,20 @@ func TestMultiPlugin_defaultName(t *testing.T) { } } -// no T.Parallel using os.Chdir -func TestMultiPlugin_CWD(t *testing.T) { - createMockPlugins(t, defaultNameMock) - pluginDir := os.Getenv("PACKER_PLUGIN_PATH") - defer os.RemoveAll(pluginDir) - // Unset PACKER_PLUGIN_PATH to test CWD loading - os.Unsetenv("PACKER_PLUGIN_PATH") - if err := os.Chdir(pluginDir); err != nil { - t.Fatalf("failed to change directory to test loading from CWD: %s", err) - } - c := PluginConfig{} - err := c.Discover() - if err != nil { - t.Fatalf("error discovering plugins; %s ; mocks are %#v", err.Error(), defaultNameMock) - } - expectedBuilderNames := []string{"foo-bar", "foo-baz", "foo"} - for _, mockBuilderName := range expectedBuilderNames { - if !c.Builders.Has(mockBuilderName) { - t.Fatalf("expected to find builder %q; builders is %#v", mockBuilderName, c.Builders) - } - } -} - func TestMultiPlugin_IgnoreChecksumFile(t *testing.T) { createMockPlugins(t, defaultNameMock) pluginDir := os.Getenv("PACKER_PLUGIN_PATH") defer os.RemoveAll(pluginDir) - csFile, err := generateMockChecksumFile(filepath.Join(pluginDir, "packer-plugin-foo")) + fooPluginName := fmt.Sprintf("packer-plugin-foo_v1.0.0_x5.0_%s_%s", runtime.GOOS, runtime.GOARCH) + fooPluginPath := filepath.Join(pluginDir, "github.com", "hashicorp", "foo", fooPluginName) + csFile, err := generateMockChecksumFile(fooPluginPath) if err != nil { t.Fatal(err.Error()) } + // Copy plugin contents into checksum file to validate that it is not only skipped but that it never gets loaded - if err := os.Rename(filepath.Join(pluginDir, "packer-plugin-foo"), csFile); err != nil { + if err := os.Rename(fooPluginPath, csFile); err != nil { t.Fatalf("failed to rename plugin bin file to checkfum file needed for test: %s", err) } @@ -395,7 +375,13 @@ func createMockPlugins(t *testing.T, plugins map[string]pluginsdk.Set) { shPath := MustHaveCommand(t, "bash") for name := range plugins { - plugin := path.Join(pluginDir, "packer-plugin-"+name) + pluginName := fmt.Sprintf("packer-plugin-%s_v1.0.0_x5.0_%s_%s", name, runtime.GOOS, runtime.GOARCH) + pluginSubDir := fmt.Sprintf("github.com/hashicorp/%s", name) + err := os.MkdirAll(path.Join(pluginDir, pluginSubDir), 0755) + if err != nil { + t.Fatalf("failed to create plugin hierarchy: %s", err) + } + plugin := path.Join(pluginDir, pluginSubDir, pluginName) t.Logf("creating fake plugin %s", plugin) fileContent := "" fileContent = fmt.Sprintf("#!%s\n", shPath) @@ -405,6 +391,10 @@ func createMockPlugins(t *testing.T, plugins map[string]pluginsdk.Set) { if err := os.WriteFile(plugin, []byte(fileContent), os.ModePerm); err != nil { t.Fatalf("failed to create fake plugin binary: %v", err) } + + if _, err := generateMockChecksumFile(plugin); err != nil { + t.Fatalf("failed to create fake plugin binary checksum file: %v", err) + } } } t.Setenv("PACKER_PLUGIN_PATH", pluginDir) From 4cda3b64ac41d838395e305486e65082c11e01b8 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 16 Jan 2024 09:44:38 -0500 Subject: [PATCH 299/381] packer: remove path argument to discover installed Since the plugin directory should now be unique instead of a list, we can use it directly from the receiver's structure instead of as a parameter to the function. --- packer/plugin.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packer/plugin.go b/packer/plugin.go index 3fd404d7a03..4d5a673976d 100644 --- a/packer/plugin.go +++ b/packer/plugin.go @@ -71,7 +71,7 @@ func (c *PluginConfig) Discover() error { c.PluginDirectory, _ = PluginFolder() } - if err := c.discoverInstalledComponents(c.PluginDirectory); err != nil { + if err := c.discoverInstalledComponents(); err != nil { return err } @@ -260,7 +260,7 @@ func (c *PluginConfig) Client(path string, args ...string) *PluginClient { // discoverInstalledComponents scans the provided path for plugins installed by running packer plugins install or packer init. // Valid plugins contain a matching system binary and valid checksum file. -func (c *PluginConfig) discoverInstalledComponents(path string) error { +func (c *PluginConfig) discoverInstalledComponents() error { //Check for installed plugins using the `packer plugins install` command binInstallOpts := plugingetter.BinaryInstallationOptions{ OS: runtime.GOOS, @@ -276,7 +276,7 @@ func (c *PluginConfig) discoverInstalledComponents(path string) error { binInstallOpts.Ext = ".exe" } - pluginPath := filepath.Join(path, "*", "*", "*", fmt.Sprintf("packer-plugin-*%s", binInstallOpts.FilenameSuffix())) + pluginPath := filepath.Join(c.PluginDirectory, "*", "*", "*", fmt.Sprintf("packer-plugin-*%s", binInstallOpts.FilenameSuffix())) pluginPaths, err := c.discoverSingle(pluginPath) if err != nil { return err @@ -300,7 +300,7 @@ func (c *PluginConfig) discoverInstalledComponents(path string) error { } if !checksumOk { - log.Printf("[WARN] No checksum found for %q ignoring possibly unsafe binary", path) + log.Printf("[WARN] No checksum found for %q ignoring possibly unsafe binary", pluginPath) continue } From 2af3ff0e722ca7b1ca5249a6d49a2f9bad34520d Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 17 Jan 2024 13:39:36 -0500 Subject: [PATCH 300/381] plugin-getter: fix docs for Installation The comments weren't capitalised correctly, and the directory example included the `packer-plugin-' prefix, which should not be the case in reality. --- packer/plugin-getter/plugins.go | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index 1aa7834d138..5de97416452 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -207,13 +207,12 @@ func (l InstallList) String() string { // Installation describes a plugin installation type Installation struct { - // path to where binary is installed, if installed. - // Ex: /usr/azr/.packer.d/plugins/github.com/hashicorp/packer-plugin-amazon/packer-plugin-amazon_v1.2.3_darwin_amd64 + // Path to where binary is installed. + // Ex: /usr/azr/.packer.d/plugins/github.com/hashicorp/amazon/packer-plugin-amazon_v1.2.3_darwin_amd64 BinaryPath string - // Version of this plugin, if installed and versionned. Ex: + // Version of this plugin. Ex: // * v1.2.3 for packer-plugin-amazon_v1.2.3_darwin_x5 - // * empty for packer-plugin-amazon Version string } From 698bcdc2a983ba40c8e6c51969257a461898c6e9 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 17 Jan 2024 15:49:51 -0500 Subject: [PATCH 301/381] plugin-getter: implement Sort interface for List The plugin installation list should be sorted according to a name first, then version second basis. Right now, we only rely on the glob to add plugin installs to this list, making the order unreliable since the lexicographical order is not the order in which we want to see the same plugin ordered (e.g. v1.0.9 > 1.0.10). To fix this, we implement a logic for sorting a list of installations that does what's described above with more accuracy. --- packer/plugin-getter/plugins.go | 48 +++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index 5de97416452..85ba3ba3211 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -205,6 +205,54 @@ func (l InstallList) String() string { return v.String() } +// Len is the number of elements in the collection. +func (l InstallList) Len() int { + return len(l) +} + +var rawPluginName = regexp.MustCompile("packer-plugin-[^_]+") + +// Less reports whether the element with index i +// must sort before the element with index j. +// +// If both Less(i, j) and Less(j, i) are false, +// then the elements at index i and j are considered equal. +// Sort may place equal elements in any order in the final result, +// while Stable preserves the original input order of equal elements. +// +// Less must describe a transitive ordering: +// - if both Less(i, j) and Less(j, k) are true, then Less(i, k) must be true as well. +// - if both Less(i, j) and Less(j, k) are false, then Less(i, k) must be false as well. +// +// Note that floating-point comparison (the < operator on float32 or float64 values) +// is not a transitive ordering when not-a-number (NaN) values are involved. +// See Float64Slice.Less for a correct implementation for floating-point values. +func (l InstallList) Less(i, j int) bool { + lowPluginPath := l[i] + hiPluginPath := l[j] + + lowRawPluginName := rawPluginName.FindString(path.Base(lowPluginPath.BinaryPath)) + hiRawPluginName := rawPluginName.FindString(path.Base(hiPluginPath.BinaryPath)) + + // We group by path, then by descending order for the versions + // + // i.e. if the path are not the same, we can return the plain + // lexicographic order, otherwise, we'll do a semver-conscious + // version comparison for sorting. + if lowRawPluginName != hiRawPluginName { + return lowRawPluginName < hiRawPluginName + } + + return semver.Compare(lowPluginPath.Version, hiPluginPath.Version) > 0 +} + +// Swap swaps the elements with indexes i and j. +func (l InstallList) Swap(i, j int) { + tmp := l[i] + l[i] = l[j] + l[j] = tmp +} + // Installation describes a plugin installation type Installation struct { // Path to where binary is installed. From fd5f668ee9f0b0260d4a07acd0d5e1aaa0559d5d Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 17 Jan 2024 15:52:59 -0500 Subject: [PATCH 302/381] plugin: consolidate loading logic Right now we had two paths for discovering installed plugins, i.e. through plugin-getter's `ListInstallations' function, or through the `Discover' call, which relied on a glob to list the installations. This was required since we allowed plugins to be installed in multiple locations, and with different constraints. Now that we force a certain convention, we can consolidate the logic into ListInstallations, and rely on that logic in `Discover' to load a plugin into the PluginConfig for the current Packer run. --- hcl2template/plugin.go | 2 +- packer/plugin-getter/plugins.go | 7 + packer/plugin-getter/plugins_test.go | 226 --------------------------- packer/plugin.go | 141 +++++------------ packer/plugin_discover_test.go | 2 + 5 files changed, 48 insertions(+), 330 deletions(-) diff --git a/hcl2template/plugin.go b/hcl2template/plugin.go index 15358573d6e..279f534e03b 100644 --- a/hcl2template/plugin.go +++ b/hcl2template/plugin.go @@ -94,7 +94,7 @@ func (cfg *PackerConfig) DetectPluginBinaries() hcl.Diagnostics { continue } log.Printf("[TRACE] Found the following %q installations: %v", pluginRequirement.Identifier, sortedInstalls) - install := sortedInstalls[len(sortedInstalls)-1] + install := sortedInstalls[0] err = cfg.parser.PluginConfig.DiscoverMultiPlugin(pluginRequirement.Accessor, install.BinaryPath) if err != nil { diags = append(diags, &hcl.Diagnostic{ diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index 85ba3ba3211..d9379351c80 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -11,7 +11,10 @@ import ( "io" "log" "os" + "os/exec" + "path" "path/filepath" + "regexp" "sort" "strconv" "strings" @@ -19,8 +22,10 @@ import ( "github.com/hashicorp/go-multierror" "github.com/hashicorp/go-version" + pluginsdk "github.com/hashicorp/packer-plugin-sdk/plugin" "github.com/hashicorp/packer-plugin-sdk/tmp" "github.com/hashicorp/packer/hcl2template/addrs" + "golang.org/x/mod/semver" ) type Requirements []*Requirement @@ -182,6 +187,8 @@ func (pr Requirement) ListInstallations(opts ListInstallationsOptions) (InstallL }) } + sort.Sort(res) + return res, nil } diff --git a/packer/plugin-getter/plugins_test.go b/packer/plugin-getter/plugins_test.go index 1f58e349601..4cc78acc3ba 100644 --- a/packer/plugin-getter/plugins_test.go +++ b/packer/plugin-getter/plugins_test.go @@ -18,7 +18,6 @@ import ( "github.com/google/go-cmp/cmp" "github.com/hashicorp/go-version" - "github.com/hashicorp/hcl/v2" "github.com/hashicorp/packer/hcl2template/addrs" ) @@ -58,231 +57,6 @@ func TestChecksumFileEntry_init(t *testing.T) { } } -func TestPlugin_ListInstallations(t *testing.T) { - - type fields struct { - Identifier string - VersionConstraints version.Constraints - } - tests := []struct { - name string - fields fields - opts ListInstallationsOptions - wantErr bool - want InstallList - }{ - - { - "windows_all_plugins", - fields{ - // empty - }, - ListInstallationsOptions{ - pluginFolderOne, - BinaryInstallationOptions{ - OS: "windows", ARCH: "amd64", - Ext: ".exe", - Checksummers: []Checksummer{ - { - Type: "sha256", - Hash: sha256.New(), - }, - }, - }, - }, - false, - []*Installation{ - { - Version: "v1.2.3", - BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "amazon", "packer-plugin-amazon_v1.2.3_x5.0_windows_amd64.exe"), - }, - { - Version: "v1.2.4", - BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "amazon", "packer-plugin-amazon_v1.2.4_x5.0_windows_amd64.exe"), - }, - { - Version: "v1.2.5", - BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "amazon", "packer-plugin-amazon_v1.2.5_x5.0_windows_amd64.exe"), - }, - { - Version: "v4.5.6", - BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "google", "packer-plugin-google_v4.5.6_x5.0_windows_amd64.exe"), - }, - { - Version: "v4.5.7", - BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "google", "packer-plugin-google_v4.5.7_x5.0_windows_amd64.exe"), - }, - { - Version: "v4.5.8", - BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "google", "packer-plugin-google_v4.5.8_x5.0_windows_amd64.exe"), - }, - }, - }, - - { - "darwin_amazon_prot_5.0", - fields{ - Identifier: "github.com/hashicorp/amazon", - }, - ListInstallationsOptions{ - pluginFolderOne, - BinaryInstallationOptions{ - APIVersionMajor: "5", APIVersionMinor: "0", - OS: "darwin", ARCH: "amd64", - Checksummers: []Checksummer{ - { - Type: "sha256", - Hash: sha256.New(), - }, - }, - }, - }, - false, - []*Installation{ - { - Version: "v1.2.3", - BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "amazon", "packer-plugin-amazon_v1.2.3_x5.0_darwin_amd64"), - }, - { - Version: "v1.2.4", - BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "amazon", "packer-plugin-amazon_v1.2.4_x5.0_darwin_amd64"), - }, - { - Version: "v1.2.5", - BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "amazon", "packer-plugin-amazon_v1.2.5_x5.0_darwin_amd64"), - }, - }, - }, - { - "darwin_amazon_prot_5.1", - fields{ - Identifier: "github.com/hashicorp/amazon", - }, - ListInstallationsOptions{ - pluginFolderOne, - BinaryInstallationOptions{ - APIVersionMajor: "5", APIVersionMinor: "1", - OS: "darwin", ARCH: "amd64", - Checksummers: []Checksummer{ - { - Type: "sha256", - Hash: sha256.New(), - }, - }, - }, - }, - false, - []*Installation{ - { - Version: "v1.2.3", - BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "amazon", "packer-plugin-amazon_v1.2.3_x5.0_darwin_amd64"), - }, - { - Version: "v1.2.3", - BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "amazon", "packer-plugin-amazon_v1.2.3_x5.1_darwin_amd64"), - }, - { - Version: "v1.2.4", - BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "amazon", "packer-plugin-amazon_v1.2.4_x5.0_darwin_amd64"), - }, - { - Version: "v1.2.5", - BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "amazon", "packer-plugin-amazon_v1.2.5_x5.0_darwin_amd64"), - }, - }, - }, - { - "windows_amazon", - fields{ - Identifier: "github.com/hashicorp/amazon", - }, - ListInstallationsOptions{ - pluginFolderOne, - BinaryInstallationOptions{ - APIVersionMajor: "5", APIVersionMinor: "0", - OS: "windows", ARCH: "amd64", - Ext: ".exe", - Checksummers: []Checksummer{ - { - Type: "sha256", - Hash: sha256.New(), - }, - }, - }, - }, - false, - []*Installation{ - { - Version: "v1.2.3", - BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "amazon", "packer-plugin-amazon_v1.2.3_x5.0_windows_amd64.exe"), - }, - { - Version: "v1.2.4", - BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "amazon", "packer-plugin-amazon_v1.2.4_x5.0_windows_amd64.exe"), - }, - { - Version: "v1.2.5", - BinaryPath: filepath.Join(pluginFolderOne, "github.com", "hashicorp", "amazon", "packer-plugin-amazon_v1.2.5_x5.0_windows_amd64.exe"), - }, - }, - }, - { - "test nil identifier - multiple plugins with same version", - fields{ - Identifier: "", - }, - ListInstallationsOptions{ - pluginFolderThree, - BinaryInstallationOptions{ - APIVersionMajor: "5", APIVersionMinor: "0", - OS: "linux", ARCH: "amd64", - Checksummers: []Checksummer{ - { - Type: "sha256", - Hash: sha256.New(), - }, - }, - }, - }, - false, - []*Installation{ - { - Version: "v1.2.5", - BinaryPath: filepath.Join(pluginFolderThree, "github.com", "hashicorp", "alazon", "packer-plugin-alazon_v1.2.5_x5.0_linux_amd64"), - }, - { - Version: "v1.2.5", - BinaryPath: filepath.Join(pluginFolderThree, "github.com", "hashicorp", "amazon", "packer-plugin-amazon_v1.2.5_x5.0_linux_amd64"), - }, - }, - }, - } - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - var identifier *addrs.Plugin - if tt.fields.Identifier != "" { - var diags hcl.Diagnostics - identifier, diags = addrs.ParsePluginSourceString(tt.fields.Identifier) - if diags.HasErrors() { - t.Fatalf("%v", diags) - } - } - p := Requirement{ - Identifier: identifier, - VersionConstraints: tt.fields.VersionConstraints, - } - got, err := p.ListInstallations(tt.opts) - if (err != nil) != tt.wantErr { - t.Errorf("Plugin.ListInstallations() error = %v, wantErr %v", err, tt.wantErr) - return - } - if diff := cmp.Diff(tt.want, got); diff != "" { - t.Errorf("Plugin.ListInstallations() unexpected output: %s", diff) - } - }) - } -} - func TestRequirement_InstallLatest(t *testing.T) { type fields struct { Identifier string diff --git a/packer/plugin.go b/packer/plugin.go index 4d5a673976d..5fcef89549c 100644 --- a/packer/plugin.go +++ b/packer/plugin.go @@ -6,13 +6,13 @@ package packer import ( "crypto/sha256" "encoding/json" - "fmt" "log" "os" "os/exec" + "path" "path/filepath" + "regexp" "runtime" - "sort" "strings" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" @@ -40,7 +40,9 @@ type PluginConfig struct { // without being confused with spaces in the path to the command itself. const PACKERSPACE = "-PACKERSPACE-" -// Discover discovers plugins. +var extractPluginBasename = regexp.MustCompile("^packer-plugin-([^_]+)") + +// Discover discovers the latest installed version of each installed plugin. // // Search the directory of the executable, then the plugins directory, and // finally the CWD, in that order. Any conflicts will overwrite previously @@ -71,67 +73,54 @@ func (c *PluginConfig) Discover() error { c.PluginDirectory, _ = PluginFolder() } - if err := c.discoverInstalledComponents(); err != nil { + installations, err := plugingetter.Requirement{}.ListInstallations(plugingetter.ListInstallationsOptions{ + PluginDirectory: c.PluginDirectory, + BinaryInstallationOptions: plugingetter.BinaryInstallationOptions{ + OS: runtime.GOOS, + ARCH: runtime.GOARCH, + Checksummers: []plugingetter.Checksummer{ + {Type: "sha256", Hash: sha256.New()}, + }, + }, + }) + if err != nil { return err } - return nil -} - -func (c *PluginConfig) discoverSingle(glob string) (map[string]string, error) { - matches, err := filepath.Glob(glob) - if err != nil { - return nil, err - } - var prefix string - res := make(map[string]string) - // Sort the matches so we add the newer version of a plugin last - sort.Strings(matches) - prefix = filepath.Base(glob) - prefix = prefix[:strings.Index(prefix, "*")] - for _, match := range matches { - file := filepath.Base(match) - // skip folders like packer-plugin-sdk - if stat, err := os.Stat(file); err == nil && stat.IsDir() { + // Map of plugin basename to executable + // + // We'll use that later to register the components for each plugin + pluginMap := map[string]string{} + for _, install := range installations { + pluginBasename := path.Base(install.BinaryPath) + matches := extractPluginBasename.FindStringSubmatch(pluginBasename) + if len(matches) != 2 { + log.Printf("[INFO] - plugin %q could not have its name matched, ignoring", pluginBasename) continue } - // On Windows, ignore any plugins that don't end in .exe. - // We could do a full PATHEXT parse, but this is probably good enough. - if runtime.GOOS == "windows" && strings.ToLower(filepath.Ext(file)) != ".exe" { - log.Printf( - "[TRACE] Ignoring plugin match %s, no exe extension", - match) - continue - } + pluginName := matches[1] - if strings.Contains(strings.ToUpper(file), defaultChecksummer.FileExt()) { - log.Printf( - "[TRACE] Ignoring plugin match %s, which looks to be a checksum file", - match) + // If the plugin is already registered in the plugin map, we + // can ignore the current executable, as they're sorted by + // version in descending order, so if it's already in the map, + // a more recent version was already discovered. + _, ok := pluginMap[pluginName] + if ok { continue - - } - - // If the filename has a ".", trim up to there - if idx := strings.Index(file, ".exe"); idx >= 0 { - file = file[:idx] } - // Look for foo-bar-baz. The plugin name is "baz" - pluginName := file[len(prefix):] - // multi-component plugins installed via the plugins subcommand will have a name that looks like baz_vx.y.z_x5.0_darwin_arm64. - // After the split the plugin name is "baz". - pluginName = strings.SplitN(pluginName, "_", 2)[0] + pluginMap[pluginName] = install.BinaryPath + } - pluginPath, err := filepath.Abs(match) + for name, path := range pluginMap { + err := c.DiscoverMultiPlugin(name, path) if err != nil { - pluginPath = match + return err } - res[pluginName] = pluginPath } - return res, nil + return nil } // DiscoverMultiPlugin takes the description from a multi-component plugin @@ -257,57 +246,3 @@ func (c *PluginConfig) Client(path string, args ...string) *PluginClient { config.MaxPort = c.PluginMaxPort return NewClient(&config) } - -// discoverInstalledComponents scans the provided path for plugins installed by running packer plugins install or packer init. -// Valid plugins contain a matching system binary and valid checksum file. -func (c *PluginConfig) discoverInstalledComponents() error { - //Check for installed plugins using the `packer plugins install` command - binInstallOpts := plugingetter.BinaryInstallationOptions{ - OS: runtime.GOOS, - ARCH: runtime.GOARCH, - APIVersionMajor: pluginsdk.APIVersionMajor, - APIVersionMinor: pluginsdk.APIVersionMinor, - Checksummers: []plugingetter.Checksummer{ - defaultChecksummer, - }, - } - - if runtime.GOOS == "windows" { - binInstallOpts.Ext = ".exe" - } - - pluginPath := filepath.Join(c.PluginDirectory, "*", "*", "*", fmt.Sprintf("packer-plugin-*%s", binInstallOpts.FilenameSuffix())) - pluginPaths, err := c.discoverSingle(pluginPath) - if err != nil { - return err - } - - for pluginName, pluginPath := range pluginPaths { - var checksumOk bool - for _, checksummer := range binInstallOpts.Checksummers { - cs, err := checksummer.GetCacheChecksumOfFile(pluginPath) - if err != nil { - log.Printf("[TRACE] GetChecksumOfFile(%q) failed: %v\n", pluginPath, err) - continue - } - - if err := checksummer.ChecksumFile(cs, pluginPath); err != nil { - log.Printf("[TRACE] ChecksumFile(%q) failed: %v\n", pluginPath, err) - continue - } - checksumOk = true - break - } - - if !checksumOk { - log.Printf("[WARN] No checksum found for %q ignoring possibly unsafe binary", pluginPath) - continue - } - - if err := c.DiscoverMultiPlugin(pluginName, pluginPath); err != nil { - return err - } - } - - return nil -} diff --git a/packer/plugin_discover_test.go b/packer/plugin_discover_test.go index 472f9d6e06a..3eca150d87c 100644 --- a/packer/plugin_discover_test.go +++ b/packer/plugin_discover_test.go @@ -17,6 +17,7 @@ import ( packersdk "github.com/hashicorp/packer-plugin-sdk/packer" pluginsdk "github.com/hashicorp/packer-plugin-sdk/plugin" "github.com/hashicorp/packer-plugin-sdk/tmp" + "github.com/hashicorp/packer-plugin-sdk/version" plugingetter "github.com/hashicorp/packer/packer/plugin-getter" ) @@ -305,6 +306,7 @@ func TestHelperPlugins(t *testing.T) { for _, mock := range allMocks { plugin, found := mock[pluginName] if found { + plugin.SetVersion(version.InitializePluginVersion("1.0.0", "")) err := plugin.RunCommand(args...) if err != nil { fmt.Fprintf(os.Stderr, "%v\n", err) From 492cb720001dc3e6fc1ec6e13144a6b4d7228dfd Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 17 Jan 2024 15:55:44 -0500 Subject: [PATCH 303/381] plugin-getter: reject plugin version mismatches When a plugin is loaded from Packer, we now check that the version it reports matches what the name implies. In case there's a mismatch, we log, and reject the binary. --- packer/plugin-getter/plugins.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index d9379351c80..6fec3dddba1 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -137,6 +137,18 @@ func (pr Requirement) ListInstallations(opts ListInstallationsOptions) (InstallL } } + descOut, err := exec.Command(path, "describe").Output() + if err != nil { + log.Printf("couldn't call describe on %q, ignoring", path) + continue + } + + var describeInfo pluginsdk.SetDescription + err = json.Unmarshal(descOut, &describeInfo) + if err != nil { + log.Printf("%q: describe output deserialization error %q, ignoring", path, err) + } + // versionsStr now looks like v1.2.3_x5.1 or amazon_v1.2.3_x5.1 parts := strings.SplitN(versionsStr, "_", 2) pluginVersionStr, protocolVerionStr := parts[0], parts[1] @@ -147,6 +159,11 @@ func (pr Requirement) ListInstallations(opts ListInstallationsOptions) (InstallL continue } + if strings.Replace(pluginVersionStr, "v", "", -1) != describeInfo.Version { + log.Printf("plugin %q reported version %s while its name implies version %s, ignoring", path, describeInfo.Version, pluginVersionStr) + continue + } + // no constraint means always pass, this will happen for implicit // plugin requirements and when we list all plugins. if !pr.VersionConstraints.Check(pv) { From ee01cf8ba907619f1c97aa88bc288912db8cb8df Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 17 Jan 2024 17:01:18 -0500 Subject: [PATCH 304/381] command: move plugins remove tests outside of repo Since the plugins remove subcommand now only loads valid plugins, it cannot run on mock data anymore, and the logic for creating a valid plugin hierarchy is not present in this repository, but does in another, so we move those tests from here to that repository in order to continue testing them. --- command/plugins_remove_test.go | 215 --------------------------------- 1 file changed, 215 deletions(-) delete mode 100644 command/plugins_remove_test.go diff --git a/command/plugins_remove_test.go b/command/plugins_remove_test.go deleted file mode 100644 index 852ab49aad5..00000000000 --- a/command/plugins_remove_test.go +++ /dev/null @@ -1,215 +0,0 @@ -// Copyright (c) HashiCorp, Inc. -// SPDX-License-Identifier: BUSL-1.1 - -//go:build amd64 && (darwin || windows || linux) - -package command - -import ( - "log" - "os" - "runtime" - "sort" - "testing" - - "github.com/google/go-cmp/cmp" - "golang.org/x/mod/sumdb/dirhash" -) - -type testCasePluginsRemove struct { - name string - Meta Meta - inPluginFolder map[string]string - expectedPackerConfigDirHashBeforeRemove string - packerConfigDir string - pluginSourceArgs []string - want int - dirFiles []string - expectedPackerConfigDirHashAfterRemove string -} - -func TestPluginsRemoveCommand_Run(t *testing.T) { - - cfg := &configDirSingleton{map[string]string{}} - - tests := []testCasePluginsRemove{ - { - name: "version-not-installed-no-op", - Meta: TestMetaFile(t), - inPluginFolder: map[string]string{ - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64": "1", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64_SHA256SUM": "6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe": "1.exe", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe_SHA256SUM": "07d8453027192ee0c4120242e6e84e2ca2328b8e0f506e2f818a1a5b82790a0b", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64": "1.out", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64_SHA256SUM": "59031c50e0dfeedfde2b4e9445754804dce3f29e4efa737eead0ca9b4f5b85a5", - }, - expectedPackerConfigDirHashBeforeRemove: "h1:Q5qyAOdD43hL3CquQdVfaHpOYGf0UsZ/+wVA9Ry6cbA=", - packerConfigDir: cfg.dir("1_pkr_plugins_config"), - pluginSourceArgs: []string{"github.com/sylviamoss/comment", "v0.2.19"}, - want: 1, - dirFiles: nil, - expectedPackerConfigDirHashAfterRemove: "h1:Q5qyAOdD43hL3CquQdVfaHpOYGf0UsZ/+wVA9Ry6cbA=", - }, - { - name: "remove-specific-version", - Meta: TestMetaFile(t), - inPluginFolder: map[string]string{ - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64": "1", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64_SHA256SUM": "6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe": "1.exe", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe_SHA256SUM": "07d8453027192ee0c4120242e6e84e2ca2328b8e0f506e2f818a1a5b82790a0b", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64": "1.out", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64_SHA256SUM": "59031c50e0dfeedfde2b4e9445754804dce3f29e4efa737eead0ca9b4f5b85a5", - }, - expectedPackerConfigDirHashBeforeRemove: "h1:Q5qyAOdD43hL3CquQdVfaHpOYGf0UsZ/+wVA9Ry6cbA=", - packerConfigDir: cfg.dir("2_pkr_plugins_config"), - pluginSourceArgs: []string{"github.com/sylviamoss/comment", "v0.2.18"}, - want: 0, - dirFiles: map[string][]string{ - "darwin": { - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64_SHA256SUM", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe_SHA256SUM", - }, - "linux": { - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64_SHA256SUM", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe_SHA256SUM", - }, - "windows": { - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64_SHA256SUM", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64_SHA256SUM", - }, - }[runtime.GOOS], - expectedPackerConfigDirHashAfterRemove: map[string]string{ - "darwin": "h1:IKDdst8f0nMAS9T9t85fhuvDCe8lYytiZ/vooW1OWeI=", - "linux": "h1:h3t4iDYGbNtouHAJ1vPsE7d8n+6W5K4VlXTxhrQx2DA=", - "windows": "h1:NpETtGlu1hVMJe5bflPmyAhnL4iDvoIwA//uWhxtkDU=", - }[runtime.GOOS], - }, - { - name: "remove-all-installed-versions", - Meta: TestMetaFile(t), - inPluginFolder: map[string]string{ - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64": "1", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64_SHA256SUM": "6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_darwin_amd64": "1", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_darwin_amd64_SHA256SUM": "6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe": "1.exe", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe_SHA256SUM": "07d8453027192ee0c4120242e6e84e2ca2328b8e0f506e2f818a1a5b82790a0b", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_windows_amd64.exe": "1.exe", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_windows_amd64.exe_SHA256SUM": "07d8453027192ee0c4120242e6e84e2ca2328b8e0f506e2f818a1a5b82790a0b", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64": "1.out", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64_SHA256SUM": "59031c50e0dfeedfde2b4e9445754804dce3f29e4efa737eead0ca9b4f5b85a5", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_linux_amd64": "1.out", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_linux_amd64_SHA256SUM": "59031c50e0dfeedfde2b4e9445754804dce3f29e4efa737eead0ca9b4f5b85a5", - }, - expectedPackerConfigDirHashBeforeRemove: "h1:IEvr6c46+Uk776Hnzy04PuXqnyHGKnnEvIJ713cv0iU=", - packerConfigDir: cfg.dir("2_pkr_plugins_config"), - pluginSourceArgs: []string{"github.com/sylviamoss/comment"}, - want: 0, - dirFiles: map[string][]string{ - "darwin": { - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64_SHA256SUM", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_linux_amd64", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_linux_amd64_SHA256SUM", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe_SHA256SUM", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_windows_amd64.exe", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_windows_amd64.exe_SHA256SUM", - }, - "linux": { - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64_SHA256SUM", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_darwin_amd64", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_darwin_amd64_SHA256SUM", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe_SHA256SUM", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_windows_amd64.exe", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_windows_amd64.exe_SHA256SUM", - }, - "windows": { - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64_SHA256SUM", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_darwin_amd64", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_darwin_amd64_SHA256SUM", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64_SHA256SUM", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_linux_amd64", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_linux_amd64_SHA256SUM", - }, - }[runtime.GOOS], - expectedPackerConfigDirHashAfterRemove: map[string]string{ - "darwin": "h1:A6wlL62bUD06NF/1ND5E0o4omXhusB2T8N5ZNe2JVbg=", - "linux": "h1:SuTX0k2sknjDrL3PYgR1JajbGcs1qWIV2XvZAYSMsHw=", - "windows": "h1:NI8aJVAKdIyCXHuGDj6kTu5++6yvCz4oAswIhkL3wFc=", - }[runtime.GOOS], - }, - { - name: "no-installed-binaries", - Meta: TestMetaFile(t), - inPluginFolder: nil, - expectedPackerConfigDirHashBeforeRemove: "h1:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", - packerConfigDir: cfg.dir("3_pkr_plugins_config"), - pluginSourceArgs: []string{"example.com/sylviamoss/comment", "v0.2.19"}, - want: 1, - dirFiles: nil, - expectedPackerConfigDirHashAfterRemove: "h1:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - log.Printf("starting %s", tt.name) - log.Printf("%#v", tt) - t.Cleanup(func() { - _ = os.RemoveAll(tt.packerConfigDir) - }) - t.Setenv("PACKER_CONFIG_DIR", tt.packerConfigDir) - createFiles(tt.packerConfigDir, tt.inPluginFolder) - - hash, err := dirhash.HashDir(tt.packerConfigDir, "", dirhash.DefaultHash) - if err != nil { - t.Fatalf("HashDir: %v", err) - } - if diff := cmp.Diff(tt.expectedPackerConfigDirHashBeforeRemove, hash); diff != "" { - t.Errorf("unexpected dir hash before plugins remove: +found -expected %s", diff) - } - - c := &PluginsRemoveCommand{ - Meta: tt.Meta, - } - - c.CoreConfig.Components.PluginConfig.PluginDirectory = tt.packerConfigDir - if got := c.Run(tt.pluginSourceArgs); got != tt.want { - t.Errorf("PluginsRemoveCommand.Run() = %v, want %v", got, tt.want) - } - - if tt.dirFiles != nil { - dirFiles, err := dirhash.DirFiles(tt.packerConfigDir, "") - if err != nil { - t.Fatalf("DirFiles: %v", err) - } - sort.Strings(tt.dirFiles) - sort.Strings(dirFiles) - if diff := cmp.Diff(tt.dirFiles, dirFiles); diff != "" { - t.Errorf("found files differ: %v", diff) - } - } - - hash, err = dirhash.HashDir(tt.packerConfigDir, "", dirhash.DefaultHash) - if err != nil { - t.Fatalf("HashDir: %v", err) - } - if diff := cmp.Diff(tt.expectedPackerConfigDirHashAfterRemove, hash); diff != "" { - t.Errorf("unexpected dir hash after plugins remove: %s", diff) - } - }) - } -} From b51c350bd6d39c623886e4b15a60edc0543f24ba Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Thu, 1 Feb 2024 15:01:37 -0500 Subject: [PATCH 305/381] packer: fix plugin version sorting and pickup When Packer orders the plugins by their version, we'd assumed it was ordered from highest to lowest. However, this was the case because our implementation of `Less' was actually returning `>=', which is not what it was supposed to do. This commit therefore fixes the implementation of `Less' to do what it is documented to do, and ensures the behaviour is correct through additional testing. Changing this requires some changes to the loading process as well because of the aforementioned assumption with regards to ordering. --- hcl2template/plugin.go | 2 +- packer/plugin-getter/plugins.go | 2 +- packer/plugin-getter/plugins_test.go | 120 +++++++++++++++++++++++++++ packer/plugin.go | 10 --- 4 files changed, 122 insertions(+), 12 deletions(-) diff --git a/hcl2template/plugin.go b/hcl2template/plugin.go index 279f534e03b..15358573d6e 100644 --- a/hcl2template/plugin.go +++ b/hcl2template/plugin.go @@ -94,7 +94,7 @@ func (cfg *PackerConfig) DetectPluginBinaries() hcl.Diagnostics { continue } log.Printf("[TRACE] Found the following %q installations: %v", pluginRequirement.Identifier, sortedInstalls) - install := sortedInstalls[0] + install := sortedInstalls[len(sortedInstalls)-1] err = cfg.parser.PluginConfig.DiscoverMultiPlugin(pluginRequirement.Accessor, install.BinaryPath) if err != nil { diags = append(diags, &hcl.Diagnostic{ diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index 6fec3dddba1..11511ee3860 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -267,7 +267,7 @@ func (l InstallList) Less(i, j int) bool { return lowRawPluginName < hiRawPluginName } - return semver.Compare(lowPluginPath.Version, hiPluginPath.Version) > 0 + return semver.Compare(lowPluginPath.Version, hiPluginPath.Version) < 0 } // Swap swaps the elements with indexes i and j. diff --git a/packer/plugin-getter/plugins_test.go b/packer/plugin-getter/plugins_test.go index 4cc78acc3ba..9fb24830414 100644 --- a/packer/plugin-getter/plugins_test.go +++ b/packer/plugin-getter/plugins_test.go @@ -507,3 +507,123 @@ func zipFile(content map[string]string) io.ReadCloser { } var _ Getter = &mockPluginGetter{} + +func Test_LessInstallList(t *testing.T) { + tests := []struct { + name string + installs InstallList + expectLess bool + }{ + { + "v1.2.1 < v1.2.2 => true", + InstallList{ + &Installation{ + BinaryPath: "host/org/plugin", + Version: "v1.2.1", + }, + &Installation{ + BinaryPath: "github.com", + Version: "v1.2.2", + }, + }, + true, + }, + { + // Impractical with the changes to the loading model + "v1.2.1 = v1.2.1 => false", + InstallList{ + &Installation{ + BinaryPath: "host/org/plugin", + Version: "v1.2.1", + }, + &Installation{ + BinaryPath: "github.com", + Version: "v1.2.1", + }, + }, + false, + }, + { + "v1.2.2 < v1.2.1 => false", + InstallList{ + &Installation{ + BinaryPath: "host/org/plugin", + Version: "v1.2.2", + }, + &Installation{ + BinaryPath: "github.com", + Version: "v1.2.1", + }, + }, + false, + }, + { + "v1.2.2-dev < v1.2.2 => true", + InstallList{ + &Installation{ + BinaryPath: "host/org/plugin", + Version: "v1.2.2-dev", + }, + &Installation{ + BinaryPath: "github.com", + Version: "v1.2.2", + }, + }, + true, + }, + { + "v1.2.2 < v1.2.2-dev => false", + InstallList{ + &Installation{ + BinaryPath: "host/org/plugin", + Version: "v1.2.2", + }, + &Installation{ + BinaryPath: "github.com", + Version: "v1.2.2-dev", + }, + }, + false, + }, + { + "v1.2.1 < v1.2.2-dev => true", + InstallList{ + &Installation{ + BinaryPath: "host/org/plugin", + Version: "v1.2.1", + }, + &Installation{ + BinaryPath: "github.com", + Version: "v1.2.2-dev", + }, + }, + true, + }, + { + "v1.2.3 < v1.2.2-dev => false", + InstallList{ + &Installation{ + BinaryPath: "host/org/plugin", + Version: "v1.2.3", + }, + &Installation{ + BinaryPath: "github.com", + Version: "v1.2.2-dev", + }, + }, + false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + isLess := tt.installs.Less(0, 1) + if isLess != tt.expectLess { + t.Errorf("Less mismatch for %s < %s, expected %t, got %t", + tt.installs[0].Version, + tt.installs[1].Version, + tt.expectLess, isLess) + } + }) + } +} diff --git a/packer/plugin.go b/packer/plugin.go index 5fcef89549c..c6d4c125946 100644 --- a/packer/plugin.go +++ b/packer/plugin.go @@ -100,16 +100,6 @@ func (c *PluginConfig) Discover() error { } pluginName := matches[1] - - // If the plugin is already registered in the plugin map, we - // can ignore the current executable, as they're sorted by - // version in descending order, so if it's already in the map, - // a more recent version was already discovered. - _, ok := pluginMap[pluginName] - if ok { - continue - } - pluginMap[pluginName] = install.BinaryPath } From 5bcf6daccac5ccfa477cf3e6543594c4514f1eeb Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Thu, 1 Feb 2024 15:13:18 -0500 Subject: [PATCH 306/381] packer: support loading pre-release plugins When a pre-release version of a plugin is locally installed, it may or may not be loaded depending on the constraints expressed in the template being executed. If the template contains constraints for loading the plugin, it would be ignored, while if that wasn't present, it would be loaded. This is inconsistent, and deserves to be addressed, which is what this commit does. With this change, plugin pre-releases are now loaded, provided the version reported matches the constraints, independently from its pre-release suffix `-dev'. Also, if a release with the same version is also installed alongside the pre-release version of a plugin, it will have precedence over the pre-release. --- packer/plugin-getter/plugins.go | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index 11511ee3860..fae1809e09d 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -96,6 +96,8 @@ func (opts BinaryInstallationOptions) FilenameSuffix() string { return "_" + opts.OS + "_" + opts.ARCH + opts.Ext } +var pluginVersionRegex = regexp.MustCompile(`^v([0-9]+\.[0-9]+\.[0-9]+)(-dev)?$`) + // ListInstallations lists unique installed versions of plugin Requirement pr // with opts as a filter. // @@ -152,21 +154,37 @@ func (pr Requirement) ListInstallations(opts ListInstallationsOptions) (InstallL // versionsStr now looks like v1.2.3_x5.1 or amazon_v1.2.3_x5.1 parts := strings.SplitN(versionsStr, "_", 2) pluginVersionStr, protocolVerionStr := parts[0], parts[1] - pv, err := version.NewVersion(pluginVersionStr) + _, err = version.NewVersion(pluginVersionStr) if err != nil { // could not be parsed, ignoring the file log.Printf("found %q with an incorrect %q version, ignoring it. %v", path, pluginVersionStr, err) continue } - if strings.Replace(pluginVersionStr, "v", "", -1) != describeInfo.Version { - log.Printf("plugin %q reported version %s while its name implies version %s, ignoring", path, describeInfo.Version, pluginVersionStr) + matches := pluginVersionRegex.FindStringSubmatch(pluginVersionStr) + if matches == nil { + log.Printf("invalid version found: %q, ignoring", pluginVersionStr) + continue + } + + absVersion := matches[1] + if len(matches) == 3 { + absVersion = fmt.Sprintf("%s%s", absVersion, matches[2]) + } + + if absVersion != describeInfo.Version { + log.Printf("plugin %q reported version %s while its name implies version %s, ignoring", path, describeInfo.Version, absVersion) continue } + rawVersion, _ := version.NewVersion(matches[1]) // no constraint means always pass, this will happen for implicit // plugin requirements and when we list all plugins. - if !pr.VersionConstraints.Check(pv) { + // + // Note: we use the raw version name here, without the pre-release + // suffix, as otherwise constraints reject them, which is not + // what we want by default. + if !pr.VersionConstraints.Check(rawVersion) { log.Printf("[TRACE] version %q of file %q does not match constraint %q", pluginVersionStr, path, pr.VersionConstraints.String()) continue } From e099c5c6617dd3ba36377eea085fcb249e7dfb2b Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 2 Feb 2024 10:02:40 -0500 Subject: [PATCH 307/381] main: move Discover to DetectPluginBinaries When Packer is loaded, we used to perform plugin discovery. This was done for every call to Packer, including when it is executed as a plugin, arguably against what the comments document. Doing this as early in the loading process makes it harder to change this behaviour, as we'd need to introduce flags aside from the rest, and handle them manually, which is not optimal. Therefore, we change this: now when Packer starts executing, it will not attempt to discover installed plugins anymore, and instead will only try to load them when a configuration has been parsed, and is being used to perform actions (typically build/validate). --- hcl2template/plugin.go | 11 +++++++++++ main.go | 7 ++++--- packer/core.go | 13 ++++++++++++- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/hcl2template/plugin.go b/hcl2template/plugin.go index 15358573d6e..6a66aa61096 100644 --- a/hcl2template/plugin.go +++ b/hcl2template/plugin.go @@ -55,6 +55,17 @@ func (cfg *PackerConfig) PluginRequirements() (plugingetter.Requirements, hcl.Di } func (cfg *PackerConfig) DetectPluginBinaries() hcl.Diagnostics { + // Do first pass to discover all the installed plugins + err := cfg.parser.PluginConfig.Discover() + if err != nil { + return (hcl.Diagnostics{}).Append(&hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Failed to discover installed plugins", + Detail: err.Error(), + }) + } + + // Then we can apply any constraint from the template, if any opts := plugingetter.ListInstallationsOptions{ PluginDirectory: cfg.parser.PluginConfig.PluginDirectory, BinaryInstallationOptions: plugingetter.BinaryInstallationOptions{ diff --git a/main.go b/main.go index bb1d741d694..553c173f477 100644 --- a/main.go +++ b/main.go @@ -339,9 +339,10 @@ func loadConfig() (*config, error) { PluginMinPort: 10000, PluginMaxPort: 25000, PluginDirectory: pluginDir, - } - if err := config.Plugins.Discover(); err != nil { - return nil, err + Builders: packer.MapOfBuilder{}, + Provisioners: packer.MapOfProvisioner{}, + PostProcessors: packer.MapOfPostProcessor{}, + DataSources: packer.MapOfDatasource{}, } // Finally, try to use an internal plugin. Note that this will not override diff --git a/packer/core.go b/packer/core.go index 7a56dc06cc5..0f3ea9c9c1e 100644 --- a/packer/core.go +++ b/packer/core.go @@ -136,7 +136,18 @@ func NewCore(c *CoreConfig) *Core { // DetectPluginBinaries is used to load required plugins from the template, // since it is unsupported in JSON, this is essentially a no-op. func (c *Core) DetectPluginBinaries() hcl.Diagnostics { - return nil + var diags hcl.Diagnostics + + err := c.components.PluginConfig.Discover() + if err != nil { + diags = diags.Append(&hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Failed to discover installed plugins", + Detail: err.Error(), + }) + } + + return diags } func (c *Core) Initialize(_ InitializeOptions) hcl.Diagnostics { From 9f7e6ca52b14152bff6169f6b370a6454b79f436 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 2 Feb 2024 10:34:52 -0500 Subject: [PATCH 308/381] plugins: add a release only flag to Discover Since we now support loading pre-releases, we also want Packer to be able to ignore them by user demand, so we put in place the infrastructure to modulate this. --- hcl2template/plugin.go | 1 + packer/plugin-getter/plugins.go | 11 ++++++++++- packer/plugin.go | 2 ++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/hcl2template/plugin.go b/hcl2template/plugin.go index 6a66aa61096..f03e0329224 100644 --- a/hcl2template/plugin.go +++ b/hcl2template/plugin.go @@ -76,6 +76,7 @@ func (cfg *PackerConfig) DetectPluginBinaries() hcl.Diagnostics { Checksummers: []plugingetter.Checksummer{ {Type: "sha256", Hash: sha256.New()}, }, + ReleasesOnly: cfg.parser.PluginConfig.ReleasesOnly, }, } diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index fae1809e09d..3271a868d5b 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -60,6 +60,10 @@ type BinaryInstallationOptions struct { Ext string Checksummers []Checksummer + + // ReleasesOnly may be set by commands like validate or build, and + // forces Packer to not consider plugin pre-releases. + ReleasesOnly bool } type ListInstallationsOptions struct { @@ -154,13 +158,18 @@ func (pr Requirement) ListInstallations(opts ListInstallationsOptions) (InstallL // versionsStr now looks like v1.2.3_x5.1 or amazon_v1.2.3_x5.1 parts := strings.SplitN(versionsStr, "_", 2) pluginVersionStr, protocolVerionStr := parts[0], parts[1] - _, err = version.NewVersion(pluginVersionStr) + ver, err := version.NewVersion(pluginVersionStr) if err != nil { // could not be parsed, ignoring the file log.Printf("found %q with an incorrect %q version, ignoring it. %v", path, pluginVersionStr, err) continue } + if ver.Prerelease() != "" && opts.ReleasesOnly { + log.Printf("ignoring pre-release plugin %q", path) + continue + } + matches := pluginVersionRegex.FindStringSubmatch(pluginVersionStr) if matches == nil { log.Printf("invalid version found: %q, ignoring", pluginVersionStr) diff --git a/packer/plugin.go b/packer/plugin.go index c6d4c125946..d2bf0e200cf 100644 --- a/packer/plugin.go +++ b/packer/plugin.go @@ -34,6 +34,7 @@ type PluginConfig struct { Provisioners ProvisionerSet PostProcessors PostProcessorSet DataSources DatasourceSet + ReleasesOnly bool } // PACKERSPACE is used to represent the spaces that separate args for a command @@ -81,6 +82,7 @@ func (c *PluginConfig) Discover() error { Checksummers: []plugingetter.Checksummer{ {Type: "sha256", Hash: sha256.New()}, }, + ReleasesOnly: c.ReleasesOnly, }, }) if err != nil { From b5848b99135ebb57a42de52192541c3fa0fe1f61 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 2 Feb 2024 10:41:31 -0500 Subject: [PATCH 309/381] command: add --release-only flag to validate/build Since we added the capability for the plugin discovery to ignore installed pre-releases of plugins, we give that capacity to the validate and build commands, through a new command-line flag: release-only. --- command/build.go | 5 +++++ command/cli.go | 6 ++++++ command/validate.go | 5 +++++ 3 files changed, 16 insertions(+) diff --git a/command/build.go b/command/build.go index 60ede416894..b48d248d50c 100644 --- a/command/build.go +++ b/command/build.go @@ -86,6 +86,11 @@ func writeDiags(ui packersdk.Ui, files map[string]*hcl.File, diags hcl.Diagnosti } func (c *BuildCommand) RunContext(buildCtx context.Context, cla *BuildArgs) int { + // Set the release only flag if specified as argument + // + // This deactivates the capacity for Packer to load development binaries. + c.CoreConfig.Components.PluginConfig.ReleasesOnly = cla.ReleaseOnly + packerStarter, ret := c.GetConfig(&cla.MetaArgs) if ret != 0 { return ret diff --git a/command/cli.go b/command/cli.go index 2dfc57dbd0d..2fa3c02fdea 100644 --- a/command/cli.go +++ b/command/cli.go @@ -90,6 +90,9 @@ func (ba *BuildArgs) AddFlagSets(flags *flag.FlagSet) { flags.Var(flagOnError, "on-error", "") flags.BoolVar(&ba.MetaArgs.WarnOnUndeclaredVar, "warn-on-undeclared-var", false, "Show warnings for variable files containing undeclared variables.") + + flags.BoolVar(&ba.ReleaseOnly, "ignore-prerelease-plugins", false, "Disable the loading of prerelease plugin binaries (x.y.z-.") + ba.MetaArgs.AddFlagSets(flags) } @@ -100,6 +103,7 @@ type BuildArgs struct { Color, TimestampUi, MachineReadable bool ParallelBuilds int64 OnError string + ReleaseOnly bool } func (ia *InitArgs) AddFlagSets(flags *flag.FlagSet) { @@ -142,6 +146,7 @@ func (va *ValidateArgs) AddFlagSets(flags *flag.FlagSet) { flags.BoolVar(&va.SyntaxOnly, "syntax-only", false, "check syntax only") flags.BoolVar(&va.NoWarnUndeclaredVar, "no-warn-undeclared-var", false, "Ignore warnings for variable files containing undeclared variables.") flags.BoolVar(&va.EvaluateDatasources, "evaluate-datasources", false, "evaluate datasources for validation (HCL2 only, may incur costs)") + flags.BoolVar(&va.ReleaseOnly, "ignore-prerelease-plugins", false, "Disable the loading of prerelease plugin binaries (x.y.z-.") va.MetaArgs.AddFlagSets(flags) } @@ -151,6 +156,7 @@ type ValidateArgs struct { MetaArgs SyntaxOnly, NoWarnUndeclaredVar bool EvaluateDatasources bool + ReleaseOnly bool } func (va *InspectArgs) AddFlagSets(flags *flag.FlagSet) { diff --git a/command/validate.go b/command/validate.go index 9747dabf95c..da41e30cf0a 100644 --- a/command/validate.go +++ b/command/validate.go @@ -48,6 +48,11 @@ func (c *ValidateCommand) ParseArgs(args []string) (*ValidateArgs, int) { } func (c *ValidateCommand) RunContext(ctx context.Context, cla *ValidateArgs) int { + // Set the release only flag if specified as argument + // + // This deactivates the capacity for Packer to load development binaries. + c.CoreConfig.Components.PluginConfig.ReleasesOnly = cla.ReleaseOnly + // By default we want to inform users of undeclared variables when validating but not during build time. cla.MetaArgs.WarnOnUndeclaredVar = true if cla.NoWarnUndeclaredVar { From 9a6e74a66b45a40453b93e693d8dd06c0a4e7531 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 2 Feb 2024 11:04:44 -0500 Subject: [PATCH 310/381] command: add dev support for plugins install Since we now support loading pre-releases with Packer subcommands, we relax the contraints we had placed on the `--path' option, so it will accept any `-dev' binary, in addition to final releases. --- command/plugins_install.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/command/plugins_install.go b/command/plugins_install.go index 1234579206a..0563ae31f77 100644 --- a/command/plugins_install.go +++ b/command/plugins_install.go @@ -257,11 +257,11 @@ func (c *PluginsInstallCommand) InstallFromBinary(opts plugingetter.ListInstalla Detail: fmt.Sprintf("Plugin's reported version (%q) is not semver-compatible: %s", desc.Version, err), }}) } - if semver.Prerelease() != "" { + if semver.Prerelease() != "" && semver.Prerelease() != "dev" { return writeDiags(c.Ui, nil, hcl.Diagnostics{&hcl.Diagnostic{ Severity: hcl.DiagError, Summary: "Invalid version", - Detail: fmt.Sprintf("Packer can only install plugin releases with this command (ex: 1.0.0), the binary's reported version is %q", desc.Version), + Detail: fmt.Sprintf("Packer can only install plugin releases with this command (ex: 1.0.0) or development pre-releases (ex: 1.0.0-dev), the binary's reported version is %q", desc.Version), }}) } From 503768c683bdd4a996e45f689e9f43207e304dd9 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 2 Feb 2024 11:06:59 -0500 Subject: [PATCH 311/381] command: trim trailing spaces from help message --- command/plugins_install.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/command/plugins_install.go b/command/plugins_install.go index 0563ae31f77..0540909c480 100644 --- a/command/plugins_install.go +++ b/command/plugins_install.go @@ -49,10 +49,10 @@ Usage: packer plugins install [OPTIONS...] [] packer plugins install --path ./packer-plugin-happycloud "github.com/hashicorp/happycloud" Options: - -path Install the plugin from a locally-sourced plugin binary. - This installs the plugin where a normal invocation would, but will + -path Install the plugin from a locally-sourced plugin binary. + This installs the plugin where a normal invocation would, but will not try to download it from a remote location, and instead - install the binary in the Packer plugins path. This option cannot + install the binary in the Packer plugins path. This option cannot be specified with a version constraint. -force Forces reinstallation of plugins, even if already installed. ` From 2e2038bc30f13661b712f956d5b3883efe634e3a Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 23 Feb 2024 16:01:01 -0500 Subject: [PATCH 312/381] command: migrate tests using the comment plugin In order to test the Packer subcommands, some tests rely on a plugin: github.com/sylviamoss/comment. This plugin is outdated compared to our SDK, and some of the binaries releases don't match what is expected by Packer, i.e. v1.0.0 vs. v0.2.8. To fix that, we migrate to use the hashicups plugin, which is our demo plugin for Packer, and is actually maintained, and up-to-date, which will make those tests more reliable moving forward. --- command/init_test.go | 144 ++++++++++++++++---------------- command/plugins_install_test.go | 68 +++++++-------- 2 files changed, 107 insertions(+), 105 deletions(-) diff --git a/command/init_test.go b/command/init_test.go index ad501f15182..4a0c44be945 100644 --- a/command/init_test.go +++ b/command/init_test.go @@ -61,71 +61,75 @@ func TestInitCommand_Run(t *testing.T) { cfg := &configDirSingleton{map[string]string{}} tests := []testCaseInit{ + // { + // // here we pre-write plugins with valid checksums, Packer will + // // see those as valid installations it did. + // // the directory hash before and after init should be the same, + // // that's a no-op. This also should do no GH query, so it is best + // // to always run it. + // // + // // Note: cannot work with plugin changes since the fake binary + // // isn't recognised as a potential plugin, so Packer always + // // installs it. + // "already-installed-no-op", + // nil, + // TestMetaFile(t), + // map[string]string{ + // "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_darwin_amd64": "1", + // "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_darwin_amd64_SHA256SUM": "a23e48324f2d9b912a89354945562b21b0ae99133b31d3132e2e6671aba8e085", + // "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_windows_amd64.exe": "1.exe", + // "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_windows_amd64.exe_SHA256SUM": "f1cf5865b35933b8e5195625ac8be44487b64007f223912cc5c1784e493e62b2", + // "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_linux_amd64": "1.out", + // "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_linux_amd64_SHA256SUM": "0a4e4e1d6de28054f64946782a5eb92edc663e980ae0780fcb3a614d27c58506", + // }, + // "h1:jQchMpyaQhkZYn0iguw6E6O4VCWxacYx2aR/RJJNLmo=", + // map[string]string{ + // `cfg.pkr.hcl`: ` + // packer { + // required_plugins { + // comment = { + // source = "github.com/hashicorp/hashicups" + // version = "v1.0.1" + // } + // } + // }`, + // }, + // cfg.dir("1_pkr_config"), + // cfg.dir("1_pkr_user_folder"), + // 0, + // nil, + // "h1:jQchMpyaQhkZYn0iguw6E6O4VCWxacYx2aR/RJJNLmo=", + // []func(t *testing.T, tc testCaseInit){ + // // test that a build will not work since plugins are broken for + // // this tests (they are not binaries). + // testBuild{want: 1}.fn, + // }, + // }, { // here we pre-write plugins with valid checksums, Packer will // see those as valid installations it did. - // the directory hash before and after init should be the same, - // that's a no-op. This also should do no GH query, so it is best - // to always run it. - "already-installed-no-op", - nil, - TestMetaFile(t), - map[string]string{ - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64": "1", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64_SHA256SUM": "6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe": "1.exe", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe_SHA256SUM": "07d8453027192ee0c4120242e6e84e2ca2328b8e0f506e2f818a1a5b82790a0b", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64": "1.out", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64_SHA256SUM": "59031c50e0dfeedfde2b4e9445754804dce3f29e4efa737eead0ca9b4f5b85a5", - }, - "h1:Q5qyAOdD43hL3CquQdVfaHpOYGf0UsZ/+wVA9Ry6cbA=", - map[string]string{ - `cfg.pkr.hcl`: ` - packer { - required_plugins { - comment = { - source = "github.com/sylviamoss/comment" - version = "v0.2.018" - } - } - }`, - }, - cfg.dir("1_pkr_config"), - cfg.dir("1_pkr_user_folder"), - 0, - nil, - "h1:Q5qyAOdD43hL3CquQdVfaHpOYGf0UsZ/+wVA9Ry6cbA=", - []func(t *testing.T, tc testCaseInit){ - // test that a build will not work since plugins are broken for - // this tests (they are not binaries). - testBuild{want: 1}.fn, - }, - }, - { - // here we pre-write plugins with valid checksums, Packer will - // see those as valid installations it did. - // But because we require version 0.2.19, we will upgrade. + // But because we require version 1.0.2, we will upgrade. "already-installed-upgrade", []func(t *testing.T, tc testCaseInit){ skipInitTestUnlessEnVar(acctest.TestEnvVar).fn, }, TestMetaFile(t), map[string]string{ - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64": "1", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64_SHA256SUM": "6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe": "1.exe", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe_SHA256SUM": "07d8453027192ee0c4120242e6e84e2ca2328b8e0f506e2f818a1a5b82790a0b", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64": "1.out", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64_SHA256SUM": "59031c50e0dfeedfde2b4e9445754804dce3f29e4efa737eead0ca9b4f5b85a5", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_darwin_amd64": "1", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_darwin_amd64_SHA256SUM": "a23e48324f2d9b912a89354945562b21b0ae99133b31d3132e2e6671aba8e085", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_windows_amd64.exe": "1.exe", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_windows_amd64.exe_SHA256SUM": "f1cf5865b35933b8e5195625ac8be44487b64007f223912cc5c1784e493e62b2", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_linux_amd64": "1.out", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_linux_amd64_SHA256SUM": "0a4e4e1d6de28054f64946782a5eb92edc663e980ae0780fcb3a614d27c58506", }, - "h1:Q5qyAOdD43hL3CquQdVfaHpOYGf0UsZ/+wVA9Ry6cbA=", + "h1:jQchMpyaQhkZYn0iguw6E6O4VCWxacYx2aR/RJJNLmo=", map[string]string{ `cfg.pkr.hcl`: ` packer { required_plugins { - comment = { - source = "github.com/sylviamoss/comment" - version = "v0.2.019" + hashicups = { + source = "github.com/hashicorp/hashicups" + version = "v1.0.2" } } }`, @@ -136,11 +140,9 @@ func TestInitCommand_Run(t *testing.T) { `, `build.pkr.hcl`: ` build { - sources = ["source.null.test"] - provisioner "comment" { - comment = "Begin ¡" - ui = true - bubble_text = true + sources = ["null.test"] + provisioner "hashicups-toppings" { + toppings = ["sugar"] # Takes 5 seconds in the current state } } `, @@ -149,27 +151,27 @@ func TestInitCommand_Run(t *testing.T) { cfg.dir("2_pkr_user_folder"), 0, []string{ - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64_SHA256SUM", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64_SHA256SUM", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe_SHA256SUM", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_darwin_amd64", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_darwin_amd64_SHA256SUM", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_linux_amd64", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_linux_amd64_SHA256SUM", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_windows_amd64.exe", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_windows_amd64.exe_SHA256SUM", map[string]string{ - "darwin": "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_darwin_amd64_SHA256SUM", - "linux": "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_linux_amd64_SHA256SUM", - "windows": "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_windows_amd64.exe_SHA256SUM", + "darwin": "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.2_x5.0_darwin_amd64_SHA256SUM", + "linux": "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.2_x5.0_linux_amd64_SHA256SUM", + "windows": "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.2_x5.0_windows_amd64.exe_SHA256SUM", }[runtime.GOOS], map[string]string{ - "darwin": "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_darwin_amd64", - "linux": "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_linux_amd64", - "windows": "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_windows_amd64.exe", + "darwin": "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.2_x5.0_darwin_amd64", + "linux": "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.2_x5.0_linux_amd64", + "windows": "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.2_x5.0_windows_amd64.exe", }[runtime.GOOS], }, map[string]string{ - "darwin": "h1:ORwcCYUx8z/5n/QvuTJo2vrgKpfJA4AxlNg1G9/BCDI=", - "linux": "h1:CGym0+Nd0LEANgzqL0wx/LDjRL8bYwlpZ0HajPJo/hs=", - "windows": "h1:ag0/C1YjP7KoEDYOiJHE0K+lhFgs0tVgjriWCXVT1fg=", + "darwin": "h1:ptsMLvUeLsMMeXDJP2PWKAKIkE+kWVhOkhNYOYPJbSE=", + "linux": "h1:ivCmyQ+/qNXfBsyeccGsa7P5232q7MUZk83B3yl80Ms=", + "windows": "h1:BeqAUnyGiBg9fVuf9Cn9a4h91bgdZ2U4kV7EuQKefcM=", }[runtime.GOOS], []func(t *testing.T, tc testCaseInit){ // test that a build will work as the plugin was just installed diff --git a/command/plugins_install_test.go b/command/plugins_install_test.go index e8ad08fd4d8..2df9e7a1da9 100644 --- a/command/plugins_install_test.go +++ b/command/plugins_install_test.go @@ -37,57 +37,57 @@ func TestPluginsInstallCommand_Run(t *testing.T) { name: "already-installed-no-op", Meta: TestMetaFile(t), inPluginFolder: map[string]string{ - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64": "1", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64_SHA256SUM": "6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe": "1.exe", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe_SHA256SUM": "07d8453027192ee0c4120242e6e84e2ca2328b8e0f506e2f818a1a5b82790a0b", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64": "1.out", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64_SHA256SUM": "59031c50e0dfeedfde2b4e9445754804dce3f29e4efa737eead0ca9b4f5b85a5", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_darwin_amd64": "1", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_darwin_amd64_SHA256SUM": "6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_windows_amd64.exe": "1.exe", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_windows_amd64.exe_SHA256SUM": "07d8453027192ee0c4120242e6e84e2ca2328b8e0f506e2f818a1a5b82790a0b", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_linux_amd64": "1.out", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_linux_amd64_SHA256SUM": "59031c50e0dfeedfde2b4e9445754804dce3f29e4efa737eead0ca9b4f5b85a5", }, - expectedPackerConfigDirHashBeforeInstall: "h1:Q5qyAOdD43hL3CquQdVfaHpOYGf0UsZ/+wVA9Ry6cbA=", + expectedPackerConfigDirHashBeforeInstall: "h1:sxhWsXwLkxCO1fm86oO2QIg7ImLdfw9pmXa0hKHIeUw=", packerConfigDir: cfg.dir("1_pkr_plugins_config"), - pluginSourceArgs: []string{"github.com/sylviamoss/comment", "v0.2.18"}, + pluginSourceArgs: []string{"github.com/hashicorp/hashicups", "v1.0.1"}, want: 0, dirFiles: nil, - expectedPackerConfigDirHashAfterInstall: "h1:Q5qyAOdD43hL3CquQdVfaHpOYGf0UsZ/+wVA9Ry6cbA=", + expectedPackerConfigDirHashAfterInstall: "h1:sxhWsXwLkxCO1fm86oO2QIg7ImLdfw9pmXa0hKHIeUw=", }, { name: "install-newer-version", Meta: TestMetaFile(t), inPluginFolder: map[string]string{ - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64": "1", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64_SHA256SUM": "6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe": "1.exe", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe_SHA256SUM": "07d8453027192ee0c4120242e6e84e2ca2328b8e0f506e2f818a1a5b82790a0b", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64": "1.out", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64_SHA256SUM": "59031c50e0dfeedfde2b4e9445754804dce3f29e4efa737eead0ca9b4f5b85a5", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_darwin_amd64": "1", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_darwin_amd64_SHA256SUM": "6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_windows_amd64.exe": "1.exe", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_windows_amd64.exe_SHA256SUM": "07d8453027192ee0c4120242e6e84e2ca2328b8e0f506e2f818a1a5b82790a0b", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_linux_amd64": "1.out", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_linux_amd64_SHA256SUM": "59031c50e0dfeedfde2b4e9445754804dce3f29e4efa737eead0ca9b4f5b85a5", }, - expectedPackerConfigDirHashBeforeInstall: "h1:Q5qyAOdD43hL3CquQdVfaHpOYGf0UsZ/+wVA9Ry6cbA=", + expectedPackerConfigDirHashBeforeInstall: "h1:sxhWsXwLkxCO1fm86oO2QIg7ImLdfw9pmXa0hKHIeUw=", packerConfigDir: cfg.dir("2_pkr_plugins_config"), - pluginSourceArgs: []string{"github.com/sylviamoss/comment", "v0.2.19"}, + pluginSourceArgs: []string{"github.com/hashicorp/hashicups", "v1.0.2"}, want: 0, dirFiles: []string{ - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_darwin_amd64_SHA256SUM", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_linux_amd64_SHA256SUM", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe", - "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.18_x5.0_windows_amd64.exe_SHA256SUM", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_darwin_amd64", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_darwin_amd64_SHA256SUM", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_linux_amd64", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_linux_amd64_SHA256SUM", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_windows_amd64.exe", + "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.1_x5.0_windows_amd64.exe_SHA256SUM", map[string]string{ - "darwin": "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_darwin_amd64_SHA256SUM", - "linux": "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_linux_amd64_SHA256SUM", - "windows": "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_windows_amd64.exe_SHA256SUM", + "darwin": "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.2_x5.0_darwin_amd64_SHA256SUM", + "linux": "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.2_x5.0_linux_amd64_SHA256SUM", + "windows": "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.2_x5.0_windows_amd64.exe_SHA256SUM", }[runtime.GOOS], map[string]string{ - "darwin": "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_darwin_amd64", - "linux": "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_linux_amd64", - "windows": "github.com/sylviamoss/comment/packer-plugin-comment_v0.2.19_x5.0_windows_amd64.exe", + "darwin": "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.2_x5.0_darwin_amd64", + "linux": "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.2_x5.0_linux_amd64", + "windows": "github.com/hashicorp/hashicups/packer-plugin-hashicups_v1.0.2_x5.0_windows_amd64.exe", }[runtime.GOOS], }, expectedPackerConfigDirHashAfterInstall: map[string]string{ - "darwin": "h1:ORwcCYUx8z/5n/QvuTJo2vrgKpfJA4AxlNg1G9/BCDI=", - "linux": "h1:CGym0+Nd0LEANgzqL0wx/LDjRL8bYwlpZ0HajPJo/hs=", - "windows": "h1:ag0/C1YjP7KoEDYOiJHE0K+lhFgs0tVgjriWCXVT1fg=", + "darwin": "h1:itQ7rZfZarDHmnajkzfxBVMxZ0wBou4I6FNX/ysHggA=", + "linux": "h1:+zgZKpRpVofVgjny13tZNonPBcNNxWF741iYdTE9UCg=", + "windows": "h1:scuTEDpGEWJ0LaKL7ETZ8o7wdW6dJUzV+eg/2shQ+tQ=", }[runtime.GOOS], }, { @@ -96,7 +96,7 @@ func TestPluginsInstallCommand_Run(t *testing.T) { inPluginFolder: nil, expectedPackerConfigDirHashBeforeInstall: "h1:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", packerConfigDir: cfg.dir("3_pkr_plugins_config"), - pluginSourceArgs: []string{"example.com/sylviamoss/comment", "v0.2.19"}, + pluginSourceArgs: []string{"example.com/hashicorp/hashicups", "v0.2.19"}, want: 1, dirFiles: nil, expectedPackerConfigDirHashAfterInstall: "h1:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", @@ -107,7 +107,7 @@ func TestPluginsInstallCommand_Run(t *testing.T) { inPluginFolder: nil, expectedPackerConfigDirHashBeforeInstall: "h1:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", packerConfigDir: cfg.dir("4_pkr_plugins_config"), - pluginSourceArgs: []string{"github.com/sylviamoss/comment", "v0.2.18", "github.com/sylviamoss/comment", "v0.2.19"}, + pluginSourceArgs: []string{"github.com/hashicorp/hashicups", "v0.2.18", "github.com/hashicorp/hashicups", "v0.2.19"}, want: 1, dirFiles: nil, expectedPackerConfigDirHashAfterInstall: "h1:47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=", From 7113dea5efa4d268e1ac977d52282dbd5862eb24 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 23 Feb 2024 17:15:38 -0500 Subject: [PATCH 313/381] plugin-getter: fix typo in API mismatch error --- packer/plugin-getter/plugins.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index 3271a868d5b..c18e7d1a123 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -379,7 +379,7 @@ func (binOpts *BinaryInstallationOptions) CheckProtocolVersion(remoteProt string } if vMinori > APIVersoinMinori { - return fmt.Errorf("Unsupported remote protocol MINOR version %q. The supported MINOR protocol versions are version %q and bellow."+ + return fmt.Errorf("Unsupported remote protocol MINOR version %q. The supported MINOR protocol versions are version %q and below. "+ "Please upgrade Packer or use an older version of the plugin if possible.", vMinor, binOpts.APIVersionMinor) } From 525b0a7c4cff4635da6c971abb7fdd101ea81aa2 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 23 Feb 2024 17:16:09 -0500 Subject: [PATCH 314/381] plugin: use API version for loading plugins While migrating to a unified approach for loading plugins, the API major and minor versions were not added to the constraints for discovering plugins from the environment, leading to Packer potentially considering plugins that are not compatible with itself. This should not be possible, but was due to this omission, which we fix with this commit. --- packer/plugin.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packer/plugin.go b/packer/plugin.go index d2bf0e200cf..30261d7e05c 100644 --- a/packer/plugin.go +++ b/packer/plugin.go @@ -77,8 +77,10 @@ func (c *PluginConfig) Discover() error { installations, err := plugingetter.Requirement{}.ListInstallations(plugingetter.ListInstallationsOptions{ PluginDirectory: c.PluginDirectory, BinaryInstallationOptions: plugingetter.BinaryInstallationOptions{ - OS: runtime.GOOS, - ARCH: runtime.GOARCH, + OS: runtime.GOOS, + ARCH: runtime.GOARCH, + APIVersionMajor: pluginsdk.APIVersionMajor, + APIVersionMinor: pluginsdk.APIVersionMinor, Checksummers: []plugingetter.Checksummer{ {Type: "sha256", Hash: sha256.New()}, }, From 17b69be7380b4cf7602ebb8b32cb0923787f2e10 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 4 Mar 2024 11:37:42 -0500 Subject: [PATCH 315/381] Update CHANGELOG --- CHANGELOG.md | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 96 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index efb48eac5c6..e65c32424e9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,104 @@ ## 1.11.0 (Upcoming) ### NOTES: -**Breaking Change**: Support for loading single-component plugins has been removed from Packer. [GH-12785](https://github.com/hashicorp/packer/pull/12785) +* **Breaking Change**: Support for loading single-component plugins has been removed from Packer. [GH-12785](https://github.com/hashicorp/packer/pull/12785) + +* **Breaking Change**: Support for loading plugin binaries following + the naming convention of packer-plugin-name has been dropped. Packer will now only load + plugins stored under PACKER_PLUGIN_PATH using the expected namespaced + directory and CHECKSUM files. This change drops support for loading plugin + binaries in Packer's executable directory or a template's current working + directory. [GH-12828](https://github.com/hashicorp/packer/pull/12828) + +```shell +/Users/dev/.packer.d/plugins +└── github.com + └── hashicorp + └── happycloud + ├── packer-plugin-happycloud_v0.0.1_x5.0_darwin_arm64 + └── packer-plugin-happycloud_v0.0.1_x5.0_darwin_arm64_SHA256SUM +``` + +### IMPROVEMENTS: +* core: Move to predictable plugin loading schema - Packer will now only load + plugins stored under PACKER_PLUGIN_PATH using the expected namespaced + directory and CHECKSUM files. + [GH-12828](https://github.com/hashicorp/packer/pull/12828) +* core: Remove support loading single-component plugins. + [GH-12785](https://github.com/hashicorp/packer/pull/12785) +* core: Packer now considers development binaries when evaluating plugin + version constraints. This work allows users to use binaries with versions + reported as "x.y.z-dev" to be used with the Packer `required_plugins` + block. [GH-12828](https://github.com/hashicorp/packer/pull/12828) + +Given the specified version constraint only versions greater than or equal to 1.1.0 will be considered. + +```hcl +amazon = { + source = "github.com/hashicorp/amazon" + version = ">= 1.1.0" +} +``` +If a development binary is installed, Packer will use it if: + +1. It is the highest compatible version installed. +2. There is no final plugin version with the same version number installed alongside it. + +```shell +/Users/dev/.packer.d/plugins +└─ github.com + └─ hashicorp + └── amazon + ├── packer-plugin-amazon_v1.1.0_x5.0_darwin_arm64 + ├── packer-plugin-amazon_v1.1.0_x5.0_darwin_arm64_SHA256SUM + ├── packer-plugin-amazon_v1.1.1-dev_x5.0_darwin_arm64 + └── packer-plugin-amazon_v1.1.1-dev_x5.0_darwin_arm64_SHA256SUM +``` + +Version 1.1.1-dev of the Amazon plugin will match the specified version constraint and be used for executing the Packer build. + +If, however, a 1.1.1 release version of the plugin is available, it will have precedence over the development binary. + +```shell +/Users/dev/.packer.d/plugins +└─ github.com + └─ hashicorp + └── amazon + ├── packer-plugin-amazon_v1.1.1-dev_x5.0_darwin_arm64 + ├── packer-plugin-amazon_v1.1.1-dev_x5.0_darwin_arm64_SHA256SUM + ├── packer-plugin-amazon_v1.1.1_x5.0_darwin_arm64 + └── packer-plugin-amazon_v1.1.1_x5.0_darwin_arm64_SHA256SUM +``` + +## 1.10.2 (Upcoming) + +### NOTES: +* Continuing the work in in Packer v1.10.0 we introduced the ability to install + a locally sourced plugin using packer `plugins install --path`, this + release extends support to development plugin binaries - binaries that + report "dev" as part of their plugin version. Instead of manually placing a + downloaded binary into the executable or current working directory we + encourage you to run the command `packer plugins install –path github.com/hashicorp/happycloud` to install + the binary into a Packer compatible path. + [GH-12855](https://github.com/hashicorp/packer/pull/12855) ### IMPROVEMENTS: -* core: remove support single-component plugins. [GH-12785](https://github.com/hashicorp/packer/pull/12785) +* cmd/plugins: Add support for installing local development binaries to `packer plugins install`. + [GH-12855](https://github.com/hashicorp/packer/pull/12855) +* core: Validate bucket name when using `hcp_packer_registry` block. + [GH-12820](https://github.com/hashicorp/packer/pull/12820) +* core: Update github.com/hashicorp/hcp-sdk-go from 0.83.0 to 0.85.0. + [GH-12850](https://github.com/hashicorp/packer/pull/12850) + [GH-12827](https://github.com/hashicorp/packer/pull/12827) + +### BUG FIXES: +* core/hcp: HCP Packer build failures properly distinguish between incompatible + plugins and general publishing errors. + [GH-12854](https://github.com/hashicorp/packer/pull/12854) + [GH-12835](https://github.com/hashicorp/packer/pull/12835) + +### NOTES: ## 1.10.1 (January 30, 2024) From 7e1fb1cc36a707aa31d3b8eec6cff61ef63b2a68 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 6 Mar 2024 09:32:58 -0500 Subject: [PATCH 316/381] Update release date for 1.10.2 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e65c32424e9..1daadde8e83 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -70,7 +70,7 @@ If, however, a 1.1.1 release version of the plugin is available, it will have pr └── packer-plugin-amazon_v1.1.1_x5.0_darwin_arm64_SHA256SUM ``` -## 1.10.2 (Upcoming) +## 1.10.2 (March 6, 2024) ### NOTES: * Continuing the work in in Packer v1.10.0 we introduced the ability to install From 008422c3f195e0372835e472d8837f4935305994 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 6 Mar 2024 10:11:16 -0500 Subject: [PATCH 317/381] Clean up CHANGELOG --- CHANGELOG.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1daadde8e83..609db55f5b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -98,8 +98,6 @@ If, however, a 1.1.1 release version of the plugin is available, it will have pr [GH-12854](https://github.com/hashicorp/packer/pull/12854) [GH-12835](https://github.com/hashicorp/packer/pull/12835) -### NOTES: - ## 1.10.1 (January 30, 2024) ### NOTES: From 910a22f2632c2e072174dbbaa4e0c15c39dd48a8 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 6 Mar 2024 10:38:30 -0500 Subject: [PATCH 318/381] Bump google.golang.org/protobuf to address CVE-2024-24786 --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index deab270a917..ec2cf79c0fd 100644 --- a/go.mod +++ b/go.mod @@ -184,7 +184,7 @@ require ( google.golang.org/genproto v0.0.0-20231012201019-e917dd12ba7a // indirect google.golang.org/genproto/googleapis/api v0.0.0-20231002182017-d307bd883b97 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect - google.golang.org/protobuf v1.31.0 // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/cheggaaa/pb.v1 v1.0.28 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index c4d29664a91..710bd9b5e87 100644 --- a/go.sum +++ b/go.sum @@ -742,8 +742,8 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From e3c8d9b929b490ada41ee3189f7d847a7df0abd3 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 6 Mar 2024 10:56:05 -0500 Subject: [PATCH 319/381] Bump Go toolchain to 1.21.8 This change addresses vulnerabilities reported by govulncheck ``` Vulnerability #1: GO-2024-2610 Errors returned from JSON marshaling may break template escaping in html/template More info: https://pkg.go.dev/vuln/GO-2024-2610 Standard library Found in: html/template@go1.22 Fixed in: html/template@go1.22.1 Example traces found: #1: datasource/http/data.go:119:24: http.Datasource.Execute calls http.Client.Do, which eventually calls template.Template.Execute #2: datasource/http/data.go:119:24: http.Datasource.Execute calls http.Client.Do, which eventually calls template.Template.ExecuteTemplate Vulnerability #2: GO-2024-2600 Incorrect forwarding of sensitive headers and cookies on HTTP redirect in net/http More info: https://pkg.go.dev/vuln/GO-2024-2600 Standard library Found in: net/http@go1.22 Fixed in: net/http@go1.22.1 Example traces found: #1: datasource/http/data.go:119:24: http.Datasource.Execute calls http.Client.Do #2: hcl2template/function/aws_secretetkey.go:38:37: function.init calls template.GetAWSSecret, which eventually calls http.Client.Post #3: hcl2template/function/aws_secretetkey.go:38:37: function.init calls template.GetAWSSecret, which eventually calls http.Client.PostForm Vulnerability #3: GO-2024-2599 Memory exhaustion in multipart form parsing in net/textproto and net/http More info: https://pkg.go.dev/vuln/GO-2024-2599 Standard library Found in: net/textproto@go1.22 Fixed in: net/textproto@go1.22.1 Example traces found: #1: internal/hcp/api/service_build.go:81:48: api.Client.UpdateBuild calls packer_service.Client.PackerServiceUpdateBuild, which eventually calls textproto.Reader.ReadLine #2: datasource/http/data.go:140:26: http.Datasource.Execute calls io.ReadAll, which eventually calls textproto.Reader.ReadMIMEHeader Vulnerability #4: GO-2024-2598 Verify panics on certificates with an unknown public key algorithm in crypto/x509 More info: https://pkg.go.dev/vuln/GO-2024-2598 Standard library Found in: crypto/x509@go1.22 Fixed in: crypto/x509@go1.22.1 Example traces found: #1: datasource/http/data.go:140:26: http.Datasource.Execute calls io.ReadAll, which eventually calls x509.Certificate.Verify ``` --- .go-version | 2 +- go.mod | 2 +- go.sum | 22 ++++++++++++++++++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/.go-version b/.go-version index 3b9e4a0c187..428abfd24fb 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.20.12 +1.21.8 diff --git a/go.mod b/go.mod index ec2cf79c0fd..03507c3517f 100644 --- a/go.mod +++ b/go.mod @@ -190,6 +190,6 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect ) -go 1.20 +go 1.21 replace github.com/zclconf/go-cty => github.com/nywilken/go-cty v1.13.3 // added by packer-sdc fix as noted in github.com/hashicorp/packer-plugin-sdk/issues/187 diff --git a/go.sum b/go.sum index 710bd9b5e87..e3de428d6ec 100644 --- a/go.sum +++ b/go.sum @@ -40,12 +40,16 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= +github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/antchfx/xmlquery v1.3.5 h1:I7TuBRqsnfFuL11ruavGm911Awx9IqSdiU6W/ztSmVw= +github.com/antchfx/xmlquery v1.3.5/go.mod h1:64w0Xesg2sTaawIdNqMB+7qaW/bSqkQm+ssPaCMWNnc= github.com/antchfx/xpath v1.1.11 h1:WOFtK8TVAjLm3lbgqeP0arlHpvCEeTANeWZ/csPpJkQ= +github.com/antchfx/xpath v1.1.11/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apparentlymart/go-cidr v1.0.1 h1:NmIwLZ/KdsjIUlhf+/Np40atNXm/+lZ5txfTJ/SpF+U= github.com/apparentlymart/go-cidr v1.0.1/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3 h1:ZSTrOEhiM5J5RFxEaFvMZVEAM1KvT1YzbEOwB2EAGjA= +github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= @@ -58,6 +62,7 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 h1:DklsrG3dyBCFEj5IhUbnKptjxatkF07cF2ak3yi77so= github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/aws/aws-sdk-go v1.31.9/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= @@ -112,7 +117,9 @@ github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdf github.com/dylanmei/iso8601 v0.1.0 h1:812NGQDBcqquTfH5Yeo7lwR0nzx/cKdsmf3qMjPURUI= github.com/dylanmei/iso8601 v0.1.0/go.mod h1:w9KhXSgIyROl1DefbMYIE7UVSIvELTbMrCfx+QkYnoQ= github.com/dylanmei/winrmtest v0.0.0-20210303004826-fbc9ae56efb6 h1:zWydSUQBJApHwpQ4guHi+mGyQN/8yN6xbKWdDtL3ZNM= +github.com/dylanmei/winrmtest v0.0.0-20210303004826-fbc9ae56efb6/go.mod h1:6BLLhzn1VEiJ4veuAGhINBTrBlV889Wd+aU4auxKOww= github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -128,11 +135,13 @@ github.com/fatih/color v1.14.1 h1:qfhVLaG5s+nCROl1zJsZRxFeYrHLqWroPOQ8BWiNb4w= github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= +github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -172,6 +181,7 @@ github.com/go-openapi/validate v0.22.4/go.mod h1:qm6O8ZIcPVdSY5219468Jv7kBdGvkiZ github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= +github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= @@ -204,6 +214,7 @@ github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiu github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -223,6 +234,7 @@ github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/s2a-go v0.1.4 h1:1kZ/sQM3srePvKs3tXAvQzo66XfcReoqFpIpIccE7Oc= github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -241,6 +253,7 @@ github.com/hashicorp/aws-sdk-go-base v0.7.1/go.mod h1:2fRjWDv3jJBeN6mVWFHV6hFTNe github.com/hashicorp/consul/api v1.25.1 h1:CqrdhYzc8XZuPnhIYZWH45toM0LB9ZeYr/gvpLVI3PE= github.com/hashicorp/consul/api v1.25.1/go.mod h1:iiLVwR/htV7mas/sy0O+XSuEnrdBUUydemjxcUrAt4g= github.com/hashicorp/consul/sdk v0.14.1 h1:ZiwE2bKb+zro68sWzZ1SgHF3kRMBZ94TwOCFRF4ylPs= +github.com/hashicorp/consul/sdk v0.14.1/go.mod h1:vFt03juSzocLRFo59NkeQHHmQa6+g7oU0pfzdI1mUhg= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -266,6 +279,7 @@ github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJ github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-msgpack v0.5.5 h1:i9R9JSrqIz0QVLz3sz+i3YJdT7TTSLcfLLzJi9aZTuI= +github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= @@ -351,10 +365,13 @@ github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFB github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4= +github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= @@ -431,6 +448,7 @@ github.com/nywilken/go-cty v1.13.3/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= +github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/packer-community/winrmcp v0.0.0-20180921211025-c76d91c1e7db h1:9uViuKtx1jrlXLBW/pMnhOfzn3iSEdLase/But/IZRU= @@ -472,6 +490,7 @@ github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= @@ -540,6 +559,7 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b h1:FosyBZYxY34Wul7O/MSKey3txpPYyCqVO5ZyceuQJEI= +github.com/zclconf/go-cty-debug v0.0.0-20191215020915-b22d67c1ba0b/go.mod h1:ZRKQfBXbGkpdV6QMzT3rU1kSTAnfu1dO8dPKjYprgj8= github.com/zclconf/go-cty-yaml v1.0.1 h1:up11wlgAaDvlAGENcFDnZgkn0qUJurso7k6EpURKNF8= github.com/zclconf/go-cty-yaml v1.0.1/go.mod h1:IP3Ylp0wQpYm50IHK8OZWKMu6sPJIUgKa8XhiVHura0= go.mongodb.org/mongo-driver v1.13.1 h1:YIc7HTYsKndGK4RFzJ3covLz1byri52x0IoMB0Pt/vk= @@ -551,6 +571,7 @@ go.opentelemetry.io/otel v1.17.0/go.mod h1:I2vmBGtFaODIVMBSTPVDlJSzBDNf93k60E6Ft go.opentelemetry.io/otel/metric v1.17.0 h1:iG6LGVz5Gh+IuO0jmgvpTB6YVrCGngi8QGm+pMd8Pdc= go.opentelemetry.io/otel/metric v1.17.0/go.mod h1:h4skoxdZI17AxwITdmdZjjYJQH5nzijUUjm+wtPph5o= go.opentelemetry.io/otel/sdk v1.17.0 h1:FLN2X66Ke/k5Sg3V623Q7h7nt3cHXaW1FOvKKrW0IpE= +go.opentelemetry.io/otel/sdk v1.17.0/go.mod h1:U87sE0f5vQB7hwUoW98pW5Rz4ZDuCFBZFNUBlSgmDFQ= go.opentelemetry.io/otel/trace v1.17.0 h1:/SWhSRHmDPOImIAetP1QAeMnZYiQXrTy4fMMYOdSKWQ= go.opentelemetry.io/otel/trace v1.17.0/go.mod h1:I/4vKTgFclIsXRVucpH25X0mpFSczM7aHeaz0ZBLWjY= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= @@ -749,6 +770,7 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.28 h1:n1tBJnnK2r7g9OW2btFH91V92STTUevLXYFb8gy9EMk= gopkg.in/cheggaaa/pb.v1 v1.0.28/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= From ea1e798c47a556b1f54581801c8a40a5ab42e2ec Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Thu, 7 Mar 2024 10:10:25 -0500 Subject: [PATCH 320/381] fmt: print parse errors on error The fmt command reformats HCL2 templates, provided it can parse the file and reformat its contents according to the standards set by the HCL library's formatters. However, if the file is malformed for some reason, the command will fail with a parse error, but while the parse error message is shown, the actual errors in the template(s) are not forwarded, making it hard for users to understand what went wrong with the contents of the file they're trying to format. In order to be more helpful with those errors, we now forward those parsing errors to the UI. --- command/fmt_test.go | 15 +++++++++++++++ command/test-fixtures/fmt_errs/malformed.pkr.hcl | 14 ++++++++++++++ hcl2template/formatter.go | 3 ++- 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 command/test-fixtures/fmt_errs/malformed.pkr.hcl diff --git a/command/fmt_test.go b/command/fmt_test.go index 7d9f3b11979..36497bc80dd 100644 --- a/command/fmt_test.go +++ b/command/fmt_test.go @@ -177,3 +177,18 @@ func Test_fmt_pipe(t *testing.T) { }) } } + +const malformedTemplate = "test-fixtures/fmt_errs/malformed.pkr.hcl" + +func TestFmtParseError(t *testing.T) { + p := helperCommand(t, "fmt", malformedTemplate) + outs, err := p.CombinedOutput() + if err == nil { + t.Errorf("Expected failure to format file, but command did not fail") + } + strLogs := string(outs) + + if !strings.Contains(strLogs, "An argument or block definition is required here.") { + t.Errorf("Expected some diags about parse error, found none") + } +} diff --git a/command/test-fixtures/fmt_errs/malformed.pkr.hcl b/command/test-fixtures/fmt_errs/malformed.pkr.hcl new file mode 100644 index 00000000000..78bff46e974 --- /dev/null +++ b/command/test-fixtures/fmt_errs/malformed.pkr.hcl @@ -0,0 +1,14 @@ +variable "region" { + type =string +} + +invalid + +source "amazon-ebs" "example" { + region = var.region +} + +build { + sources = ["source.amazon-ebs.example"] +} + diff --git a/hcl2template/formatter.go b/hcl2template/formatter.go index c04bb114748..3835aea8b55 100644 --- a/hcl2template/formatter.go +++ b/hcl2template/formatter.go @@ -12,6 +12,7 @@ import ( "path/filepath" "strings" + "github.com/hashicorp/go-multierror" "github.com/hashicorp/hcl/v2" "github.com/hashicorp/hcl/v2/hclparse" "github.com/hashicorp/hcl/v2/hclwrite" @@ -135,7 +136,7 @@ func (f *HCL2Formatter) processFile(filename string) ([]byte, error) { _, diags := f.parser.ParseHCL(inSrc, filename) if diags.HasErrors() { - return nil, fmt.Errorf("failed to parse HCL %s", filename) + return nil, multierror.Append(nil, diags.Errs()...) } outSrc := hclwrite.Format(inSrc) From f75a8d1693d8886b85876af7cc00690b9a2f413c Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 11 Mar 2024 13:20:31 -0400 Subject: [PATCH 321/381] Update CHANGELOG --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 609db55f5b8..73991381f0a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -70,6 +70,13 @@ If, however, a 1.1.1 release version of the plugin is available, it will have pr └── packer-plugin-amazon_v1.1.1_x5.0_darwin_arm64_SHA256SUM ``` +## 1.10.3 (Upcoming) + +### IMPROVEMENTS: +* cmd/fmt: Display actual parsing errors when the `packer fmt` fails to read a + template containing invalid HCL2 syntax. + [GH-12870](https://github.com/hashicorp/packer/pull/12870) + ## 1.10.2 (March 6, 2024) ### NOTES: From bb8e1947da02bed4b3e971aac9f47a79eadf91c7 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 11 Mar 2024 13:29:09 -0400 Subject: [PATCH 322/381] Fix invalid path for copy command --- website/content/docs/plugins/creation/index.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/website/content/docs/plugins/creation/index.mdx b/website/content/docs/plugins/creation/index.mdx index cb6d7d70682..763877aa0fe 100644 --- a/website/content/docs/plugins/creation/index.mdx +++ b/website/content/docs/plugins/creation/index.mdx @@ -203,7 +203,7 @@ wget https://github.com/hashicorp/packer-plugin-scaffolding/archive/refs/heads/m unzip main.zip cp packer-plugin-scaffolding-main/.web-docs/metadata.hcl .web-docs/ cp -r packer-plugin-scaffolding-main/.web-docs/scripts/ .web-docs/scripts/ -cp .github/workflows/notify-integration-release-via-* .github/workflows/ +cp packer-plugin-scaffolding-main/.github/workflows/notify-integration-release-via-* .github/workflows/ # Remove downloaded scaffolding project rm main.zip From 7f056211d99c4ff0bead1e5ec398002d5e61f87b Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 5 Mar 2024 10:28:28 -0500 Subject: [PATCH 323/381] commands: rename plugin to execute The plugin and plugins command had a name that was close, and while plugin is not supposed to be directly called by Packer users, this could happen by accident while trying to execute packer plugins subcommands, and when it does, the error messages are far from explicit, so unless they understand what Packer is doing here, they'll likely be lost. To reduce the risk of confusion, we rename the command to run packer embedded components as execute. --- command/{plugin.go => execute.go} | 14 +++++++------- commands.go | 12 ++++++------ config.go | 8 ++++---- main.go | 2 +- scripts/generate-plugins.go | 16 ++++++++-------- 5 files changed, 26 insertions(+), 26 deletions(-) rename command/{plugin.go => execute.go} (94%) diff --git a/command/plugin.go b/command/execute.go similarity index 94% rename from command/plugin.go rename to command/execute.go index 6cb92b86818..7ad74f314d4 100644 --- a/command/plugin.go +++ b/command/execute.go @@ -36,7 +36,7 @@ import ( windowsshellprovisioner "github.com/hashicorp/packer/provisioner/windows-shell" ) -type PluginCommand struct { +type ExecuteCommand struct { Meta } @@ -75,20 +75,20 @@ var Datasources = map[string]packersdk.Datasource{ var pluginRegexp = regexp.MustCompile("packer-(builder|post-processor|provisioner|datasource)-(.+)") -func (c *PluginCommand) Run(args []string) int { +func (c *ExecuteCommand) Run(args []string) int { // This is an internal call (users should not call this directly) so we're // not going to do much input validation. If there's a problem we'll often // just crash. Error handling should be added to facilitate debugging. log.Printf("args: %#v", args) if len(args) != 1 { - c.Ui.Error("Wrong number of args") + c.Ui.Error(c.Help()) return 1 } // Plugin will match something like "packer-builder-amazon-ebs" parts := pluginRegexp.FindStringSubmatch(args[0]) if len(parts) != 3 { - c.Ui.Error(fmt.Sprintf("Error parsing plugin argument [DEBUG]: %#v", parts)) + c.Ui.Error(c.Help()) return 1 } pluginType := parts[1] // capture group 1 (builder|post-processor|provisioner) @@ -136,9 +136,9 @@ func (c *PluginCommand) Run(args []string) int { return 0 } -func (*PluginCommand) Help() string { +func (*ExecuteCommand) Help() string { helpText := ` -Usage: packer plugin PLUGIN +Usage: packer execute PLUGIN Runs an internally-compiled version of a plugin from the packer binary. @@ -148,6 +148,6 @@ Usage: packer plugin PLUGIN return strings.TrimSpace(helpText) } -func (c *PluginCommand) Synopsis() string { +func (c *ExecuteCommand) Synopsis() string { return "internal plugin command" } diff --git a/commands.go b/commands.go index 9b2d3ebdf35..d7bd02b1d26 100644 --- a/commands.go +++ b/commands.go @@ -29,6 +29,12 @@ func init() { }, nil }, + "execute": func() (cli.Command, error) { + return &command.ExecuteCommand{ + Meta: *CommandMeta, + }, nil + }, + "fix": func() (cli.Command, error) { return &command.FixCommand{ Meta: *CommandMeta, @@ -59,12 +65,6 @@ func init() { }, nil }, - "plugin": func() (cli.Command, error) { - return &command.PluginCommand{ - Meta: *CommandMeta, - }, nil - }, - "plugins": func() (cli.Command, error) { return &command.PluginsCommand{ Meta: *CommandMeta, diff --git a/config.go b/config.go index d4dab230e86..c28d7931bb1 100644 --- a/config.go +++ b/config.go @@ -153,7 +153,7 @@ func (c *config) discoverInternalComponents() error { for builder := range command.Builders { builder := builder if !c.Plugins.Builders.Has(builder) { - bin := fmt.Sprintf("%s%splugin%spacker-builder-%s", + bin := fmt.Sprintf("%s%sexecute%spacker-builder-%s", packerPath, PACKERSPACE, PACKERSPACE, builder) c.Plugins.Builders.Set(builder, func() (packersdk.Builder, error) { return c.Plugins.Client(bin).Builder() @@ -164,7 +164,7 @@ func (c *config) discoverInternalComponents() error { for provisioner := range command.Provisioners { provisioner := provisioner if !c.Plugins.Provisioners.Has(provisioner) { - bin := fmt.Sprintf("%s%splugin%spacker-provisioner-%s", + bin := fmt.Sprintf("%s%sexecute%spacker-provisioner-%s", packerPath, PACKERSPACE, PACKERSPACE, provisioner) c.Plugins.Provisioners.Set(provisioner, func() (packersdk.Provisioner, error) { return c.Plugins.Client(bin).Provisioner() @@ -175,7 +175,7 @@ func (c *config) discoverInternalComponents() error { for postProcessor := range command.PostProcessors { postProcessor := postProcessor if !c.Plugins.PostProcessors.Has(postProcessor) { - bin := fmt.Sprintf("%s%splugin%spacker-post-processor-%s", + bin := fmt.Sprintf("%s%sexecute%spacker-post-processor-%s", packerPath, PACKERSPACE, PACKERSPACE, postProcessor) c.Plugins.PostProcessors.Set(postProcessor, func() (packersdk.PostProcessor, error) { return c.Plugins.Client(bin).PostProcessor() @@ -186,7 +186,7 @@ func (c *config) discoverInternalComponents() error { for dataSource := range command.Datasources { dataSource := dataSource if !c.Plugins.DataSources.Has(dataSource) { - bin := fmt.Sprintf("%s%splugin%spacker-datasource-%s", + bin := fmt.Sprintf("%s%sexecute%spacker-datasource-%s", packerPath, PACKERSPACE, PACKERSPACE, dataSource) c.Plugins.DataSources.Set(dataSource, func() (packersdk.Datasource, error) { return c.Plugins.Client(bin).Datasource() diff --git a/main.go b/main.go index 553c173f477..0f45c253485 100644 --- a/main.go +++ b/main.go @@ -265,7 +265,7 @@ func wrappedMain() int { Args: args, Autocomplete: true, Commands: Commands, - HelpFunc: excludeHelpFunc(Commands, []string{"plugin"}), + HelpFunc: excludeHelpFunc(Commands, []string{"execute"}), HelpWriter: os.Stdout, Name: "packer", Version: version.Version, diff --git a/scripts/generate-plugins.go b/scripts/generate-plugins.go index 7390fafa070..b31306ae12e 100755 --- a/scripts/generate-plugins.go +++ b/scripts/generate-plugins.go @@ -21,7 +21,7 @@ import ( "golang.org/x/tools/imports" ) -const target = "command/plugin.go" +const target = "command/execute.go" func main() { wd, _ := os.Getwd() @@ -278,7 +278,7 @@ packersdk "github.com/hashicorp/packer-plugin-sdk/packer" IMPORTS ) -type PluginCommand struct { +type ExecuteCommand struct { Meta } @@ -292,20 +292,20 @@ DATASOURCES var pluginRegexp = regexp.MustCompile("packer-(builder|post-processor|provisioner|datasource)-(.+)") -func (c *PluginCommand) Run(args []string) int { +func (c *ExecuteCommand) Run(args []string) int { // This is an internal call (users should not call this directly) so we're // not going to do much input validation. If there's a problem we'll often // just crash. Error handling should be added to facilitate debugging. log.Printf("args: %#v", args) if len(args) != 1 { - c.Ui.Error("Wrong number of args") + c.Ui.Error(c.Help()) return 1 } // Plugin will match something like "packer-builder-amazon-ebs" parts := pluginRegexp.FindStringSubmatch(args[0]) if len(parts) != 3 { - c.Ui.Error(fmt.Sprintf("Error parsing plugin argument [DEBUG]: %#v", parts)) + c.Ui.Error(c.Help()) return 1 } pluginType := parts[1] // capture group 1 (builder|post-processor|provisioner) @@ -353,9 +353,9 @@ func (c *PluginCommand) Run(args []string) int { return 0 } -func (*PluginCommand) Help() string { +func (*ExecuteCommand) Help() string { helpText := ` + "`" + ` -Usage: packer plugin PLUGIN +Usage: packer execute PLUGIN Runs an internally-compiled version of a plugin from the packer binary. @@ -365,7 +365,7 @@ Usage: packer plugin PLUGIN return strings.TrimSpace(helpText) } -func (c *PluginCommand) Synopsis() string { +func (c *ExecuteCommand) Synopsis() string { return "internal plugin command" } ` From a463abd73b4de7507898f0dee689b36f4a49b832 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 5 Mar 2024 10:51:28 -0500 Subject: [PATCH 324/381] commands: introduce plugin as alias to plugins --- commands.go | 31 +++++++++++++++++++++++++++++++ main.go | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/commands.go b/commands.go index d7bd02b1d26..5891eba84ee 100644 --- a/commands.go +++ b/commands.go @@ -107,5 +107,36 @@ func init() { CheckFunc: commandVersionCheck, }, nil }, + + // plugin is essentially an alias to the plugins command + // + // It is not meant to be documented or used outside of simple + // typos, as it's easy to write plugin instead of plugins, so + // we opted not to error, but silently alias the two writings. + "plugin": func() (cli.Command, error) { + return &command.PluginsCommand{ + Meta: *CommandMeta, + }, nil + }, + "plugin installed": func() (cli.Command, error) { + return &command.PluginsInstalledCommand{ + Meta: *CommandMeta, + }, nil + }, + "plugin install": func() (cli.Command, error) { + return &command.PluginsInstallCommand{ + Meta: *CommandMeta, + }, nil + }, + "plugin remove": func() (cli.Command, error) { + return &command.PluginsRemoveCommand{ + Meta: *CommandMeta, + }, nil + }, + "plugin required": func() (cli.Command, error) { + return &command.PluginsRequiredCommand{ + Meta: *CommandMeta, + }, nil + }, } } diff --git a/main.go b/main.go index 0f45c253485..81a65a68aab 100644 --- a/main.go +++ b/main.go @@ -265,7 +265,7 @@ func wrappedMain() int { Args: args, Autocomplete: true, Commands: Commands, - HelpFunc: excludeHelpFunc(Commands, []string{"execute"}), + HelpFunc: excludeHelpFunc(Commands, []string{"execute", "plugin"}), HelpWriter: os.Stdout, Name: "packer", Version: version.Version, From 0159f0563b6d37787c9eaa6878e3ac1b0522911e Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 12 Mar 2024 06:25:42 -0400 Subject: [PATCH 325/381] Bump github.com/go-jose/go-jose/v3 to address CVE-2024-28180 --- go.mod | 8 ++++---- go.sum | 21 ++++++++++++--------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/go.mod b/go.mod index 03507c3517f..0dc0710f311 100644 --- a/go.mod +++ b/go.mod @@ -44,13 +44,13 @@ require ( github.com/ulikunitz/xz v0.5.10 github.com/zclconf/go-cty v1.13.3 github.com/zclconf/go-cty-yaml v1.0.1 - golang.org/x/crypto v0.17.0 // indirect + golang.org/x/crypto v0.19.0 // indirect golang.org/x/mod v0.13.0 golang.org/x/net v0.19.0 golang.org/x/oauth2 v0.15.0 golang.org/x/sync v0.4.0 - golang.org/x/sys v0.15.0 // indirect - golang.org/x/term v0.15.0 // indirect + golang.org/x/sys v0.17.0 // indirect + golang.org/x/term v0.17.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.14.0 google.golang.org/api v0.128.0 // indirect @@ -98,7 +98,7 @@ require ( github.com/fatih/color v1.14.1 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.5.0 // indirect - github.com/go-jose/go-jose/v3 v3.0.1 // indirect + github.com/go-jose/go-jose/v3 v3.0.3 // indirect github.com/go-logr/logr v1.3.0 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect diff --git a/go.sum b/go.sum index e3de428d6ec..f16e913698c 100644 --- a/go.sum +++ b/go.sum @@ -145,8 +145,8 @@ github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-jose/go-jose/v3 v3.0.1 h1:pWmKFVtt+Jl0vBZTIpz/eAKwsm6LkIxDVVbFHKkchhA= -github.com/go-jose/go-jose/v3 v3.0.1/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= +github.com/go-jose/go-jose/v3 v3.0.3 h1:fFKWeig/irsp7XD2zBxvnmA/XaRWp5V3CBsZXJF7G7k= +github.com/go-jose/go-jose/v3 v3.0.3/go.mod h1:5b+7YgP7ZICgJDBdfjZaIt+H/9L9T/YQrVfLAMboGkQ= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= @@ -579,7 +579,6 @@ golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190222235706-ffb98f73852f/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200422194213-44a606286825/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -591,8 +590,8 @@ golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= @@ -631,6 +630,7 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -687,15 +687,17 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= -golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -705,6 +707,7 @@ golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= From a27ef0d035754d53a1a355c4e0edae906db72094 Mon Sep 17 00:00:00 2001 From: pavedroad Date: Tue, 12 Mar 2024 13:59:32 +0800 Subject: [PATCH 326/381] chore: remove repetitive words Signed-off-by: pavedroad --- .../docs/templates/hcl_templates/functions/contextual/env.mdx | 2 +- website/content/guides/1.7-template-upgrade.mdx | 2 +- .../packer-plugin-sdk/communicator/SSH-not-required.mdx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/website/content/docs/templates/hcl_templates/functions/contextual/env.mdx b/website/content/docs/templates/hcl_templates/functions/contextual/env.mdx index a7e235122fe..3749e899dfd 100644 --- a/website/content/docs/templates/hcl_templates/functions/contextual/env.mdx +++ b/website/content/docs/templates/hcl_templates/functions/contextual/env.mdx @@ -28,7 +28,7 @@ input variables, input variables remain as the single source of input to a template that a user can easily discover using `packer inspect`. When the environment variable is not set at all -- not even with the empty -string -- the value returned by `env` will be an an empty string. It will still +string -- the value returned by `env` will be an empty string. It will still be possible to set it using other means but you could use [custom validation rules](/packer/docs/templates/hcl_templates/variables#custom-validation-rules) to error in that case to make sure it is set, for example: diff --git a/website/content/guides/1.7-template-upgrade.mdx b/website/content/guides/1.7-template-upgrade.mdx index e30bc1e06da..19d862c258e 100644 --- a/website/content/guides/1.7-template-upgrade.mdx +++ b/website/content/guides/1.7-template-upgrade.mdx @@ -65,7 +65,7 @@ we suggest you reach out to the plugin maintainers and ask for an upgrade; the P maintainer-focused guide [here](/packer/guides/1.7-plugin-upgrade). Check the table below to better understand whether your plugin is compatible with `packer init`, with manual -installation, or with both for the the Packer version you are using. +installation, or with both for the Packer version you are using. | Packer Core Version | Single Component Plugin - API v4 | Single Component Plugin - API v5.0 | Multi Component Plugin - API v5.0 | | ------------------- | ------------------------------------------------- | ------------------------------------------------- | --------------------------------------------------------- | diff --git a/website/content/partials/packer-plugin-sdk/communicator/SSH-not-required.mdx b/website/content/partials/packer-plugin-sdk/communicator/SSH-not-required.mdx index 99706b6aec8..7655eaa19b5 100644 --- a/website/content/partials/packer-plugin-sdk/communicator/SSH-not-required.mdx +++ b/website/content/partials/packer-plugin-sdk/communicator/SSH-not-required.mdx @@ -76,7 +76,7 @@ File Transfer Protocol. **NOTE**: Guests using Windows with Win32-OpenSSH v9.1.0.0p1-Beta, scp - (the default protocol for copying data) returns a a non-zero error code since the MOTW + (the default protocol for copying data) returns a non-zero error code since the MOTW cannot be set, which cause any file transfer to fail. As a workaround you can override the transfer protocol with SFTP instead `ssh_file_transfer_protocol = "sftp"`. From bd0423d7933a5109323a5865e840db0c65a74208 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 12 Mar 2024 11:27:25 -0400 Subject: [PATCH 327/381] Add ignore-prerelease-flag to command help text --- command/build.go | 1 + command/cli.go | 4 ++-- command/validate.go | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/command/build.go b/command/build.go index b48d248d50c..330e05e643b 100644 --- a/command/build.go +++ b/command/build.go @@ -437,6 +437,7 @@ Options: -var 'key=value' Variable for templates, can be used multiple times. -var-file=path JSON or HCL2 file containing user variables, can be used multiple times. -warn-on-undeclared-var Display warnings for user variable files containing undeclared variables. + -ignore-prerelease-plugins Disable the loading of prerelease plugin binaries (x.y.z-dev). ` return strings.TrimSpace(helpText) diff --git a/command/cli.go b/command/cli.go index 2fa3c02fdea..0cd82c2749a 100644 --- a/command/cli.go +++ b/command/cli.go @@ -91,7 +91,7 @@ func (ba *BuildArgs) AddFlagSets(flags *flag.FlagSet) { flags.BoolVar(&ba.MetaArgs.WarnOnUndeclaredVar, "warn-on-undeclared-var", false, "Show warnings for variable files containing undeclared variables.") - flags.BoolVar(&ba.ReleaseOnly, "ignore-prerelease-plugins", false, "Disable the loading of prerelease plugin binaries (x.y.z-.") + flags.BoolVar(&ba.ReleaseOnly, "ignore-prerelease-plugins", false, "Disable the loading of prerelease plugin binaries (x.y.z-dev).") ba.MetaArgs.AddFlagSets(flags) } @@ -146,7 +146,7 @@ func (va *ValidateArgs) AddFlagSets(flags *flag.FlagSet) { flags.BoolVar(&va.SyntaxOnly, "syntax-only", false, "check syntax only") flags.BoolVar(&va.NoWarnUndeclaredVar, "no-warn-undeclared-var", false, "Ignore warnings for variable files containing undeclared variables.") flags.BoolVar(&va.EvaluateDatasources, "evaluate-datasources", false, "evaluate datasources for validation (HCL2 only, may incur costs)") - flags.BoolVar(&va.ReleaseOnly, "ignore-prerelease-plugins", false, "Disable the loading of prerelease plugin binaries (x.y.z-.") + flags.BoolVar(&va.ReleaseOnly, "ignore-prerelease-plugins", false, "Disable the loading of prerelease plugin binaries (x.y.z-dev).") va.MetaArgs.AddFlagSets(flags) } diff --git a/command/validate.go b/command/validate.go index da41e30cf0a..47d88a901ba 100644 --- a/command/validate.go +++ b/command/validate.go @@ -123,6 +123,7 @@ Options: -var-file=path JSON or HCL2 file containing user variables, can be used multiple times. -no-warn-undeclared-var Disable warnings for user variable files containing undeclared variables. -evaluate-datasources Evaluate data sources during validation (HCL2 only, may incur costs); Defaults to false. + -ignore-prerelease-plugins Disable the loading of prerelease plugin binaries (x.y.z-dev). ` return strings.TrimSpace(helpText) From 0a5e51c265315a8807a5d76b4c08479914d037ae Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 12 Mar 2024 11:29:45 -0400 Subject: [PATCH 328/381] Update CHANGELOG --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 73991381f0a..01ce10f58eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,11 @@ └── packer-plugin-happycloud_v0.0.1_x5.0_darwin_arm64_SHA256SUM ``` +### FEATURES: +* core: Add `-ignore-prerelease-plugins` flag to disable the use of development + plugin binaries for the `build` and `validate` commands development plugin + binaries. [GH-12828](https://github.com/hashicorp/packer/pull/12828) + ### IMPROVEMENTS: * core: Move to predictable plugin loading schema - Packer will now only load plugins stored under PACKER_PLUGIN_PATH using the expected namespaced From c171362de84e0497687f1680972fc616bd748d12 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Wed, 13 Mar 2024 14:05:30 -0400 Subject: [PATCH 329/381] .github/workflows/jira.yml: Update JIRA component name --- .github/workflows/jira.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/jira.yml b/.github/workflows/jira.yml index a3fa8cd7ea8..8aa01f87bf4 100644 --- a/.github/workflows/jira.yml +++ b/.github/workflows/jira.yml @@ -68,7 +68,7 @@ jobs: summary: "${{ github.event.repository.name }}: ${{ github.event.issue.title }}" description: "${{ github.event.issue.body }}\n\n_Created from GitHub by ${{ github.actor }}._" # The field customfield_10089 refers to the Issue Link field in JIRA. - fields: '{ "customfield_10089": "${{ github.event.issue.html_url }}", "components": [{ "name": "OSS" }], "labels": ${{ steps.set-ticket-labels.outputs.labels }} }' + fields: '{ "customfield_10089": "${{ github.event.issue.html_url }}", "components": [{ "name": "core" }], "labels": ${{ steps.set-ticket-labels.outputs.labels }} }' - name: Add tracking comment if: steps.create-ticket.outputs.issue != '' && steps.set-ticket-type.outputs.type != 'Invalid' From 7baca4d615cf9753a173b4f1ad7a3d1e8c3be0b6 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 11 Mar 2024 15:12:16 -0400 Subject: [PATCH 330/381] Update CHANGELOG --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 01ce10f58eb..0d08ab7102e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,9 @@ [GH-12828](https://github.com/hashicorp/packer/pull/12828) * core: Remove support loading single-component plugins. [GH-12785](https://github.com/hashicorp/packer/pull/12785) +* core: Rename internal plugin command to execute to avoid user confusion with + the plugins subcommand. + [GH-12865](https://github.com/hashicorp/packer/pull/12865) * core: Packer now considers development binaries when evaluating plugin version constraints. This work allows users to use binaries with versions reported as "x.y.z-dev" to be used with the Packer `required_plugins` From e6c65207141ef995238d3ac6c242632263ddf270 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 11 Mar 2024 15:15:49 -0400 Subject: [PATCH 331/381] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d08ab7102e..5a708ac1f56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,7 +31,7 @@ [GH-12828](https://github.com/hashicorp/packer/pull/12828) * core: Remove support loading single-component plugins. [GH-12785](https://github.com/hashicorp/packer/pull/12785) -* core: Rename internal plugin command to execute to avoid user confusion with +* core: Rename internal `packer plugin` command to `packer execute` to avoid user confusion with the plugins subcommand. [GH-12865](https://github.com/hashicorp/packer/pull/12865) * core: Packer now considers development binaries when evaluating plugin From 930b6c3e2b528f19114678599193ddeb82d725d4 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 12 Mar 2024 16:16:54 -0400 Subject: [PATCH 332/381] command: support local paths for plugins remove The packer plugins remove command allows users to delete plugins installed locally. Previous versions of the command only allowed for the plugins to be removed using the source for a plugin, and the versions to remove, optionally. This commit adds the capability for the plugins to be removed using their local path, in addition to the regular source+version method, that way we are able to pipe the results of `packer plugins installed' into the plugins remove command for quick plugin removal. --- command/plugins_remove.go | 96 ++++++++++++++++++++++++++++++++++----- 1 file changed, 84 insertions(+), 12 deletions(-) diff --git a/command/plugins_remove.go b/command/plugins_remove.go index 7b29ffa7bd2..1fc17416a8e 100644 --- a/command/plugins_remove.go +++ b/command/plugins_remove.go @@ -7,12 +7,16 @@ import ( "context" "crypto/sha256" "fmt" + "log" "os" + "path/filepath" "runtime" "strings" "github.com/hashicorp/go-version" + "github.com/hashicorp/hcl/v2" "github.com/hashicorp/packer/hcl2template/addrs" + "github.com/hashicorp/packer/packer" plugingetter "github.com/hashicorp/packer/packer/plugin-getter" "github.com/mitchellh/cli" ) @@ -29,11 +33,19 @@ func (c *PluginsRemoveCommand) Help() string { helpText := ` Usage: packer plugins remove [] - This command will remove all Packer plugins matching the version constraint - for the current OS and architecture. - When the version is omitted all installed versions will be removed. + This command will remove one or more installed Packer plugins. - Ex: packer plugins remove github.com/hashicorp/happycloud v1.2.3 + To remove a plugin matching a version contraint for the current OS and architecture. + + packer plugins remove github.com/hashicorp/happycloud v1.2.3 + + To remove all versions of a plugin for the current OS and architecture omit the version constraint. + + packer plugins remove github.com/hashicorp/happycloud + + To remove a single plugin binary from the Packer plugin directory specify the absolute path to an installed binary. This syntax does not allow for version matching. + + packer plugins remove ~/.config/plugins/github.com/hashicorp/happycloud/packer-plugin-happycloud_v1.0.0_x5.0_linux_amd64 ` return strings.TrimSpace(helpText) @@ -46,11 +58,75 @@ func (c *PluginsRemoveCommand) Run(args []string) int { return c.RunContext(ctx, args) } +// deletePluginBinary removes a local plugin binary, and its related checksum file. +func deletePluginBinary(pluginPath string) error { + if err := os.Remove(pluginPath); err != nil { + return err + } + shasumFile := fmt.Sprintf("%s_SHA256SUM", pluginPath) + + if _, err := os.Stat(shasumFile); err != nil { + log.Printf("[INFO] No SHA256SUM file to remove for the plugin, ignoring.") + return nil + } + + return os.Remove(shasumFile) +} + func (c *PluginsRemoveCommand) RunContext(buildCtx context.Context, args []string) int { if len(args) < 1 || len(args) > 2 { return cli.RunResultHelp } + pluginDir, err := packer.PluginFolder() + if err != nil { + return writeDiags(c.Ui, nil, hcl.Diagnostics{ + &hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Failed to get the plugin directory", + Detail: fmt.Sprintf( + "The directory in which plugins are installed could not be fetched from the environment. This is likely a Packer bug. Error: %s", + err), + }, + }) + } + + if filepath.IsAbs(args[0]) { + if len(args) != 1 { + c.Ui.Error("Unsupported: no version constraint may be specified with a local plugin path.\n") + return cli.RunResultHelp + } + + if !strings.Contains(args[0], pluginDir) { + return writeDiags(c.Ui, nil, hcl.Diagnostics{ + &hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Invalid plugin location", + Detail: fmt.Sprintf( + "The path %q is not under the plugin directory inferred by Packer (%s) and will not be removed.", + args[0], + pluginDir), + }, + }) + } + + log.Printf("will delete plugin located at %q", args[0]) + err := deletePluginBinary(args[0]) + if err != nil { + return writeDiags(c.Ui, nil, hcl.Diagnostics{ + &hcl.Diagnostic{ + Severity: hcl.DiagError, + Summary: "Failed to delete plugin", + Detail: fmt.Sprintf("The plugin %q failed to be deleted with the following error: %q", args[0], err), + }, + }) + } + + c.Ui.Say(args[0]) + + return 0 + } + opts := plugingetter.ListInstallationsOptions{ PluginDirectory: c.Meta.CoreConfig.Components.PluginConfig.PluginDirectory, BinaryInstallationOptions: plugingetter.BinaryInstallationOptions{ @@ -92,14 +168,10 @@ func (c *PluginsRemoveCommand) RunContext(buildCtx context.Context, args []strin return 1 } for _, installation := range installations { - if err := os.Remove(installation.BinaryPath); err != nil { - c.Ui.Error(err.Error()) - return 1 - } - shasumFile := fmt.Sprintf("%s_SHA256SUM", installation.BinaryPath) - if err := os.Remove(shasumFile); err != nil { - c.Ui.Error(fmt.Sprintf("failed to remove %s: %s", shasumFile, err)) - c.Ui.Error("You may need to remove it manually") + err := deletePluginBinary(installation.BinaryPath) + if err != nil { + c.Ui.Error(fmt.Sprintf("Failed to remove plugin %q: %q", installation.BinaryPath, err)) + continue } c.Ui.Message(installation.BinaryPath) } From a8f8902cd39a5b6ac2d41b14cce643c33e562ea4 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Thu, 14 Mar 2024 15:45:54 -0400 Subject: [PATCH 333/381] test: remove directory The test directory contains artifacts from the project's past which are never used nowadays. All those remains are therefore removed with this commit, and we can replace that directory's contents with more up-to-date contents. --- test/README.md | 74 ------------ test/builder_googlecompute.bats | 36 ------ test/builder_hyperone.bats | 48 -------- test/builder_lxc.bats | 106 ------------------ test/cli.bats | 36 ------ test/communicator_ssh.bats | 30 ----- test/fixtures/amazon-ebs/ami_region_copy.json | 15 --- test/fixtures/amazon-ebs/minimal.json | 13 --- .../builder-googlecompute/minimal.json | 16 --- test/fixtures/builder-hyperone/chroot.json | 30 ----- test/fixtures/builder-hyperone/minimal.json | 18 --- .../builder-hyperone/new-syntax.pkr.hcl | 29 ----- test/fixtures/builder-linode/minimal.json | 28 ----- test/fixtures/builder-lxc/minimal.json | 31 ----- .../communicator-ssh/local-tunnel.json | 21 ---- .../communicator-ssh/remote-tunnel.json | 22 ---- test/fixtures/provisioner-file/dir/file.txt | 1 - .../provisioner-file/dir_no_trailing.json | 22 ---- .../dir_no_trailing_sftp.json | 23 ---- .../provisioner-file/dir_with_trailing.json | 22 ---- .../dir_with_trailing_sftp.json | 23 ---- test/fixtures/provisioner-file/file.json | 22 ---- test/fixtures/provisioner-file/file.txt | 1 - test/fixtures/provisioner-file/file_sftp.json | 23 ---- test/fixtures/provisioner-shell/inline.json | 21 ---- test/fixtures/provisioner-shell/script.json | 18 --- test/fixtures/provisioner-shell/script.sh | 3 - test/fixtures/provisioner-shell/scripts.json | 20 ---- test/provisioner_file.bats | 53 --------- test/provisioner_shell.bats | 36 ------ test/test_helper.bash | 52 --------- 31 files changed, 893 deletions(-) delete mode 100644 test/README.md delete mode 100755 test/builder_googlecompute.bats delete mode 100755 test/builder_hyperone.bats delete mode 100644 test/builder_lxc.bats delete mode 100755 test/cli.bats delete mode 100644 test/communicator_ssh.bats delete mode 100644 test/fixtures/amazon-ebs/ami_region_copy.json delete mode 100644 test/fixtures/amazon-ebs/minimal.json delete mode 100644 test/fixtures/builder-googlecompute/minimal.json delete mode 100644 test/fixtures/builder-hyperone/chroot.json delete mode 100644 test/fixtures/builder-hyperone/minimal.json delete mode 100644 test/fixtures/builder-hyperone/new-syntax.pkr.hcl delete mode 100644 test/fixtures/builder-linode/minimal.json delete mode 100644 test/fixtures/builder-lxc/minimal.json delete mode 100644 test/fixtures/communicator-ssh/local-tunnel.json delete mode 100644 test/fixtures/communicator-ssh/remote-tunnel.json delete mode 100644 test/fixtures/provisioner-file/dir/file.txt delete mode 100644 test/fixtures/provisioner-file/dir_no_trailing.json delete mode 100644 test/fixtures/provisioner-file/dir_no_trailing_sftp.json delete mode 100644 test/fixtures/provisioner-file/dir_with_trailing.json delete mode 100644 test/fixtures/provisioner-file/dir_with_trailing_sftp.json delete mode 100644 test/fixtures/provisioner-file/file.json delete mode 100644 test/fixtures/provisioner-file/file.txt delete mode 100644 test/fixtures/provisioner-file/file_sftp.json delete mode 100644 test/fixtures/provisioner-shell/inline.json delete mode 100644 test/fixtures/provisioner-shell/script.json delete mode 100755 test/fixtures/provisioner-shell/script.sh delete mode 100644 test/fixtures/provisioner-shell/scripts.json delete mode 100755 test/provisioner_file.bats delete mode 100755 test/provisioner_shell.bats delete mode 100644 test/test_helper.bash diff --git a/test/README.md b/test/README.md deleted file mode 100644 index 1c8949f1fd9..00000000000 --- a/test/README.md +++ /dev/null @@ -1,74 +0,0 @@ -# Packer Black-Box Tests - -This folder contains tests that test Packer using a black-box approach: -`packer` is executed directly (with whatever is on the PATH) and certain -results are expected. - -Tests are run using [Bats](https://github.com/sstephenson/bats), and therefore -Bash is required to run any tests. - -**Warning:** Many of these tests run using cloud infrastructure, and therefore have -a real-world cost associated with running the tests. Be aware of that prior -to running the tests. Additionally, many tests will leave left-over artifacts -(AMIs) that you'll have to manually clean up. - -## Running Tests - -### Required Software - -Before running the tests, you'll need the following installed. If you're -running on macOS, most of these are available with `brew`: - -* [Bats](https://github.com/sstephenson/bats) - -* [AWS cli](http://aws.amazon.com/cli/) for AWS tests as well as most - of the components. - -* [gcutil](https://developers.google.com/compute/docs/gcutil/#install) for - Google Compute Engine tests. - -* [h1-cli](https://github.com/hyperonecom/h1-client-go) for HyperOne tests. - -### Configuring Tests - -**For tests that require AWS credentials:** - -Set the following self-explanatory environmental variables: - -* `AWS_ACCESS_KEY_ID` -* `AWS_SECRET_ACCESS_KEY` - -**For tests that test Google Compute Engine:** - -Set the following environmental variables: - -* `GC_BUCKET_NAME` -* `GC_ACCOUNT_FILE` -* `GC_PROJECT_ID` - -**For tests that test HyperOne:** - -Set the following environmental variables: - -* `HYPERONE_TOKEN` -* `HYPERONE_PROJECT` - -You have to be authenticated within the `h1` tool (use `h1 login`). - -### Running - -These tests are meant to be run _one file at a time_. There are some -test files (such as the amazon-chroot builder test) that simply won't -run except in special environments, so running all test files will probably -never work. - -If you're working on Packer and want to test that your change didn't -adversely affect something, try running only the test that is related to -your change. - -``` -$ bats builder_amazon_ebs.bats -``` - -Note: Working directory doesn't matter. You can call the bats test file -from any directory. diff --git a/test/builder_googlecompute.bats b/test/builder_googlecompute.bats deleted file mode 100755 index 1051bb99a1e..00000000000 --- a/test/builder_googlecompute.bats +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env bats -# -# This tests the googlecompute builder. The teardown function will -# delete any images with the text "packerbats" within the name. - -load test_helper -fixtures builder-googlecompute - -# Required parameters -: ${GC_ACCOUNT_FILE:?} -: ${GC_PROJECT_ID:?} -command -v gcloud >/dev/null 2>&1 || { - echo "'gcloud' must be installed" >&2 - exit 1 -} - -USER_VARS="${USER_VARS} -var account_file=${GC_ACCOUNT_FILE}" -USER_VARS="${USER_VARS} -var project_id=${GC_PROJECT_ID}" - -# This tests if GCE has an image that contains the given parameter. -gc_has_image() { - gcloud compute --format='table[no-heading](name)' --project=${GC_PROJECT_ID} images list \ - | grep $1 | wc -l -} - -teardown() { - gcloud compute --format='table[no-heading](name)' --project=${GC_PROJECT_ID} images list \ - | grep packerbats \ - | xargs -n1 gcloud compute --project=${GC_PROJECT_ID} images delete -} - -@test "googlecompute: build minimal.json" { - run packer build ${USER_VARS} $FIXTURE_ROOT/minimal.json - [ "$status" -eq 0 ] - [ "$(gc_has_image "packerbats-minimal")" -eq 1 ] -} diff --git a/test/builder_hyperone.bats b/test/builder_hyperone.bats deleted file mode 100755 index 66ae5e3fe2a..00000000000 --- a/test/builder_hyperone.bats +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env bats -# -# This tests the hyperone builder. The teardown function will -# delete any images with the text "packerbats" within the name. - -load test_helper -fixtures builder-hyperone - -# Required parameters -: ${HYPERONE_TOKEN:?} -: ${HYPERONE_PROJECT:?} -command -v h1 >/dev/null 2>&1 || { - echo "'h1' must be installed" >&2 - exit 1 -} - -USER_VARS="${USER_VARS} -var token=${HYPERONE_TOKEN}" -USER_VARS="${USER_VARS} -var project=${HYPERONE_PROJECT}" - -hyperone_has_image() { - h1 image list --project-select=${HYPERONE_PROJECT} --query "[?tag.${2}=='${3}']" --output=tsv | grep $1 -c -} - -teardown() { - h1 image list --project-select=${HYPERONE_PROJECT} --output=tsv \ - | grep packerbats \ - | awk '{print $1}' \ - | xargs -n1 h1 image delete --project-select=${HYPERONE_PROJECT} --yes --image -} - -@test "hyperone: build minimal.json" { - run packer build ${USER_VARS} $FIXTURE_ROOT/minimal.json - [ "$status" -eq 0 ] - [ "$(hyperone_has_image "packerbats-minimal" "key" "value")" -eq 1 ] -} - -@test "hyperone: build new-syntax.pkr.hcl" { - run packer build ${USER_VARS} $FIXTURE_ROOT/new-syntax.pkr.hcl - [ "$status" -eq 0 ] - [ "$(hyperone_has_image "packerbats-hcl" "key" "value")" -eq 1 ] -} - - -@test "hyperone: build chroot.json" { - run packer build ${USER_VARS} $FIXTURE_ROOT/chroot.json - [ "$status" -eq 0 ] - [ "$(hyperone_has_image "packerbats-chroot" "key2" "value2")" -eq 1 ] -} diff --git a/test/builder_lxc.bats b/test/builder_lxc.bats deleted file mode 100644 index 7173d0f7d33..00000000000 --- a/test/builder_lxc.bats +++ /dev/null @@ -1,106 +0,0 @@ -#!/usr/bin/env bats -# -# This tests the lxc builder by creating minimal containers and checking that -# custom lxc container configuration files are successfully applied. The -# teardown function will delete any images in the output-lxc-* folders along -# with the auto-generated lxc container configuration files and hook scripts. - -#load test_helper -#fixtures builder-lxc -FIXTURE_ROOT="$BATS_TEST_DIRNAME/fixtures/builder-lxc" - -have_command() { - command -v "$1" >/dev/null 2>&1 -} - -# Required parameters -have_command lxc-create || { - echo "'lxc-create' must be installed via the lxc (or lxc1 for ubuntu >=16.04) package" >&2 - exit 1 -} - -DESTROY_HOOK_SCRIPT=$FIXTURE_ROOT/destroy-hook.sh -DESTROY_HOOK_LOG=$FIXTURE_ROOT/destroy-hook.log -printf > "$DESTROY_HOOK_SCRIPT" ' -echo "$LXC_NAME" > "%s" -' "$DESTROY_HOOK_LOG" -chmod +x "$DESTROY_HOOK_SCRIPT" - -INIT_CONFIG=$FIXTURE_ROOT/lxc.custom.conf -printf > "$INIT_CONFIG" ' -lxc.hook.destroy = %s -' "$DESTROY_HOOK_SCRIPT" - -teardown() { - for f in "$INIT_CONFIG" "$DESTROY_HOOK_SCRIPT" "$DESTROY_HOOK_LOG"; do - [ -e "$f" ] && rm -f "$f" - done - - rm -rf output-lxc-* -} - -assert_build() { - local template_name="$1" - shift - - local build_status=0 - - run packer build -var template_name="$template_name" "$@" - - [ "$status" -eq 0 ] || { - echo "${template_name} build exited badly: $status" >&2 - echo "$output" >&2 - build_status="$status" - } - - for expected in "output-lxc-${template_name}"/{rootfs.tar.gz,lxc-config}; do - [ -f "$expected" ] || { - echo "missing expected artifact '${expected}'" >&2 - build_status=1 - } - done - - return $build_status -} - -assert_container_name() { - local container_name="$1" - - [ -f "$DESTROY_HOOK_LOG" ] || { - echo "missing expected lxc.hook.destroy logfile '$DESTROY_HOOK_LOG'" - return 1 - } - - read -r lxc_name < "$DESTROY_HOOK_LOG" - - [ "$lxc_name" = "$container_name" ] -} - -@test "lxc: build centos minimal.json" { - have_command yum || skip "'yum' must be installed to build centos containers" - local container_name=packer-lxc-centos - assert_build centos -var init_config="$INIT_CONFIG" \ - -var container_name="$container_name" \ - $FIXTURE_ROOT/minimal.json - assert_container_name "$container_name" -} - -@test "lxc: build trusty minimal.json" { - have_command debootstrap || skip "'debootstrap' must be installed to build ubuntu containers" - local container_name=packer-lxc-ubuntu - assert_build ubuntu -var init_config="$INIT_CONFIG" \ - -var container_name="$container_name" \ - -var template_parameters="SUITE=trusty" \ - $FIXTURE_ROOT/minimal.json - assert_container_name "$container_name" -} - -@test "lxc: build debian minimal.json" { - have_command debootstrap || skip "'debootstrap' must be installed to build debian containers" - local container_name=packer-lxc-debian - assert_build debian -var init_config="$INIT_CONFIG" \ - -var container_name="$container_name" \ - -var template_parameters="SUITE=jessie" \ - $FIXTURE_ROOT/minimal.json - assert_container_name "$container_name" -} diff --git a/test/cli.bats b/test/cli.bats deleted file mode 100755 index 0284dd3e352..00000000000 --- a/test/cli.bats +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env bats -# -# This tests the basic CLI functionality of Packer. It makes no network -# requests and should be very fast. - -load test_helper - -@test "cli: packer should show help" { - run packer - [ "$status" -eq 1 ] - [[ "$output" == *"usage: packer"* ]] -} - -@test "cli: packer version" { - run packer version - [ "$status" -eq 0 ] - [[ "$output" == *"Packer v"* ]] - - run packer -v - [ "$status" -eq 1 ] - [[ "$output" =~ ([0-9]+\.[0-9]+) ]] - - run packer --version - [ "$status" -eq 1 ] - [[ "$output" =~ ([0-9]+\.[0-9]+) ]] -} - -@test "cli: packer version show help" { - run packer version -h - [ "$status" -eq 0 ] - [[ "$output" == *"Packer v"* ]] - - run packer version --help - [ "$status" -eq 0 ] - [[ "$output" == *"Packer v"* ]] -} diff --git a/test/communicator_ssh.bats b/test/communicator_ssh.bats deleted file mode 100644 index eb466c9c317..00000000000 --- a/test/communicator_ssh.bats +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env bats -# -# This tests the ssh communicator using AWS builder. The teardown function will automatically -# delete any AMIs with a tag of `packer-test` being equal to "true" so -# be sure any test cases set this. - -load test_helper -verify_aws_cli -fixtures communicator-ssh - -setup() { - cd $FIXTURE_ROOT -} - -teardown() { - aws_ami_cleanup -} - -@test "shell provisioner: local port tunneling" { - run packer build $FIXTURE_ROOT/local-tunnel.json - [ "$status" -eq 0 ] - [[ "$output" == *"Connection to localhost port 10022 [tcp/*] succeeded"* ]] -} - -@test "shell provisioner: remote port tunneling" { - run packer build $FIXTURE_ROOT/remote-tunnel.json - [ "$status" -eq 0 ] - MY_LOCAL_IP=$(curl -s https://ifconfig.co/) - [[ "$output" == *"$MY_LOCAL_IP"* ]] -} diff --git a/test/fixtures/amazon-ebs/ami_region_copy.json b/test/fixtures/amazon-ebs/ami_region_copy.json deleted file mode 100644 index 6f591b6bdfd..00000000000 --- a/test/fixtures/amazon-ebs/ami_region_copy.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "builders": [{ - "type": "amazon-ebs", - "ami_name": "packer-test {{timestamp}}", - "instance_type": "m1.small", - "region": "us-east-1", - "ssh_username": "ubuntu", - "source_ami": "ami-0568456c", - "tags": { - "packer-test": "true", - "packer-id": "ami_region_copy" - }, - "ami_regions": ["us-west-1", "us-west-2"] - }] -} diff --git a/test/fixtures/amazon-ebs/minimal.json b/test/fixtures/amazon-ebs/minimal.json deleted file mode 100644 index bfe7cab63e6..00000000000 --- a/test/fixtures/amazon-ebs/minimal.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "builders": [{ - "type": "amazon-ebs", - "ami_name": "packer-test {{timestamp}}", - "instance_type": "m1.small", - "region": "us-east-1", - "ssh_username": "ubuntu", - "source_ami": "ami-0568456c", - "tags": { - "packer-test": "true" - } - }] -} diff --git a/test/fixtures/builder-googlecompute/minimal.json b/test/fixtures/builder-googlecompute/minimal.json deleted file mode 100644 index 95dd99254dd..00000000000 --- a/test/fixtures/builder-googlecompute/minimal.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "variables": { - "account_file": null, - "project_id": null - }, - - "builders": [{ - "type": "googlecompute", - "account_file": "{{user `account_file`}}", - "project_id": "{{user `project_id`}}", - - "image_name": "packerbats-minimal-{{timestamp}}", - "source_image": "debian-7-wheezy-v20141108", - "zone": "us-central1-a" - }] -} diff --git a/test/fixtures/builder-hyperone/chroot.json b/test/fixtures/builder-hyperone/chroot.json deleted file mode 100644 index ccf7a8be5ad..00000000000 --- a/test/fixtures/builder-hyperone/chroot.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "variables": { - "token": null, - "project": null - }, - "builders": [{ - "token": "{{ user `token` }}", - "project": "{{ user `project` }}", - "type": "hyperone", - "source_image": "ubuntu", - "disk_size": 10, - "vm_type": "a1.nano", - "chroot_disk": true, - "chroot_command_wrapper": "sudo {{.Command}}", - "pre_mount_commands": [ - "parted {{.Device}} mklabel msdos mkpart primary 1M 100% set 1 boot on print", - "mkfs.ext4 {{.Device}}1" - ], - "post_mount_commands": [ - "apt-get update", - "apt-get install debootstrap", - "debootstrap --arch amd64 bionic {{.MountPath}}" - ], - "image_name": "packerbats-chroot-{{timestamp}}", - "image_tags": { - "key2":"value2" - } - }], - "provisioners": [] -} diff --git a/test/fixtures/builder-hyperone/minimal.json b/test/fixtures/builder-hyperone/minimal.json deleted file mode 100644 index eb5411de636..00000000000 --- a/test/fixtures/builder-hyperone/minimal.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "variables": { - "token": null, - "project": null - }, - "builders": [{ - "token": "{{ user `token` }}", - "project": "{{ user `project` }}", - "type": "hyperone", - "source_image": "ubuntu", - "disk_size": 10, - "vm_type": "a1.nano", - "image_name": "packerbats-minimal-{{timestamp}}", - "image_tags": { - "key":"value" - } - }] -} diff --git a/test/fixtures/builder-hyperone/new-syntax.pkr.hcl b/test/fixtures/builder-hyperone/new-syntax.pkr.hcl deleted file mode 100644 index 14e8d7e6f04..00000000000 --- a/test/fixtures/builder-hyperone/new-syntax.pkr.hcl +++ /dev/null @@ -1,29 +0,0 @@ -variable "token" { - type = string -} - -variable "project" { - type = string -} - -source "hyperone" "new-syntax" { - token = var.token - project = var.project - source_image = "debian" - disk_size = 10 - vm_type = "a1.nano" - image_name = "packerbats-hcl-{{timestamp}}" - image_tags = { - key="value" - } -} - -build { - sources = [ - "source.hyperone.new-syntax" - ] - - provisioner "shell" { - inline = ["sleep 5"] - } -} \ No newline at end of file diff --git a/test/fixtures/builder-linode/minimal.json b/test/fixtures/builder-linode/minimal.json deleted file mode 100644 index 400cfa63ada..00000000000 --- a/test/fixtures/builder-linode/minimal.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "variables": { - "linode_token": "{{env `LINODE_TOKEN`}}" - }, - "builders": [ - { - "type": "linode", - "linode_token": "{{user `linode_token`}}", - - "region": "us-central", - "swap_size": 256, - "image": "linode/debian9", - "instance_type": "g6-nanode-1", - "instance_label": "packerbats-minimal-{{timestamp}}", - - "image_label": "packerbats-minimal-image-{{timestamp}}", - "image_description": "packerbats", - - "ssh_username": "root" - } - ], - "provisioners": [ - { - "type": "shell", - "inline": ["echo Hello > /root/message.txt"] - } - ] - } diff --git a/test/fixtures/builder-lxc/minimal.json b/test/fixtures/builder-lxc/minimal.json deleted file mode 100644 index 997e48cfdb2..00000000000 --- a/test/fixtures/builder-lxc/minimal.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "variables": { - "template_name": "debian", - "template_parameters": "SUITE=jessie", - "container_name": "packer-lxc", - "set_var": "hello" - }, - "provisioners": [ - { - "type": "shell", - "inline": [ - "if [ \"$SET_VAR\" != \"{{user `set_var`}}\" ]; then", - " echo \"Got unexpected value '$SET_VAR' for SET_VAR\" 1>&2", - " exit 1", - "fi" - ] - } - ], - "builders": [ - { - "type": "lxc", - "name": "lxc-{{user `template_name`}}", - "template_name": "{{user `template_name`}}", - "container_name": "{{user `container_name`}}", - "create_options": [ "-f", "{{user `init_config`}}" ], - "attach_options": [ "--clear-env", "--set-var", "SET_VAR={{user `set_var`}}" ], - "config_file": "/usr/share/lxc/config/{{user `template_name`}}.common.conf", - "template_environment_vars": [ "{{user `template_parameters`}}" ] - } - ] -} diff --git a/test/fixtures/communicator-ssh/local-tunnel.json b/test/fixtures/communicator-ssh/local-tunnel.json deleted file mode 100644 index 2db4ebcacdb..00000000000 --- a/test/fixtures/communicator-ssh/local-tunnel.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "builders": [{ - "type": "amazon-ebs", - "ami_name": "packer-test {{timestamp}}", - "instance_type": "m1.small", - "region": "us-east-1", - "ssh_username": "ubuntu", - "ssh_local_tunnels": ["10022:localhost:22"], - "source_ami": "ami-0568456c", - "tags": { - "packer-test": "true" - } - }], - - "provisioners": [{ - "type": "shell-local", - "inline": [ - "echo | nc -G 5 -w 5 -v localhost 10022 2>&1" - ] - }] -} diff --git a/test/fixtures/communicator-ssh/remote-tunnel.json b/test/fixtures/communicator-ssh/remote-tunnel.json deleted file mode 100644 index 8f69be84ace..00000000000 --- a/test/fixtures/communicator-ssh/remote-tunnel.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "builders": [{ - "type": "amazon-ebs", - "ami_name": "packer-test {{timestamp}}", - "instance_type": "t2.micro", - "region": "us-east-1", - "ssh_username": "ubuntu", - "ssh_remote_tunnels": ["8443:ifconfig.co:443"], - "source_ami": "ami-0111e8c43a763eb71", - "tags": { - "packer-test": "true" - } - }], - "provisioners": [{ - "inline": [ - "curl -kvs --connect-to ifconfig.co:443:localhost:8443 https://ifconfig.co/" - ], - "type": "shell" - } - ] - } - \ No newline at end of file diff --git a/test/fixtures/provisioner-file/dir/file.txt b/test/fixtures/provisioner-file/dir/file.txt deleted file mode 100644 index 806dddba59a..00000000000 --- a/test/fixtures/provisioner-file/dir/file.txt +++ /dev/null @@ -1 +0,0 @@ -337 miles diff --git a/test/fixtures/provisioner-file/dir_no_trailing.json b/test/fixtures/provisioner-file/dir_no_trailing.json deleted file mode 100644 index e48a2f16061..00000000000 --- a/test/fixtures/provisioner-file/dir_no_trailing.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "builders": [{ - "type": "amazon-ebs", - "ami_name": "packer-test {{timestamp}}", - "instance_type": "m1.small", - "region": "us-east-1", - "ssh_username": "ubuntu", - "source_ami": "ami-0568456c", - "tags": { - "packer-test": "true" - } - }], - - "provisioners": [{ - "type": "file", - "source": "dir", - "destination": "/tmp" - }, { - "type": "shell", - "inline": ["cat /tmp/dir/file.txt"] - }] -} diff --git a/test/fixtures/provisioner-file/dir_no_trailing_sftp.json b/test/fixtures/provisioner-file/dir_no_trailing_sftp.json deleted file mode 100644 index 2837516982f..00000000000 --- a/test/fixtures/provisioner-file/dir_no_trailing_sftp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "builders": [{ - "type": "amazon-ebs", - "ami_name": "packer-test {{timestamp}}", - "instance_type": "t2.micro", - "region": "us-east-1", - "ssh_username": "ec2-user", - "ssh_file_transfer_method": "sftp", - "source_ami": "ami-8da458e6", - "tags": { - "packer-test": "true" - } - }], - - "provisioners": [{ - "type": "file", - "source": "dir", - "destination": "/tmp" - }, { - "type": "shell", - "inline": ["cat /tmp/dir/file.txt"] - }] -} diff --git a/test/fixtures/provisioner-file/dir_with_trailing.json b/test/fixtures/provisioner-file/dir_with_trailing.json deleted file mode 100644 index bf5f754150b..00000000000 --- a/test/fixtures/provisioner-file/dir_with_trailing.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "builders": [{ - "type": "amazon-ebs", - "ami_name": "packer-test {{timestamp}}", - "instance_type": "m1.small", - "region": "us-east-1", - "ssh_username": "ubuntu", - "source_ami": "ami-0568456c", - "tags": { - "packer-test": "true" - } - }], - - "provisioners": [{ - "type": "file", - "source": "dir/", - "destination": "/tmp" - }, { - "type": "shell", - "inline": ["cat /tmp/file.txt"] - }] -} diff --git a/test/fixtures/provisioner-file/dir_with_trailing_sftp.json b/test/fixtures/provisioner-file/dir_with_trailing_sftp.json deleted file mode 100644 index f263654345d..00000000000 --- a/test/fixtures/provisioner-file/dir_with_trailing_sftp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "builders": [{ - "type": "amazon-ebs", - "ami_name": "packer-test {{timestamp}}", - "instance_type": "t2.micro", - "region": "us-east-1", - "ssh_username": "ec2-user", - "ssh_file_transfer_method": "sftp", - "source_ami": "ami-8da458e6", - "tags": { - "packer-test": "true" - } - }], - - "provisioners": [{ - "type": "file", - "source": "dir/", - "destination": "/tmp" - }, { - "type": "shell", - "inline": ["cat /tmp/file.txt"] - }] -} diff --git a/test/fixtures/provisioner-file/file.json b/test/fixtures/provisioner-file/file.json deleted file mode 100644 index e8287abb901..00000000000 --- a/test/fixtures/provisioner-file/file.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "builders": [{ - "type": "amazon-ebs", - "ami_name": "packer-test {{timestamp}}", - "instance_type": "m1.small", - "region": "us-east-1", - "ssh_username": "ubuntu", - "source_ami": "ami-0568456c", - "tags": { - "packer-test": "true" - } - }], - - "provisioners": [{ - "type": "file", - "source": "file.txt", - "destination": "/tmp/file.txt" - }, { - "type": "shell", - "inline": ["cat /tmp/file.txt"] - }] -} diff --git a/test/fixtures/provisioner-file/file.txt b/test/fixtures/provisioner-file/file.txt deleted file mode 100644 index e8a85b0cd35..00000000000 --- a/test/fixtures/provisioner-file/file.txt +++ /dev/null @@ -1 +0,0 @@ -24901 miles diff --git a/test/fixtures/provisioner-file/file_sftp.json b/test/fixtures/provisioner-file/file_sftp.json deleted file mode 100644 index 19a8a98b894..00000000000 --- a/test/fixtures/provisioner-file/file_sftp.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "builders": [{ - "type": "amazon-ebs", - "ami_name": "packer-test {{timestamp}}", - "instance_type": "t2.micro", - "region": "us-east-1", - "ssh_username": "ec2-user", - "ssh_file_transfer_method": "sftp", - "source_ami": "ami-8da458e6", - "tags": { - "packer-test": "true" - } - }], - - "provisioners": [{ - "type": "file", - "source": "file.txt", - "destination": "/tmp/file.txt" - }, { - "type": "shell", - "inline": ["cat /tmp/file.txt"] - }] -} diff --git a/test/fixtures/provisioner-shell/inline.json b/test/fixtures/provisioner-shell/inline.json deleted file mode 100644 index 25afae1665d..00000000000 --- a/test/fixtures/provisioner-shell/inline.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "builders": [{ - "type": "amazon-ebs", - "ami_name": "packer-test {{timestamp}}", - "instance_type": "m1.small", - "region": "us-east-1", - "ssh_username": "ubuntu", - "source_ami": "ami-0568456c", - "tags": { - "packer-test": "true" - } - }], - - "provisioners": [{ - "type": "shell", - "inline": [ - "bash -c 'echo HELLO I AM `whoami`'", - "echo AND ANOTHER" - ] - }] -} diff --git a/test/fixtures/provisioner-shell/script.json b/test/fixtures/provisioner-shell/script.json deleted file mode 100644 index dc8ad509ec1..00000000000 --- a/test/fixtures/provisioner-shell/script.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "builders": [{ - "type": "amazon-ebs", - "ami_name": "packer-test {{timestamp}}", - "instance_type": "m1.small", - "region": "us-east-1", - "ssh_username": "ubuntu", - "source_ami": "ami-0568456c", - "tags": { - "packer-test": "true" - } - }], - - "provisioners": [{ - "type": "shell", - "script": "script.sh" - }] -} diff --git a/test/fixtures/provisioner-shell/script.sh b/test/fixtures/provisioner-shell/script.sh deleted file mode 100755 index e4e504ff9d8..00000000000 --- a/test/fixtures/provisioner-shell/script.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -echo HELLO I AM DOG diff --git a/test/fixtures/provisioner-shell/scripts.json b/test/fixtures/provisioner-shell/scripts.json deleted file mode 100644 index 290c6f5adcb..00000000000 --- a/test/fixtures/provisioner-shell/scripts.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "builders": [{ - "type": "amazon-ebs", - "ami_name": "packer-test {{timestamp}}", - "instance_type": "m1.small", - "region": "us-east-1", - "ssh_username": "ubuntu", - "source_ami": "ami-0568456c", - "tags": { - "packer-test": "true" - } - }], - - "provisioners": [{ - "type": "shell", - "scripts": [ - "script.sh" - ] - }] -} diff --git a/test/provisioner_file.bats b/test/provisioner_file.bats deleted file mode 100755 index 3c846989788..00000000000 --- a/test/provisioner_file.bats +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env bats -# -# This tests the amazon-ebs builder. The teardown function will automatically -# delete any AMIs with a tag of `packer-test` being equal to "true" so -# be sure any test cases set this. - -load test_helper -verify_aws_cli -fixtures provisioner-file - -setup() { - cd $FIXTURE_ROOT -} - -teardown() { - aws_ami_cleanup -} - -@test "file provisioner: single file" { - run packer build $FIXTURE_ROOT/file.json - [ "$status" -eq 0 ] - [[ "$output" == *"24901 miles"* ]] -} - -@test "file provisioner: directory (no trailing slash)" { - run packer build $FIXTURE_ROOT/dir_no_trailing.json - [ "$status" -eq 0 ] - [[ "$output" == *"337 miles"* ]] -} - -@test "file provisioner: directory (with trailing slash)" { - run packer build $FIXTURE_ROOT/dir_with_trailing.json - [ "$status" -eq 0 ] - [[ "$output" == *"337 miles"* ]] -} - -@test "file provisioner: single file through sftp" { - run packer build $FIXTURE_ROOT/file_sftp.json - [ "$status" -eq 0 ] - [[ "$output" == *"24901 miles"* ]] -} - -@test "file provisioner: directory through sftp (no trailing slash)" { - run packer build $FIXTURE_ROOT/dir_no_trailing_sftp.json - [ "$status" -eq 0 ] - [[ "$output" == *"337 miles"* ]] -} - -@test "file provisioner: directory through sftp (with trailing slash)" { - run packer build $FIXTURE_ROOT/dir_with_trailing_sftp.json - [ "$status" -eq 0 ] - [[ "$output" == *"337 miles"* ]] -} diff --git a/test/provisioner_shell.bats b/test/provisioner_shell.bats deleted file mode 100755 index 016c209b067..00000000000 --- a/test/provisioner_shell.bats +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env bats -# -# This tests the amazon-ebs builder. The teardown function will automatically -# delete any AMIs with a tag of `packer-test` being equal to "true" so -# be sure any test cases set this. - -load test_helper -verify_aws_cli -fixtures provisioner-shell - -setup() { - cd $FIXTURE_ROOT -} - -teardown() { - aws_ami_cleanup -} - -@test "shell provisioner: inline scripts" { - run packer build $FIXTURE_ROOT/inline.json - [ "$status" -eq 0 ] - [[ "$output" == *"HELLO I AM ubuntu"* ]] - [[ "$output" == *"AND ANOTHER"* ]] -} - -@test "shell provisioner: script" { - run packer build $FIXTURE_ROOT/script.json - [ "$status" -eq 0 ] - [[ "$output" == *"HELLO I AM DOG"* ]] -} - -@test "shell provisioner: scripts" { - run packer build $FIXTURE_ROOT/scripts.json - [ "$status" -eq 0 ] - [[ "$output" == *"HELLO I AM DOG"* ]] -} diff --git a/test/test_helper.bash b/test/test_helper.bash deleted file mode 100644 index a9dbc38eb1e..00000000000 --- a/test/test_helper.bash +++ /dev/null @@ -1,52 +0,0 @@ -# Let's verify that the tools we need are installed -verify_aws_cli() { - declare -a required=(aws) - for cmd in "${required[@]}"; do - command -v $cmd >/dev/null 2>&1 || { - echo "'$cmd' must be installed" >&2 - exit 1 - } - done -} - -#-------------------------------------------------------------------- -# Bats modification -#-------------------------------------------------------------------- -# This allows us to override a function in Bash -save_function() { - local ORIG_FUNC=$(declare -f $1) - local NEWNAME_FUNC="$2${ORIG_FUNC#$1}" - eval "$NEWNAME_FUNC" -} - -# Override the run function so that we always output the output -save_function run old_run -run() { - old_run $@ - - # Output the command we ran - echo "Executing: " $@ - - # "$output" gets rid of newlines. This will bring them back. - for line in "${lines[@]}"; do - echo $line - done -} - -#-------------------------------------------------------------------- -# Helper functions -#-------------------------------------------------------------------- -# This sets the directory for fixtures by specifying the name of -# the folder with fixtures. -fixtures() { - FIXTURE_ROOT="$BATS_TEST_DIRNAME/fixtures/$1" -} - -# This deletes any AMIs with a tag "packer-test" of "true" -aws_ami_cleanup() { - local region=${1:-us-east-1} - aws ec2 describe-images --region ${region} --owners self --output text \ - --filters 'Name=tag:packer-test,Values=true' \ - --query 'Images[*].ImageId' \ - | xargs -n1 aws ec2 deregister-image --region ${region} --image-id -} From 28adb06984f3e4720e3450c3f05adde3389ae59f Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Thu, 21 Mar 2024 12:44:19 -0400 Subject: [PATCH 334/381] CHANGELOG: call out lexicographic version ordering Since v1.11.0 should fix the version ordering to work with semver comparison instead of reliying on glob (lexicographic), we should call out the problem in the CHANGELOG. --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a708ac1f56..5da2a31231a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,14 @@ plugin binaries for the `build` and `validate` commands development plugin binaries. [GH-12828](https://github.com/hashicorp/packer/pull/12828) +### BUG FIXES: +* core: fix plugin version ordering to not be lexicographic. This fixes an issue + with how plugins are discovered by Packer, and ensures proper version ordering. + This means that with this change, versions that are semantically greater, + but lexicographically inferior will be loaded. + Ex: 1.0.9 vs. 1.0.10; `1.0.9 > 1.0.10` lexicographically, but semantically + `1.0.10 > 1.0.9` + ### IMPROVEMENTS: * core: Move to predictable plugin loading schema - Packer will now only load plugins stored under PACKER_PLUGIN_PATH using the expected namespaced From 0d668485789031f7e9ad02ac6f57f683b00872ed Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Thu, 14 Mar 2024 15:42:38 -0400 Subject: [PATCH 335/381] plugins: rely more on version lib for checks When discovering the installed plugins locally, we perform a couple of checks on the version, namely that it is valid, if it is a prerelease, it needs to be a dev, and that the self-reported version matches the one hinted at through the name of the binary. This was done through regexes, but those were a wee bit simple when dealing with versions that have metadata. Those binaries would be completely ignored by Packer, and never loaded, although they are a valid use case. The version library we already used supports those however, and comparisons are more reliable with them. So, in order to simplify our code, and make it more reliable, we're exclusively using this library to perform parsing and comparisons of versions during the discovery phase. --- packer/plugin-getter/plugins.go | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index c18e7d1a123..fdfeaae7cf4 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -100,8 +100,6 @@ func (opts BinaryInstallationOptions) FilenameSuffix() string { return "_" + opts.OS + "_" + opts.ARCH + opts.Ext } -var pluginVersionRegex = regexp.MustCompile(`^v([0-9]+\.[0-9]+\.[0-9]+)(-dev)?$`) - // ListInstallations lists unique installed versions of plugin Requirement pr // with opts as a filter. // @@ -170,30 +168,35 @@ func (pr Requirement) ListInstallations(opts ListInstallationsOptions) (InstallL continue } - matches := pluginVersionRegex.FindStringSubmatch(pluginVersionStr) - if matches == nil { - log.Printf("invalid version found: %q, ignoring", pluginVersionStr) + rawVersion, err := version.NewVersion(pluginVersionStr) + if err != nil { + log.Printf("malformed version string in filename %q: %s, ignoring", pluginVersionStr, err) continue } - absVersion := matches[1] - if len(matches) == 3 { - absVersion = fmt.Sprintf("%s%s", absVersion, matches[2]) + descVersion, err := version.NewVersion(describeInfo.Version) + if err != nil { + log.Printf("malformed reported version string %q: %s, ignoring", describeInfo.Version, err) + continue } - if absVersion != describeInfo.Version { - log.Printf("plugin %q reported version %s while its name implies version %s, ignoring", path, describeInfo.Version, absVersion) + if rawVersion.Compare(descVersion) != 0 { + log.Printf("plugin %q reported version %q while its name implies version %q, ignoring", path, describeInfo.Version, pluginVersionStr) continue } - rawVersion, _ := version.NewVersion(matches[1]) + preRel := descVersion.Prerelease() + if preRel != "" && preRel != "dev" { + log.Printf("invalid plugin pre-release version %q, only development or release binaries are accepted", pluginVersionStr) + } + // no constraint means always pass, this will happen for implicit // plugin requirements and when we list all plugins. // // Note: we use the raw version name here, without the pre-release // suffix, as otherwise constraints reject them, which is not // what we want by default. - if !pr.VersionConstraints.Check(rawVersion) { + if !pr.VersionConstraints.Check(rawVersion.Core()) { log.Printf("[TRACE] version %q of file %q does not match constraint %q", pluginVersionStr, path, pr.VersionConstraints.String()) continue } From 385ba4cface1870c3fa2113a87d07303366d9869 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Thu, 14 Mar 2024 15:48:13 -0400 Subject: [PATCH 336/381] plugins: ensure valid checksum before exec When Packer discovers binary a bunch of checks are performed, which ultimately end with a checksum match check. This however should be the very first thing we do, even before attempting to run `describe' on the plugin binary we're discovering. So this commit moves this checksum match to the top of the discovery process for binaries. --- packer/plugin-getter/plugins.go | 42 ++++++++++++++++----------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index fdfeaae7cf4..e38c4e97ea7 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -131,6 +131,27 @@ func (pr Requirement) ListInstallations(opts ListInstallationsOptions) (InstallL continue } + checksumOk := false + for _, checksummer := range opts.Checksummers { + + cs, err := checksummer.GetCacheChecksumOfFile(path) + if err != nil { + log.Printf("[TRACE] GetChecksumOfFile(%q) failed: %v", path, err) + continue + } + + if err := checksummer.ChecksumFile(cs, path); err != nil { + log.Printf("[TRACE] ChecksumFile(%q) failed: %v", path, err) + continue + } + checksumOk = true + break + } + if !checksumOk { + log.Printf("[TRACE] No checksum found for %q ignoring possibly unsafe binary", path) + continue + } + // base name could look like packer-plugin-amazon_v1.2.3_x5.1_darwin_amd64.exe versionsStr := strings.TrimPrefix(fname, FilenamePrefix) versionsStr = strings.TrimSuffix(versionsStr, filenameSuffix) @@ -207,27 +228,6 @@ func (pr Requirement) ListInstallations(opts ListInstallationsOptions) (InstallL continue } - checksumOk := false - for _, checksummer := range opts.Checksummers { - - cs, err := checksummer.GetCacheChecksumOfFile(path) - if err != nil { - log.Printf("[TRACE] GetChecksumOfFile(%q) failed: %v", path, err) - continue - } - - if err := checksummer.ChecksumFile(cs, path); err != nil { - log.Printf("[TRACE] ChecksumFile(%q) failed: %v", path, err) - continue - } - checksumOk = true - break - } - if !checksumOk { - log.Printf("[TRACE] No checksum found for %q ignoring possibly unsafe binary", path) - continue - } - res = append(res, &Installation{ BinaryPath: path, Version: pluginVersionStr, From 3f721ff03e9f6eddebe6de82cc2f2746f3b883a2 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 15 Mar 2024 10:29:28 -0400 Subject: [PATCH 337/381] cmd/plugin_install: use semver to render version When installing a plugin from a local binary, Packer builds the name of the plugin from the results of the `describe' command. Depending on how the plugin is built, the version reported may or may not contain a leading `v', which was not taken into account beforehand and the leading `v' was always injected in the path. This caused plugins that report a leading `v' in their version to be installed with two v's in their path, making them impossible to load. Therefore to fix this issue, we count on the version library to print out a version without the leading v, and we inject that in the resulting path. --- command/plugins_install.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/command/plugins_install.go b/command/plugins_install.go index 0540909c480..a2711e4ec46 100644 --- a/command/plugins_install.go +++ b/command/plugins_install.go @@ -303,7 +303,7 @@ func (c *PluginsInstallCommand) InstallFromBinary(opts plugingetter.ListInstalla outputPrefix := fmt.Sprintf( "packer-plugin-%s_v%s_%s", pluginIdentifier.Type, - desc.Version, + semver.String(), desc.APIVersion, ) binaryPath := filepath.Join( From d7f299886d2fab8ecf1f5befa9f9341acda27e21 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 19 Mar 2024 10:11:07 -0400 Subject: [PATCH 338/381] command: scrub metadata from version at install When installing plugins with the `packer plugins install --path' command, the metadata is now scrubbed from the file installed locally. This is as a protection against collisions in the versions, as metadata is meaningless for version comparison, so if two versions of the same plugin are installed, the precedence order between them is undefined. Therefore to avoid such collisions, we remove the metadata from the file name, that way if two successive versions of a plugin include metadata in the version, they won't coexist, and the last installed will be the only installed version locally. --- command/plugins_install.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/command/plugins_install.go b/command/plugins_install.go index a2711e4ec46..4360de41141 100644 --- a/command/plugins_install.go +++ b/command/plugins_install.go @@ -300,10 +300,16 @@ func (c *PluginsInstallCommand) InstallFromBinary(opts plugingetter.ListInstalla }}) } + // Remove metadata from plugin path + noMetaVersion := semver.Core().String() + if semver.Prerelease() != "" { + noMetaVersion = fmt.Sprintf("%s-%s", noMetaVersion, semver.Prerelease()) + } + outputPrefix := fmt.Sprintf( "packer-plugin-%s_v%s_%s", pluginIdentifier.Type, - semver.String(), + noMetaVersion, desc.APIVersion, ) binaryPath := filepath.Join( From 0502e09399bdce020f3d7f08f5ac970504d60185 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Thu, 21 Mar 2024 11:52:18 -0400 Subject: [PATCH 339/381] packer: check API version matches between name/bin As with the version of the plugin, the API version should also match between the path and the self-reported API version from the describe command. This was not checked before, so users could masquerade a plugin's use of an API version that may be incompatible with Packer. To avoid this problem, we make sure both versions are the same, so that they work as expected. --- packer/plugin-getter/plugins.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index e38c4e97ea7..80559ca2402 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -211,6 +211,12 @@ func (pr Requirement) ListInstallations(opts ListInstallationsOptions) (InstallL log.Printf("invalid plugin pre-release version %q, only development or release binaries are accepted", pluginVersionStr) } + // Check the API version matches between path and describe + if describeInfo.APIVersion != protocolVerionStr { + log.Printf("plugin %q reported API version %q while its name implies version %q, ignoring", path, describeInfo.APIVersion, protocolVerionStr) + continue + } + // no constraint means always pass, this will happen for implicit // plugin requirements and when we list all plugins. // From 66912bf2540c8e5634043b1dcb955bf4e5239215 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Thu, 21 Mar 2024 11:54:02 -0400 Subject: [PATCH 340/381] packer: use API version for ordering installations As with versions, API versions are useful possibly for ordering plugin installations in order for Packer to choose which plugin to load. This could be unnecessary as API versions are stable, and only in dev plugins this could be a problem normally (there shouldn't be two same releases of a plugin), but this cements API version in ordering plugins so we avoid surprises later down the line. --- packer/plugin-getter/plugins.go | 98 ++++++++++++++++---- packer/plugin-getter/plugins_test.go | 128 +++++++++++++++++++++++++-- 2 files changed, 199 insertions(+), 27 deletions(-) diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index 80559ca2402..8a97b8cb061 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -50,7 +50,10 @@ type Requirement struct { } type BinaryInstallationOptions struct { + // The API version with which to check remote compatibility // + // They're generally extracted from the SDK since it's what Packer Core + // supports as far as the protocol goes APIVersionMajor, APIVersionMinor string // OS and ARCH usually should be runtime.GOOS and runtime.ARCH, they allow // to pick the correct binary. @@ -237,6 +240,7 @@ func (pr Requirement) ListInstallations(opts ListInstallationsOptions) (InstallL res = append(res, &Installation{ BinaryPath: path, Version: pluginVersionStr, + APIVersion: describeInfo.APIVersion, }) } @@ -303,7 +307,20 @@ func (l InstallList) Less(i, j int) bool { return lowRawPluginName < hiRawPluginName } - return semver.Compare(lowPluginPath.Version, hiPluginPath.Version) < 0 + verCmp := semver.Compare(lowPluginPath.Version, hiPluginPath.Version) + if verCmp != 0 { + return verCmp < 0 + } + + // Ignore errors here, they are already validated when populating the InstallList + loAPIVer, _ := NewAPIVersion(lowPluginPath.APIVersion) + hiAPIVer, _ := NewAPIVersion(hiPluginPath.APIVersion) + + if loAPIVer.Major != hiAPIVer.Major { + return loAPIVer.Major < hiAPIVer.Major + } + + return loAPIVer.Minor < hiAPIVer.Minor } // Swap swaps the elements with indexes i and j. @@ -322,6 +339,11 @@ type Installation struct { // Version of this plugin. Ex: // * v1.2.3 for packer-plugin-amazon_v1.2.3_darwin_x5 Version string + + // API version for the plugin. Ex: + // * 5.0 for packer-plugin-amazon_v1.2.3_darwin_x5.0 + // * 5.1 for packer-plugin-amazon_v1.2.3_darwin_x5.1 + APIVersion string } // InstallOptions describes the possible options for installing the plugin that @@ -355,41 +377,70 @@ func (gp *GetOptions) ExpectedZipFilename() string { return gp.expectedZipFilename } -func (binOpts *BinaryInstallationOptions) CheckProtocolVersion(remoteProt string) error { - remoteProt = strings.TrimPrefix(remoteProt, "x") - parts := strings.Split(remoteProt, ".") +type APIVersion struct { + Major int + Minor int +} + +func NewAPIVersion(apiVersion string) (APIVersion, error) { + ver := APIVersion{} + + apiVersion = strings.TrimPrefix(strings.TrimSpace(apiVersion), "x") + parts := strings.Split(apiVersion, ".") if len(parts) < 2 { - return fmt.Errorf("Invalid remote protocol: %q, expected something like '%s.%s'", remoteProt, binOpts.APIVersionMajor, binOpts.APIVersionMinor) + return ver, fmt.Errorf( + "Invalid remote protocol: %q, expected something like '%s.%s'", + apiVersion, pluginsdk.APIVersionMajor, pluginsdk.APIVersionMinor, + ) + } + + vMajor, err := strconv.Atoi(parts[0]) + if err != nil { + return ver, err } - vMajor, vMinor := parts[0], parts[1] + ver.Major = vMajor + vMinor, err := strconv.Atoi(parts[1]) + if err != nil { + return ver, err + } + ver.Minor = vMinor + + return ver, nil +} + +var localAPIVersion APIVersion + +func (binOpts *BinaryInstallationOptions) CheckProtocolVersion(remoteProt string) error { // no protocol version check if binOpts.APIVersionMajor == "" && binOpts.APIVersionMinor == "" { return nil } - if vMajor != binOpts.APIVersionMajor { - return fmt.Errorf("Unsupported remote protocol MAJOR version %q. The current MAJOR protocol version is %q."+ - " This version of Packer can only communicate with plugins using that version.", vMajor, binOpts.APIVersionMajor) - } + localVersion := localAPIVersion + if binOpts.APIVersionMajor != pluginsdk.APIVersionMajor || + binOpts.APIVersionMinor != pluginsdk.APIVersionMinor { + var err error - if vMinor == binOpts.APIVersionMinor { - return nil + localVersion, err = NewAPIVersion(fmt.Sprintf("x%s.%s", binOpts.APIVersionMajor, binOpts.APIVersionMinor)) + if err != nil { + return fmt.Errorf("Failed to parse API Version from constraints: %s", err) + } } - vMinori, err := strconv.Atoi(vMinor) + remoteVersion, err := NewAPIVersion(remoteProt) if err != nil { return err } - APIVersoinMinori, err := strconv.Atoi(binOpts.APIVersionMinor) - if err != nil { - return err + if localVersion.Major != remoteVersion.Major { + return fmt.Errorf("Unsupported remote protocol MAJOR version %d. The current MAJOR protocol version is %d."+ + " This version of Packer can only communicate with plugins using that version.", remoteVersion.Major, localVersion.Major) } - if vMinori > APIVersoinMinori { - return fmt.Errorf("Unsupported remote protocol MINOR version %q. The supported MINOR protocol versions are version %q and below. "+ - "Please upgrade Packer or use an older version of the plugin if possible.", vMinor, binOpts.APIVersionMinor) + if remoteVersion.Minor > localVersion.Minor { + return fmt.Errorf("Unsupported remote protocol MINOR version %d. The supported MINOR protocol versions are version %d and below. "+ + "Please upgrade Packer or use an older version of the plugin if possible.", remoteVersion.Minor, localVersion.Minor) } return nil @@ -830,3 +881,12 @@ func (pr *Requirement) InstallLatest(opts InstallOptions) (*Installation, error) return nil, errs } + +func init() { + var err error + // Should never error if both components are set + localAPIVersion, err = NewAPIVersion(fmt.Sprintf("x%s.%s", pluginsdk.APIVersionMajor, pluginsdk.APIVersionMinor)) + if err != nil { + panic(fmt.Sprintf("malformed API version in Packer. This is a programming error, please open an error to report it.")) + } +} diff --git a/packer/plugin-getter/plugins_test.go b/packer/plugin-getter/plugins_test.go index 9fb24830414..e92e636b1d2 100644 --- a/packer/plugin-getter/plugins_test.go +++ b/packer/plugin-getter/plugins_test.go @@ -520,10 +520,12 @@ func Test_LessInstallList(t *testing.T) { &Installation{ BinaryPath: "host/org/plugin", Version: "v1.2.1", + APIVersion: "x5.0", }, &Installation{ - BinaryPath: "github.com", + BinaryPath: "host/org/plugin", Version: "v1.2.2", + APIVersion: "x5.0", }, }, true, @@ -535,10 +537,12 @@ func Test_LessInstallList(t *testing.T) { &Installation{ BinaryPath: "host/org/plugin", Version: "v1.2.1", + APIVersion: "x5.0", }, &Installation{ - BinaryPath: "github.com", + BinaryPath: "host/org/plugin", Version: "v1.2.1", + APIVersion: "x5.0", }, }, false, @@ -549,10 +553,12 @@ func Test_LessInstallList(t *testing.T) { &Installation{ BinaryPath: "host/org/plugin", Version: "v1.2.2", + APIVersion: "x5.0", }, &Installation{ - BinaryPath: "github.com", + BinaryPath: "host/org/plugin", Version: "v1.2.1", + APIVersion: "x5.0", }, }, false, @@ -563,10 +569,12 @@ func Test_LessInstallList(t *testing.T) { &Installation{ BinaryPath: "host/org/plugin", Version: "v1.2.2-dev", + APIVersion: "x5.0", }, &Installation{ - BinaryPath: "github.com", + BinaryPath: "host/org/plugin", Version: "v1.2.2", + APIVersion: "x5.0", }, }, true, @@ -577,10 +585,12 @@ func Test_LessInstallList(t *testing.T) { &Installation{ BinaryPath: "host/org/plugin", Version: "v1.2.2", + APIVersion: "x5.0", }, &Installation{ - BinaryPath: "github.com", + BinaryPath: "host/org/plugin", Version: "v1.2.2-dev", + APIVersion: "x5.0", }, }, false, @@ -591,10 +601,12 @@ func Test_LessInstallList(t *testing.T) { &Installation{ BinaryPath: "host/org/plugin", Version: "v1.2.1", + APIVersion: "x5.0", }, &Installation{ - BinaryPath: "github.com", + BinaryPath: "host/org/plugin", Version: "v1.2.2-dev", + APIVersion: "x5.0", }, }, true, @@ -605,10 +617,108 @@ func Test_LessInstallList(t *testing.T) { &Installation{ BinaryPath: "host/org/plugin", Version: "v1.2.3", + APIVersion: "x5.0", }, &Installation{ - BinaryPath: "github.com", + BinaryPath: "host/org/plugin", Version: "v1.2.2-dev", + APIVersion: "x5.0", + }, + }, + false, + }, + { + "v1.2.3_x5.0 < v1.2.3_x5.1 => true", + InstallList{ + &Installation{ + BinaryPath: "host/org/plugin", + Version: "v1.2.3", + APIVersion: "x5.0", + }, + &Installation{ + BinaryPath: "host/org/plugin", + Version: "v1.2.3", + APIVersion: "x5.1", + }, + }, + true, + }, + { + "v1.2.3_x5.0 < v1.2.3_x5.0 => false", + InstallList{ + &Installation{ + BinaryPath: "host/org/plugin", + Version: "v1.2.3", + APIVersion: "x5.0", + }, + &Installation{ + BinaryPath: "host/org/plugin", + Version: "v1.2.3", + APIVersion: "x5.0", + }, + }, + false, + }, + { + "v1.2.3_x4.15 < v1.2.3_x5.0 => true", + InstallList{ + &Installation{ + BinaryPath: "host/org/plugin", + Version: "v1.2.3", + APIVersion: "x4.15", + }, + &Installation{ + BinaryPath: "host/org/plugin", + Version: "v1.2.3", + APIVersion: "x5.0", + }, + }, + true, + }, + { + "v1.2.3_x9.0 < v1.2.3_x10.0 => true", + InstallList{ + &Installation{ + BinaryPath: "host/org/plugin", + Version: "v1.2.3", + APIVersion: "x9.0", + }, + &Installation{ + BinaryPath: "host/org/plugin", + Version: "v1.2.3", + APIVersion: "x10.0", + }, + }, + true, + }, + { + "v1.2.3_x5.9 < v1.2.3_x5.10 => true", + InstallList{ + &Installation{ + BinaryPath: "host/org/plugin", + Version: "v1.2.3", + APIVersion: "x5.9", + }, + &Installation{ + BinaryPath: "host/org/plugin", + Version: "v1.2.3", + APIVersion: "x5.10", + }, + }, + true, + }, + { + "v1.2.3_x5.0 < v1.2.3_x4.15 => false", + InstallList{ + &Installation{ + BinaryPath: "host/org/plugin", + Version: "v1.2.3", + APIVersion: "x5.0", + }, + &Installation{ + BinaryPath: "host/org/plugin", + Version: "v1.2.3", + APIVersion: "x4.15", }, }, false, @@ -619,9 +729,11 @@ func Test_LessInstallList(t *testing.T) { t.Run(tt.name, func(t *testing.T) { isLess := tt.installs.Less(0, 1) if isLess != tt.expectLess { - t.Errorf("Less mismatch for %s < %s, expected %t, got %t", + t.Errorf("Less mismatch for %s_%s < %s_%s, expected %t, got %t", tt.installs[0].Version, + tt.installs[0].APIVersion, tt.installs[1].Version, + tt.installs[1].APIVersion, tt.expectLess, isLess) } }) From 208afbebfafd32c8b7c170666d8c862fcf155394 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 22 Mar 2024 11:23:38 -0400 Subject: [PATCH 341/381] packer: change mock set instantiation methods The former way mock plugin sets were created meant that no API version was set, and since it's private in the SDK, it cannot be set outside of the package itself. Fortunately, there is a NewSet function we can call, which initialises a set properly so we can fill-in the information later. However, because all the set maps were created in a `var` section, we cannot create the set with `NewSet`, and then fill the information in (outside of if there was a fluent interface, but this isn't the case here). We therefore opted to keep the variables defined and accessible globally, but gone through a `init` function to initialise their values for tests. --- packer/plugin_discover_test.go | 157 ++++++++++++++++----------------- 1 file changed, 78 insertions(+), 79 deletions(-) diff --git a/packer/plugin_discover_test.go b/packer/plugin_discover_test.go index 3eca150d87c..de50136cdc8 100644 --- a/packer/plugin_discover_test.go +++ b/packer/plugin_discover_test.go @@ -490,91 +490,90 @@ func getFormattedInstalledPluginSuffix() string { } var ( - mockPlugins = map[string]pluginsdk.Set{ - "bird": { - Builders: map[string]packersdk.Builder{ - "feather": nil, - "guacamole": nil, - }, - }, - "chimney": { - PostProcessors: map[string]packersdk.PostProcessor{ - "smoke": nil, - }, - }, - "data": { - Datasources: map[string]packersdk.Datasource{ - "source": nil, - }, - }, + mockPlugins = map[string]pluginsdk.Set{} + mockInstalledPlugins = map[string]pluginsdk.Set{} + invalidInstalledPluginsMock = map[string]pluginsdk.Set{} + defaultNameMock = map[string]pluginsdk.Set{} + doubleDefaultMock = map[string]pluginsdk.Set{} + badDefaultNameMock = map[string]pluginsdk.Set{} +) + +func init() { + mockPluginsBird := pluginsdk.NewSet() + mockPluginsBird.Builders = map[string]packersdk.Builder{ + "feather": nil, + "guacamole": nil, } - mockInstalledPlugins = map[string]pluginsdk.Set{ - fmt.Sprintf("bird_%s", getFormattedInstalledPluginSuffix()): { - Builders: map[string]packersdk.Builder{ - "feather": nil, - "guacamole": nil, - }, - }, - fmt.Sprintf("chimney_%s", getFormattedInstalledPluginSuffix()): { - PostProcessors: map[string]packersdk.PostProcessor{ - "smoke": nil, - }, - }, - fmt.Sprintf("data_%s", getFormattedInstalledPluginSuffix()): { - Datasources: map[string]packersdk.Datasource{ - "source": nil, - }, - }, + mockPluginsChim := pluginsdk.NewSet() + mockPluginsChim.PostProcessors = map[string]packersdk.PostProcessor{ + "smoke": nil, + } + mockPluginsData := pluginsdk.NewSet() + mockPluginsData.Datasources = map[string]packersdk.Datasource{ + "source": nil, } + mockPlugins["bird"] = *mockPluginsBird + mockPlugins["chimney"] = *mockPluginsChim + mockPlugins["data"] = *mockPluginsData - invalidInstalledPluginsMock = map[string]pluginsdk.Set{ - "bird_v0.1.1_x5.0_wrong_architecture": { - Builders: map[string]packersdk.Builder{ - "feather": nil, - "guacamole": nil, - }, - }, - "chimney_cool_ranch": { - PostProcessors: map[string]packersdk.PostProcessor{ - "smoke": nil, - }, - }, - "data": { - Datasources: map[string]packersdk.Datasource{ - "source": nil, - }, - }, + mockInstalledPluginsBird := pluginsdk.NewSet() + mockInstalledPluginsBird.Builders = map[string]packersdk.Builder{ + "feather": nil, + "guacamole": nil, } - defaultNameMock = map[string]pluginsdk.Set{ - "foo": { - Builders: map[string]packersdk.Builder{ - "bar": nil, - "baz": nil, - pluginsdk.DEFAULT_NAME: nil, - }, - }, + mockInstalledPluginsChim := pluginsdk.NewSet() + mockInstalledPluginsChim.PostProcessors = map[string]packersdk.PostProcessor{ + "smoke": nil, + } + mockInstalledPluginsData := pluginsdk.NewSet() + mockInstalledPluginsData.Datasources = map[string]packersdk.Datasource{ + "source": nil, } + mockInstalledPlugins[fmt.Sprintf("bird_%s", getFormattedInstalledPluginSuffix())] = *mockInstalledPluginsBird + mockInstalledPlugins[fmt.Sprintf("chimney_%s", getFormattedInstalledPluginSuffix())] = *mockInstalledPluginsChim + mockInstalledPlugins[fmt.Sprintf("data_%s", getFormattedInstalledPluginSuffix())] = *mockInstalledPluginsData - doubleDefaultMock = map[string]pluginsdk.Set{ - "yolo": { - Builders: map[string]packersdk.Builder{ - "bar": nil, - "baz": nil, - pluginsdk.DEFAULT_NAME: nil, - }, - PostProcessors: map[string]packersdk.PostProcessor{ - pluginsdk.DEFAULT_NAME: nil, - }, - }, + invalidInstalledPluginsMockBird := pluginsdk.NewSet() + invalidInstalledPluginsMockBird.Builders = map[string]packersdk.Builder{ + "feather": nil, + "guacamole": nil, + } + invalidInstalledPluginsMockChimney := pluginsdk.NewSet() + invalidInstalledPluginsMockChimney.PostProcessors = map[string]packersdk.PostProcessor{ + "smoke": nil, + } + invalidInstalledPluginsMockData := pluginsdk.NewSet() + invalidInstalledPluginsMockData.Datasources = map[string]packersdk.Datasource{ + "source": nil, } + invalidInstalledPluginsMock["bird_v0.1.1_x5.0_wrong_architecture"] = *invalidInstalledPluginsMockBird + invalidInstalledPluginsMock["chimney_cool_ranch"] = *invalidInstalledPluginsMockChimney + invalidInstalledPluginsMock["data"] = *invalidInstalledPluginsMockData - badDefaultNameMock = map[string]pluginsdk.Set{ - "foo": { - Builders: map[string]packersdk.Builder{ - "bar": nil, - "baz": nil, - pluginsdk.DEFAULT_NAME: nil, - }, - }, + defaultNameFooSet := pluginsdk.NewSet() + defaultNameFooSet.Builders = map[string]packersdk.Builder{ + "bar": nil, + "baz": nil, + pluginsdk.DEFAULT_NAME: nil, } -) + defaultNameMock["foo"] = *defaultNameFooSet + + doubleDefaultYoloSet := pluginsdk.NewSet() + doubleDefaultYoloSet.Builders = map[string]packersdk.Builder{ + "bar": nil, + "baz": nil, + pluginsdk.DEFAULT_NAME: nil, + } + doubleDefaultYoloSet.PostProcessors = map[string]packersdk.PostProcessor{ + pluginsdk.DEFAULT_NAME: nil, + } + doubleDefaultMock["yolo"] = *doubleDefaultYoloSet + + badDefaultSet := pluginsdk.NewSet() + badDefaultSet.Builders = map[string]packersdk.Builder{ + "bar": nil, + "baz": nil, + pluginsdk.DEFAULT_NAME: nil, + } + badDefaultNameMock["foo"] = *badDefaultSet +} From 0e6ee70f6f39a46f0c204f09878e712eaa3fd707 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Fri, 22 Mar 2024 12:13:12 -0400 Subject: [PATCH 342/381] plugins: reject non-canonical version numbers If a plugin is installed manually, its version number could be valid but non-canonical (ex: 1.2.3 vs 01.002.0003). Since these two versions refer to the same version, but the looks are different, this may become ambiguous which version should be loaded. To avoid such a situation, we reject explicitely non-canonical version numbers in plugins, but only in path, we're aware that because of metadata, the version from `describe' may already differ from the file name. --- packer/plugin-getter/plugins.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index 8a97b8cb061..17c0cdcc0d1 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -187,6 +187,11 @@ func (pr Requirement) ListInstallations(opts ListInstallationsOptions) (InstallL continue } + if fmt.Sprintf("v%s", ver.String()) != pluginVersionStr { + log.Printf("version %q in path is non canonical, this could introduce ambiguity and is not supported, ignoring it.", pluginVersionStr) + continue + } + if ver.Prerelease() != "" && opts.ReleasesOnly { log.Printf("ignoring pre-release plugin %q", path) continue From 132e3d29b8759ef4a86a5409946a3c343543fdbb Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Mon, 25 Mar 2024 17:25:36 -0400 Subject: [PATCH 343/381] packer: fix version string variable name typo When introduced back in January, the version variable extracted from the binary name had a typo in its name, and was named `protocolVerionStr' instead of `protocolVersionStr'. This commit was already merged into main, so it's too late to fix at introduction site, but we can fix it today as a separate commit ontop the stack. --- packer/plugin-getter/plugins.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index 17c0cdcc0d1..402ab92f1c4 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -179,7 +179,7 @@ func (pr Requirement) ListInstallations(opts ListInstallationsOptions) (InstallL // versionsStr now looks like v1.2.3_x5.1 or amazon_v1.2.3_x5.1 parts := strings.SplitN(versionsStr, "_", 2) - pluginVersionStr, protocolVerionStr := parts[0], parts[1] + pluginVersionStr, protocolVersionStr := parts[0], parts[1] ver, err := version.NewVersion(pluginVersionStr) if err != nil { // could not be parsed, ignoring the file @@ -220,8 +220,8 @@ func (pr Requirement) ListInstallations(opts ListInstallationsOptions) (InstallL } // Check the API version matches between path and describe - if describeInfo.APIVersion != protocolVerionStr { - log.Printf("plugin %q reported API version %q while its name implies version %q, ignoring", path, describeInfo.APIVersion, protocolVerionStr) + if describeInfo.APIVersion != protocolVersionStr { + log.Printf("plugin %q reported API version %q while its name implies version %q, ignoring", path, describeInfo.APIVersion, protocolVersionStr) continue } @@ -236,9 +236,9 @@ func (pr Requirement) ListInstallations(opts ListInstallationsOptions) (InstallL continue } - if err := opts.CheckProtocolVersion(protocolVerionStr); err != nil { + if err := opts.CheckProtocolVersion(protocolVersionStr); err != nil { log.Printf("[NOTICE] binary %s requires protocol version %s that is incompatible "+ - "with this version of Packer. %s", path, protocolVerionStr, err) + "with this version of Packer. %s", path, protocolVersionStr, err) continue } From 407693404b0c278e3c3fde0ce6258babb9d2040e Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 26 Mar 2024 14:17:32 -0400 Subject: [PATCH 344/381] CHANGELOG: add 1.11.0-alpha2 changes --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5da2a31231a..34c2b6c5d42 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -46,6 +46,15 @@ version constraints. This work allows users to use binaries with versions reported as "x.y.z-dev" to be used with the Packer `required_plugins` block. [GH-12828](https://github.com/hashicorp/packer/pull/12828) +* core: Packer now supports local paths to plugins for the `packer plugins remove` + command. This addition makes it possible to pipe commands like + `packer plugins installed` with it for speedy cleanup of installed plugins. + [GH-12886](https://github.com/hashicorp/packer/pull/12886) +* core: Version metadata support for plugins. Plugins may now formally have metadata + in their versions, Packer supports it, and applies the semver recommendations on + them, i.e. they are ignored for comparison/sorting purposes, but allowed for + adding extra information about a plugin. + [GH-12888](https://github.com/hashicorp/packer/pull/12888) Given the specified version constraint only versions greater than or equal to 1.1.0 will be considered. From 1c7930bec11238af88f5c7256baae0abd11be430 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Mar 2024 19:12:06 +0000 Subject: [PATCH 345/381] build(deps): bump github.com/hashicorp/hcp-sdk-go from 0.85.0 to 0.90.0 Bumps [github.com/hashicorp/hcp-sdk-go](https://github.com/hashicorp/hcp-sdk-go) from 0.85.0 to 0.90.0. - [Release notes](https://github.com/hashicorp/hcp-sdk-go/releases) - [Changelog](https://github.com/hashicorp/hcp-sdk-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/hcp-sdk-go/compare/v0.85.0...v0.90.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/hcp-sdk-go dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 0dc0710f311..596b48a9e6f 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/hashicorp/go-uuid v1.0.3 github.com/hashicorp/go-version v1.6.0 github.com/hashicorp/hcl/v2 v2.19.1 - github.com/hashicorp/hcp-sdk-go v0.85.0 + github.com/hashicorp/hcp-sdk-go v0.90.0 github.com/hashicorp/packer-plugin-amazon v1.2.1 github.com/hashicorp/packer-plugin-sdk v0.5.2 github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 diff --git a/go.sum b/go.sum index f16e913698c..006aa84bf8c 100644 --- a/go.sum +++ b/go.sum @@ -313,8 +313,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= -github.com/hashicorp/hcp-sdk-go v0.85.0 h1:RDXpIf4gIGfz6je8Qq0FGg+8kwj7KboQTOxnklWyVJk= -github.com/hashicorp/hcp-sdk-go v0.85.0/go.mod h1:vQ4fzdL1AmhIAbCw+4zmFe5Hbpajj3NvRWkJoVuxmAk= +github.com/hashicorp/hcp-sdk-go v0.90.0 h1:dYN7PB9bBYKamjMHPBQnK6d8zphyexHGXw4ddynK2ck= +github.com/hashicorp/hcp-sdk-go v0.90.0/go.mod h1:vQ4fzdL1AmhIAbCw+4zmFe5Hbpajj3NvRWkJoVuxmAk= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR/prTM= From 595b45e67c83ac02f7c3810da6c80c28a95a4feb Mon Sep 17 00:00:00 2001 From: Devashish Date: Tue, 5 Mar 2024 14:43:51 -0500 Subject: [PATCH 346/381] Packer tracks Version and Plugins Metadata (#12860) --- .../types.build.hcp_packer_registry_test.go | 3 ++ hcl2template/types.build_test.go | 34 ++++++++++------ hcl2template/types.datasource_test.go | 2 + hcl2template/types.packer_config.go | 1 + hcl2template/types.packer_config_test.go | 10 +++-- hcl2template/types.source_test.go | 1 + hcl2template/types.variables_test.go | 13 ++++-- internal/hcp/registry/hcl.go | 12 ++++++ internal/hcp/registry/json.go | 15 ++++++- packer/build.go | 40 +++++++++++++++++++ packer/plugin.go | 29 ++++++++++++++ 11 files changed, 139 insertions(+), 21 deletions(-) diff --git a/hcl2template/types.build.hcp_packer_registry_test.go b/hcl2template/types.build.hcp_packer_registry_test.go index b27b80e5b34..b43566d3eba 100644 --- a/hcl2template/types.build.hcp_packer_registry_test.go +++ b/hcl2template/types.build.hcp_packer_registry_test.go @@ -57,6 +57,7 @@ func Test_ParseHCPPackerRegistryBlock(t *testing.T) { Builder: emptyMockBuilder, Provisioners: []packer.CoreBuildProvisioner{}, PostProcessors: [][]packer.CoreBuildPostProcessor{}, + BuilderType: "virtualbox-iso", }, }, false, @@ -110,6 +111,7 @@ func Test_ParseHCPPackerRegistryBlock(t *testing.T) { Builder: emptyMockBuilder, Provisioners: []packer.CoreBuildProvisioner{}, PostProcessors: [][]packer.CoreBuildPostProcessor{}, + BuilderType: "virtualbox-iso", }, }, false, @@ -241,6 +243,7 @@ func Test_ParseHCPPackerRegistryBlock(t *testing.T) { Provisioners: []packer.CoreBuildProvisioner{}, PostProcessors: [][]packer.CoreBuildPostProcessor{}, Prepared: true, + BuilderType: "null", }, }, false, diff --git a/hcl2template/types.build_test.go b/hcl2template/types.build_test.go index 8647821dd18..d94dee4f82f 100644 --- a/hcl2template/types.build_test.go +++ b/hcl2template/types.build_test.go @@ -283,6 +283,7 @@ func TestParse_build(t *testing.T) { []packersdk.Build{ &packer.CoreBuild{ Type: "virtualbox-iso.ubuntu-1204", + BuilderType: "virtualbox-iso", Prepared: true, Builder: emptyMockBuilder, Provisioners: []packer.CoreBuildProvisioner{}, @@ -317,6 +318,7 @@ func TestParse_build(t *testing.T) { }, &packer.CoreBuild{ Type: "amazon-ebs.aws-ubuntu-16.04", + BuilderType: "amazon-ebs", Prepared: true, Builder: emptyMockBuilder, Provisioners: []packer.CoreBuildProvisioner{}, @@ -397,9 +399,10 @@ func TestParse_build(t *testing.T) { false, false, []packersdk.Build{ &packer.CoreBuild{ - Type: "virtualbox-iso.ubuntu-1204", - Prepared: true, - Builder: emptyMockBuilder, + Type: "virtualbox-iso.ubuntu-1204", + BuilderType: "virtualbox-iso", + Prepared: true, + Builder: emptyMockBuilder, Provisioners: []packer.CoreBuildProvisioner{ { PType: "shell", @@ -427,9 +430,10 @@ func TestParse_build(t *testing.T) { PostProcessors: [][]packer.CoreBuildPostProcessor{}, }, &packer.CoreBuild{ - Type: "amazon-ebs.aws-ubuntu-16.04", - Prepared: true, - Builder: emptyMockBuilder, + Type: "amazon-ebs.aws-ubuntu-16.04", + BuilderType: "amazon-ebs", + Prepared: true, + Builder: emptyMockBuilder, Provisioners: []packer.CoreBuildProvisioner{ { PType: "file", @@ -486,9 +490,10 @@ func TestParse_build(t *testing.T) { false, false, []packersdk.Build{ &packer.CoreBuild{ - Type: "virtualbox-iso.ubuntu-1204", - Prepared: true, - Builder: emptyMockBuilder, + Type: "virtualbox-iso.ubuntu-1204", + BuilderType: "virtualbox-iso", + Prepared: true, + Builder: emptyMockBuilder, Provisioners: []packer.CoreBuildProvisioner{ { PType: "shell", @@ -550,6 +555,7 @@ func TestParse_build(t *testing.T) { &packer.CoreBuild{ BuildName: "build-name", Type: "virtualbox-iso.ubuntu-1204", + BuilderType: "virtualbox-iso", Prepared: true, Builder: emptyMockBuilder, Provisioners: []packer.CoreBuildProvisioner{}, @@ -604,6 +610,7 @@ func TestParse_build(t *testing.T) { &packer.CoreBuild{ BuildName: "test-build", Type: "virtualbox-iso.ubuntu-1204", + BuilderType: "virtualbox-iso", Prepared: true, Builder: emptyMockBuilder, Provisioners: []packer.CoreBuildProvisioner{}, @@ -659,10 +666,11 @@ func TestParse_build(t *testing.T) { false, false, []packersdk.Build{ &packer.CoreBuild{ - BuildName: "build-name-test", - Type: "virtualbox-iso.ubuntu-1204", - Prepared: true, - Builder: emptyMockBuilder, + BuildName: "build-name-test", + Type: "virtualbox-iso.ubuntu-1204", + BuilderType: "virtualbox-iso", + Prepared: true, + Builder: emptyMockBuilder, Provisioners: []packer.CoreBuildProvisioner{ { PName: "build-name-test", diff --git a/hcl2template/types.datasource_test.go b/hcl2template/types.datasource_test.go index d12fcafd076..69f6541389c 100644 --- a/hcl2template/types.datasource_test.go +++ b/hcl2template/types.datasource_test.go @@ -57,6 +57,7 @@ func TestParse_datasource(t *testing.T) { []packersdk.Build{ &packer.CoreBuild{ Type: "null.test", + BuilderType: "null", Builder: &null.Builder{}, Provisioners: []packer.CoreBuildProvisioner{}, PostProcessors: [][]packer.CoreBuildPostProcessor{}, @@ -134,6 +135,7 @@ func TestParse_datasource(t *testing.T) { []packersdk.Build{ &packer.CoreBuild{ Type: "null.test", + BuilderType: "null", Builder: &null.Builder{}, Provisioners: []packer.CoreBuildProvisioner{}, PostProcessors: [][]packer.CoreBuildPostProcessor{}, diff --git a/hcl2template/types.packer_config.go b/hcl2template/types.packer_config.go index 3ead0b6b5f1..d21d10edeae 100644 --- a/hcl2template/types.packer_config.go +++ b/hcl2template/types.packer_config.go @@ -622,6 +622,7 @@ func (cfg *PackerConfig) GetBuilds(opts packer.GetBuildsOptions) ([]packersdk.Bu decoded, _ := decodeHCL2Spec(srcUsage.Body, cfg.EvalContext(BuildContext, nil), builder) pcb.HCLConfig = decoded + pcb.BuilderType = srcUsage.Type // If the builder has provided a list of to-be-generated variables that // should be made accessible to provisioners, pass that list into diff --git a/hcl2template/types.packer_config_test.go b/hcl2template/types.packer_config_test.go index 69bc2da2c1c..391899e9234 100644 --- a/hcl2template/types.packer_config_test.go +++ b/hcl2template/types.packer_config_test.go @@ -208,8 +208,9 @@ func TestParser_complete(t *testing.T) { false, false, []packersdk.Build{ &packer.CoreBuild{ - Type: "virtualbox-iso.ubuntu-1204", - Prepared: true, + Type: "virtualbox-iso.ubuntu-1204", + BuilderType: "virtualbox-iso", + Prepared: true, Builder: &MockBuilder{ Config: MockConfig{ NestedMockConfig: NestedMockConfig{ @@ -319,8 +320,9 @@ func TestParser_complete(t *testing.T) { }, }, &packer.CoreBuild{ - Type: "amazon-ebs.ubuntu-1604", - Prepared: true, + Type: "amazon-ebs.ubuntu-1604", + BuilderType: "amazon-ebs", + Prepared: true, Builder: &MockBuilder{ Config: MockConfig{ NestedMockConfig: NestedMockConfig{ diff --git a/hcl2template/types.source_test.go b/hcl2template/types.source_test.go index 47caeec5a75..e319163682d 100644 --- a/hcl2template/types.source_test.go +++ b/hcl2template/types.source_test.go @@ -55,6 +55,7 @@ func TestParse_source(t *testing.T) { []packersdk.Build{ &packer.CoreBuild{ Type: "null.test", + BuilderType: "null", Builder: &null.Builder{}, Provisioners: []packer.CoreBuildProvisioner{}, PostProcessors: [][]packer.CoreBuildPostProcessor{}, diff --git a/hcl2template/types.variables_test.go b/hcl2template/types.variables_test.go index a19b80bd990..ecff3677ca2 100644 --- a/hcl2template/types.variables_test.go +++ b/hcl2template/types.variables_test.go @@ -129,6 +129,7 @@ func TestParse_variables(t *testing.T) { []packersdk.Build{ &packer.CoreBuild{ Type: "null.test", + BuilderType: "null", Builder: &null.Builder{}, Provisioners: []packer.CoreBuildProvisioner{}, PostProcessors: [][]packer.CoreBuildPostProcessor{}, @@ -293,6 +294,7 @@ func TestParse_variables(t *testing.T) { []packersdk.Build{ &packer.CoreBuild{ Type: "null", + BuilderType: "null", Builder: &null.Builder{}, Provisioners: []packer.CoreBuildProvisioner{}, PostProcessors: [][]packer.CoreBuildPostProcessor{}, @@ -379,6 +381,7 @@ func TestParse_variables(t *testing.T) { []packersdk.Build{ &packer.CoreBuild{ Type: "null.test", + BuilderType: "null", Builder: &null.Builder{}, Provisioners: []packer.CoreBuildProvisioner{}, PostProcessors: [][]packer.CoreBuildPostProcessor{}, @@ -442,6 +445,7 @@ func TestParse_variables(t *testing.T) { []packersdk.Build{ &packer.CoreBuild{ Type: "null.test", + BuilderType: "null", Builder: &null.Builder{}, Provisioners: []packer.CoreBuildProvisioner{}, PostProcessors: [][]packer.CoreBuildPostProcessor{}, @@ -483,6 +487,7 @@ func TestParse_variables(t *testing.T) { []packersdk.Build{ &packer.CoreBuild{ Type: "null.test", + BuilderType: "null", Builder: &null.Builder{}, Provisioners: []packer.CoreBuildProvisioner{}, PostProcessors: [][]packer.CoreBuildPostProcessor{}, @@ -538,9 +543,10 @@ func TestParse_variables(t *testing.T) { }, false, false, []packersdk.Build{&packer.CoreBuild{ - Type: "null.null-builder", - Prepared: true, - Builder: &null.Builder{}, + Type: "null.null-builder", + BuilderType: "null", + Prepared: true, + Builder: &null.Builder{}, Provisioners: []packer.CoreBuildProvisioner{ { PType: "shell", @@ -627,6 +633,7 @@ func TestParse_variables(t *testing.T) { []packersdk.Build{ &packer.CoreBuild{ Type: "null.test", + BuilderType: "null", Builder: &null.Builder{}, Provisioners: []packer.CoreBuildProvisioner{}, PostProcessors: [][]packer.CoreBuildPostProcessor{}, diff --git a/internal/hcp/registry/hcl.go b/internal/hcp/registry/hcl.go index 23c5af7ccd9..ce6fd68eaa6 100644 --- a/internal/hcp/registry/hcl.go +++ b/internal/hcp/registry/hcl.go @@ -85,6 +85,18 @@ func (h *HCLRegistry) CompleteBuild( if ok { name = cb.Type } + + metadata := cb.GetMetadata() + log.Printf( + "[TRACE] HCL 'Packer Version' Metadata for build name %q: %q\n", + name, metadata.PackerVersion, + ) + for k, pluginDetails := range metadata.Plugins { + log.Printf( + "[TRACE] HCL 'Plugin' Metadata for build name %q: %q -- %q\n", + name, k, pluginDetails.Description.Version, + ) + } return h.bucket.completeBuild(ctx, name, artifacts, buildErr) } diff --git a/internal/hcp/registry/json.go b/internal/hcp/registry/json.go index b35f2ea49ed..b86cfd45273 100644 --- a/internal/hcp/registry/json.go +++ b/internal/hcp/registry/json.go @@ -93,7 +93,20 @@ func (h *JSONRegistry) CompleteBuild( artifacts []sdkpacker.Artifact, buildErr error, ) ([]sdkpacker.Artifact, error) { - return h.bucket.completeBuild(ctx, build.Name(), artifacts, buildErr) + name := build.Name() + + metadata := build.(*packer.CoreBuild).GetMetadata() + log.Printf( + "[TRACE] JSON 'Packer Version' Metadata for build name %q: %q\n", + name, metadata.PackerVersion, + ) + for k, pluginDetails := range metadata.Plugins { + log.Printf( + "[TRACE] JSON 'Plugin' Metadata for build name %q: %q -- %q\n", + name, k, pluginDetails.Description.Version, + ) + } + return h.bucket.completeBuild(ctx, name, artifacts, buildErr) } // VersionStatusSummary prints a status report in the UI if the version is not yet done diff --git a/packer/build.go b/packer/build.go index e51e71d00c9..9dca9610ac8 100644 --- a/packer/build.go +++ b/packer/build.go @@ -52,6 +52,46 @@ type CoreBuild struct { prepareCalled bool } +type BuildMetadata struct { + PackerVersion string + Plugins map[string]PluginDetails +} + +func (b *CoreBuild) getPluginsMetadata() map[string]PluginDetails { + resp := map[string]PluginDetails{} + + builderPlugin, builderPluginOk := PluginsDetailsStorage[fmt.Sprintf("%q-%q", PluginComponentBuilder, b.BuilderType)] + if builderPluginOk { + resp[builderPlugin.Name] = builderPlugin + } + + for _, pp := range b.PostProcessors { + for _, p := range pp { + postprocessorsPlugin, postprocessorsPluginOk := PluginsDetailsStorage[fmt.Sprintf("%q-%q", PluginComponentPostProcessor, p.PType)] + if postprocessorsPluginOk { + resp[postprocessorsPlugin.Name] = postprocessorsPlugin + } + } + } + + for _, pv := range b.Provisioners { + provisionerPlugin, provisionerPluginOk := PluginsDetailsStorage[fmt.Sprintf("%q-%q", PluginComponentProvisioner, pv.PType)] + if provisionerPluginOk { + resp[provisionerPlugin.Name] = provisionerPlugin + } + } + + return resp +} + +func (b *CoreBuild) GetMetadata() BuildMetadata { + metadata := BuildMetadata{ + PackerVersion: version.FormattedVersion(), + Plugins: b.getPluginsMetadata(), + } + return metadata +} + // CoreBuildPostProcessor Keeps track of the post-processor and the // configuration of the post-processor used within a build. type CoreBuildPostProcessor struct { diff --git a/packer/plugin.go b/packer/plugin.go index 30261d7e05c..513694f639f 100644 --- a/packer/plugin.go +++ b/packer/plugin.go @@ -6,6 +6,7 @@ package packer import ( "crypto/sha256" "encoding/json" + "fmt" "log" "os" "os/exec" @@ -135,6 +136,11 @@ func (c *PluginConfig) DiscoverMultiPlugin(pluginName, pluginPath string) error } pluginPrefix := pluginName + "-" + pluginDetails := PluginDetails{ + Name: pluginName, + Description: desc, + PluginPath: pluginPath, + } for _, builderName := range desc.Builders { builderName := builderName // copy to avoid pointer overwrite issue @@ -145,6 +151,8 @@ func (c *PluginConfig) DiscoverMultiPlugin(pluginName, pluginPath string) error c.Builders.Set(key, func() (packersdk.Builder, error) { return c.Client(pluginPath, "start", "builder", builderName).Builder() }) + PluginsDetailsStorage[fmt.Sprintf("%q-%q", PluginComponentBuilder, key)] = pluginDetails + } if len(desc.Builders) > 0 { @@ -160,6 +168,7 @@ func (c *PluginConfig) DiscoverMultiPlugin(pluginName, pluginPath string) error c.PostProcessors.Set(key, func() (packersdk.PostProcessor, error) { return c.Client(pluginPath, "start", "post-processor", postProcessorName).PostProcessor() }) + PluginsDetailsStorage[fmt.Sprintf("%q-%q", PluginComponentPostProcessor, key)] = pluginDetails } if len(desc.PostProcessors) > 0 { @@ -175,6 +184,8 @@ func (c *PluginConfig) DiscoverMultiPlugin(pluginName, pluginPath string) error c.Provisioners.Set(key, func() (packersdk.Provisioner, error) { return c.Client(pluginPath, "start", "provisioner", provisionerName).Provisioner() }) + PluginsDetailsStorage[fmt.Sprintf("%q-%q", PluginComponentProvisioner, key)] = pluginDetails + } if len(desc.Provisioners) > 0 { log.Printf("found external %v provisioner from %s plugin", desc.Provisioners, pluginName) @@ -189,6 +200,7 @@ func (c *PluginConfig) DiscoverMultiPlugin(pluginName, pluginPath string) error c.DataSources.Set(key, func() (packersdk.Datasource, error) { return c.Client(pluginPath, "start", "datasource", datasourceName).Datasource() }) + PluginsDetailsStorage[fmt.Sprintf("%q-%q", PluginComponentDataSource, key)] = pluginDetails } if len(desc.Datasources) > 0 { log.Printf("found external %v datasource from %s plugin", desc.Datasources, pluginName) @@ -240,3 +252,20 @@ func (c *PluginConfig) Client(path string, args ...string) *PluginClient { config.MaxPort = c.PluginMaxPort return NewClient(&config) } + +type PluginComponentType string + +const ( + PluginComponentBuilder PluginComponentType = "builder" + PluginComponentPostProcessor PluginComponentType = "post-processor" + PluginComponentProvisioner PluginComponentType = "provisioner" + PluginComponentDataSource PluginComponentType = "data-source" +) + +type PluginDetails struct { + Name string + Description pluginsdk.SetDescription + PluginPath string +} + +var PluginsDetailsStorage = map[string]PluginDetails{} From 8e920275460a013799234964691ee0b95bf47216 Mon Sep 17 00:00:00 2001 From: Devashish Date: Tue, 26 Mar 2024 10:58:48 -0400 Subject: [PATCH 347/381] HPR-1537: Packer Core sends metadata to HCP Packer in UpdateBuild API (#12891) --- go.mod | 2 ++ go.sum | 6 +++--- internal/hcp/api/service_build.go | 2 ++ internal/hcp/registry/hcl.go | 10 +++++++++ internal/hcp/registry/json.go | 14 ++++++++++++- internal/hcp/registry/types.bucket.go | 30 +++++++++++++++++++++++++++ internal/hcp/registry/types.builds.go | 1 + 7 files changed, 61 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 596b48a9e6f..2c89433899b 100644 --- a/go.mod +++ b/go.mod @@ -1,5 +1,7 @@ module github.com/hashicorp/packer +replace github.com/hashicorp/hcp-sdk-go => github.com/hashicorp/hcp-sdk-go-internal v0.0.0-20240325194734-0bb6bd5bbc19 + require ( cloud.google.com/go v0.110.8 // indirect github.com/biogo/hts v1.4.3 diff --git a/go.sum b/go.sum index 006aa84bf8c..1bc75fa168c 100644 --- a/go.sum +++ b/go.sum @@ -313,8 +313,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= -github.com/hashicorp/hcp-sdk-go v0.90.0 h1:dYN7PB9bBYKamjMHPBQnK6d8zphyexHGXw4ddynK2ck= -github.com/hashicorp/hcp-sdk-go v0.90.0/go.mod h1:vQ4fzdL1AmhIAbCw+4zmFe5Hbpajj3NvRWkJoVuxmAk= +github.com/hashicorp/hcp-sdk-go-internal v0.0.0-20240325194734-0bb6bd5bbc19 h1:QFacHWwhQbVqA9p/nX5CC7wPVQUuT8T2pN7TKI15BQw= +github.com/hashicorp/hcp-sdk-go-internal v0.0.0-20240325194734-0bb6bd5bbc19/go.mod h1:vsLMHasv6H3Qf7wIlRSzHXIOp81G+ad1FP31JfdTKYc= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR/prTM= @@ -784,8 +784,8 @@ gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internal/hcp/api/service_build.go b/internal/hcp/api/service_build.go index 69ce13b2b34..946d8d08e42 100644 --- a/internal/hcp/api/service_build.go +++ b/internal/hcp/api/service_build.go @@ -58,6 +58,7 @@ func (c *Client) UpdateBuild( buildLabels map[string]string, buildStatus hcpPackerModels.HashicorpCloudPacker20230101BuildStatus, artifacts []*hcpPackerModels.HashicorpCloudPacker20230101ArtifactCreateBody, + metadata *hcpPackerModels.HashicorpCloudPacker20230101BuildMetadata, ) (string, error) { params := hcpPackerAPI.NewPackerServiceUpdateBuildParamsWithContext(ctx) @@ -76,6 +77,7 @@ func (c *Client) UpdateBuild( Platform: platform, SourceExternalIdentifier: sourceExternalIdentifier, Status: &buildStatus, + Metadata: metadata, } resp, err := c.Packer.PackerServiceUpdateBuild(params, nil) diff --git a/internal/hcp/registry/hcl.go b/internal/hcp/registry/hcl.go index ce6fd68eaa6..332c19df953 100644 --- a/internal/hcp/registry/hcl.go +++ b/internal/hcp/registry/hcl.go @@ -70,6 +70,12 @@ func (h *HCLRegistry) StartBuild(ctx context.Context, build sdkpacker.Build) err if ok { name = cb.Type } + + metadata := cb.GetMetadata() + err := h.bucket.AddMetadataToBuild(ctx, name, metadata) + if err != nil { + return err + } return h.bucket.startBuild(ctx, name) } @@ -97,6 +103,10 @@ func (h *HCLRegistry) CompleteBuild( name, k, pluginDetails.Description.Version, ) } + err := h.bucket.AddMetadataToBuild(ctx, name, metadata) + if err != nil { + return nil, err + } return h.bucket.completeBuild(ctx, name, artifacts, buildErr) } diff --git a/internal/hcp/registry/json.go b/internal/hcp/registry/json.go index b86cfd45273..785ccc4a92f 100644 --- a/internal/hcp/registry/json.go +++ b/internal/hcp/registry/json.go @@ -83,7 +83,14 @@ func (h *JSONRegistry) PopulateVersion(ctx context.Context) error { // StartBuild is invoked when one build for the configuration is starting to be processed func (h *JSONRegistry) StartBuild(ctx context.Context, build sdkpacker.Build) error { - return h.bucket.startBuild(ctx, build.Name()) + name := build.Name() + + metadata := build.(*packer.CoreBuild).GetMetadata() + err := h.bucket.AddMetadataToBuild(ctx, name, metadata) + if err != nil { + return err + } + return h.bucket.startBuild(ctx, name) } // CompleteBuild is invoked when one build for the configuration has finished @@ -106,6 +113,11 @@ func (h *JSONRegistry) CompleteBuild( name, k, pluginDetails.Description.Version, ) } + + err := h.bucket.AddMetadataToBuild(ctx, name, metadata) + if err != nil { + return nil, err + } return h.bucket.completeBuild(ctx, name, artifacts, buildErr) } diff --git a/internal/hcp/registry/types.bucket.go b/internal/hcp/registry/types.bucket.go index 6eda3b484bf..f0a7c4b4353 100644 --- a/internal/hcp/registry/types.bucket.go +++ b/internal/hcp/registry/types.bucket.go @@ -19,6 +19,7 @@ import ( "github.com/hashicorp/packer/hcl2template" hcpPackerAPI "github.com/hashicorp/packer/internal/hcp/api" "github.com/hashicorp/packer/internal/hcp/env" + "github.com/hashicorp/packer/packer" "github.com/mitchellh/mapstructure" "google.golang.org/grpc/codes" ) @@ -213,6 +214,7 @@ func (bucket *Bucket) UpdateBuildStatus( nil, status, nil, + &buildToUpdate.Metadata, ) if err != nil { return err @@ -285,6 +287,7 @@ func (bucket *Bucket) markBuildComplete(ctx context.Context, name string) error buildToUpdate.Labels, status, artifacts, + &buildToUpdate.Metadata, ) if err != nil { return err @@ -535,6 +538,7 @@ func (bucket *Bucket) HeartbeatBuild(ctx context.Context, build string) (func(), nil, hcpPackerModels.HashicorpCloudPacker20230101BuildStatusBUILDRUNNING, nil, + nil, ) if err != nil { log.Printf("[ERROR] failed to send heartbeat for build %q: %s", build, err) @@ -599,6 +603,32 @@ type NotAHCPArtifactError struct { error } +// AddMetadataToBuild adds metadata to a build in the HCP Packer registry. +func (bucket *Bucket) AddMetadataToBuild( + ctx context.Context, buildName string, metadata packer.BuildMetadata, +) error { + buildToUpdate, err := bucket.Version.Build(buildName) + if err != nil { + return err + } + + packerMetadata := make(map[string]interface{}) + packerMetadata["version"] = metadata.PackerVersion + + var pluginsMetadata []map[string]interface{} + for _, plugin := range metadata.Plugins { + pluginMetadata := map[string]interface{}{ + "version": plugin.Description.Version, + "name": plugin.Name, + } + pluginsMetadata = append(pluginsMetadata, pluginMetadata) + } + packerMetadata["plugins"] = pluginsMetadata + + buildToUpdate.Metadata.Packer = packerMetadata + return nil +} + func (bucket *Bucket) completeBuild( ctx context.Context, buildName string, diff --git a/internal/hcp/registry/types.builds.go b/internal/hcp/registry/types.builds.go index a55e9b0b9f6..dc7e132762c 100644 --- a/internal/hcp/registry/types.builds.go +++ b/internal/hcp/registry/types.builds.go @@ -19,6 +19,7 @@ type Build struct { Labels map[string]string Artifacts map[string]packerSDKRegistry.Image Status hcpPackerModels.HashicorpCloudPacker20230101BuildStatus + Metadata hcpPackerModels.HashicorpCloudPacker20230101BuildMetadata } // NewBuildFromCloudPackerBuild converts a HashicorpCloudPackerBuild to a local build that can be tracked and From edc8a4dc0db83d6cd1887942590c019e3de92f7e Mon Sep 17 00:00:00 2001 From: Devashish Date: Wed, 27 Mar 2024 15:23:06 -0400 Subject: [PATCH 348/381] Use latest version of hcp-sdk-go Remove loggers and move AddMetadataToBuild method to Version --- go.mod | 2 -- go.sum | 6 +++--- internal/hcp/registry/hcl.go | 22 ++++++-------------- internal/hcp/registry/json.go | 22 +++++--------------- internal/hcp/registry/types.bucket.go | 27 ------------------------- internal/hcp/registry/types.version.go | 28 ++++++++++++++++++++++++++ 6 files changed, 42 insertions(+), 65 deletions(-) diff --git a/go.mod b/go.mod index 2c89433899b..596b48a9e6f 100644 --- a/go.mod +++ b/go.mod @@ -1,7 +1,5 @@ module github.com/hashicorp/packer -replace github.com/hashicorp/hcp-sdk-go => github.com/hashicorp/hcp-sdk-go-internal v0.0.0-20240325194734-0bb6bd5bbc19 - require ( cloud.google.com/go v0.110.8 // indirect github.com/biogo/hts v1.4.3 diff --git a/go.sum b/go.sum index 1bc75fa168c..006aa84bf8c 100644 --- a/go.sum +++ b/go.sum @@ -313,8 +313,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= -github.com/hashicorp/hcp-sdk-go-internal v0.0.0-20240325194734-0bb6bd5bbc19 h1:QFacHWwhQbVqA9p/nX5CC7wPVQUuT8T2pN7TKI15BQw= -github.com/hashicorp/hcp-sdk-go-internal v0.0.0-20240325194734-0bb6bd5bbc19/go.mod h1:vsLMHasv6H3Qf7wIlRSzHXIOp81G+ad1FP31JfdTKYc= +github.com/hashicorp/hcp-sdk-go v0.90.0 h1:dYN7PB9bBYKamjMHPBQnK6d8zphyexHGXw4ddynK2ck= +github.com/hashicorp/hcp-sdk-go v0.90.0/go.mod h1:vQ4fzdL1AmhIAbCw+4zmFe5Hbpajj3NvRWkJoVuxmAk= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR/prTM= @@ -784,8 +784,8 @@ gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internal/hcp/registry/hcl.go b/internal/hcp/registry/hcl.go index 332c19df953..897e2afc0ec 100644 --- a/internal/hcp/registry/hcl.go +++ b/internal/hcp/registry/hcl.go @@ -72,7 +72,7 @@ func (h *HCLRegistry) StartBuild(ctx context.Context, build sdkpacker.Build) err } metadata := cb.GetMetadata() - err := h.bucket.AddMetadataToBuild(ctx, name, metadata) + err := h.bucket.Version.AddMetadataToBuild(ctx, name, metadata) if err != nil { return err } @@ -86,28 +86,18 @@ func (h *HCLRegistry) CompleteBuild( artifacts []sdkpacker.Artifact, buildErr error, ) ([]sdkpacker.Artifact, error) { - name := build.Name() + buildName := build.Name() cb, ok := build.(*packer.CoreBuild) if ok { - name = cb.Type + buildName = cb.Type } - metadata := cb.GetMetadata() - log.Printf( - "[TRACE] HCL 'Packer Version' Metadata for build name %q: %q\n", - name, metadata.PackerVersion, - ) - for k, pluginDetails := range metadata.Plugins { - log.Printf( - "[TRACE] HCL 'Plugin' Metadata for build name %q: %q -- %q\n", - name, k, pluginDetails.Description.Version, - ) - } - err := h.bucket.AddMetadataToBuild(ctx, name, metadata) + buildMetadata := cb.GetMetadata() + err := h.bucket.Version.AddMetadataToBuild(ctx, buildName, buildMetadata) if err != nil { return nil, err } - return h.bucket.completeBuild(ctx, name, artifacts, buildErr) + return h.bucket.completeBuild(ctx, buildName, artifacts, buildErr) } // VersionStatusSummary prints a status report in the UI if the version is not yet done diff --git a/internal/hcp/registry/json.go b/internal/hcp/registry/json.go index 785ccc4a92f..407ea40a062 100644 --- a/internal/hcp/registry/json.go +++ b/internal/hcp/registry/json.go @@ -86,7 +86,7 @@ func (h *JSONRegistry) StartBuild(ctx context.Context, build sdkpacker.Build) er name := build.Name() metadata := build.(*packer.CoreBuild).GetMetadata() - err := h.bucket.AddMetadataToBuild(ctx, name, metadata) + err := h.bucket.Version.AddMetadataToBuild(ctx, name, metadata) if err != nil { return err } @@ -100,25 +100,13 @@ func (h *JSONRegistry) CompleteBuild( artifacts []sdkpacker.Artifact, buildErr error, ) ([]sdkpacker.Artifact, error) { - name := build.Name() - - metadata := build.(*packer.CoreBuild).GetMetadata() - log.Printf( - "[TRACE] JSON 'Packer Version' Metadata for build name %q: %q\n", - name, metadata.PackerVersion, - ) - for k, pluginDetails := range metadata.Plugins { - log.Printf( - "[TRACE] JSON 'Plugin' Metadata for build name %q: %q -- %q\n", - name, k, pluginDetails.Description.Version, - ) - } - - err := h.bucket.AddMetadataToBuild(ctx, name, metadata) + buildName := build.Name() + buildMetadata := build.(*packer.CoreBuild).GetMetadata() + err := h.bucket.Version.AddMetadataToBuild(ctx, buildName, buildMetadata) if err != nil { return nil, err } - return h.bucket.completeBuild(ctx, name, artifacts, buildErr) + return h.bucket.completeBuild(ctx, buildName, artifacts, buildErr) } // VersionStatusSummary prints a status report in the UI if the version is not yet done diff --git a/internal/hcp/registry/types.bucket.go b/internal/hcp/registry/types.bucket.go index f0a7c4b4353..1fe9dd3b2b3 100644 --- a/internal/hcp/registry/types.bucket.go +++ b/internal/hcp/registry/types.bucket.go @@ -19,7 +19,6 @@ import ( "github.com/hashicorp/packer/hcl2template" hcpPackerAPI "github.com/hashicorp/packer/internal/hcp/api" "github.com/hashicorp/packer/internal/hcp/env" - "github.com/hashicorp/packer/packer" "github.com/mitchellh/mapstructure" "google.golang.org/grpc/codes" ) @@ -603,32 +602,6 @@ type NotAHCPArtifactError struct { error } -// AddMetadataToBuild adds metadata to a build in the HCP Packer registry. -func (bucket *Bucket) AddMetadataToBuild( - ctx context.Context, buildName string, metadata packer.BuildMetadata, -) error { - buildToUpdate, err := bucket.Version.Build(buildName) - if err != nil { - return err - } - - packerMetadata := make(map[string]interface{}) - packerMetadata["version"] = metadata.PackerVersion - - var pluginsMetadata []map[string]interface{} - for _, plugin := range metadata.Plugins { - pluginMetadata := map[string]interface{}{ - "version": plugin.Description.Version, - "name": plugin.Name, - } - pluginsMetadata = append(pluginsMetadata, pluginMetadata) - } - packerMetadata["plugins"] = pluginsMetadata - - buildToUpdate.Metadata.Packer = packerMetadata - return nil -} - func (bucket *Bucket) completeBuild( ctx context.Context, buildName string, diff --git a/internal/hcp/registry/types.version.go b/internal/hcp/registry/types.version.go index ae8edb86931..91d81749702 100644 --- a/internal/hcp/registry/types.version.go +++ b/internal/hcp/registry/types.version.go @@ -4,6 +4,7 @@ package registry import ( + "context" "errors" "fmt" "math/rand" @@ -16,6 +17,7 @@ import ( sdkpacker "github.com/hashicorp/packer-plugin-sdk/packer" packerSDKRegistry "github.com/hashicorp/packer-plugin-sdk/packer/registry/image" "github.com/hashicorp/packer/internal/hcp/env" + "github.com/hashicorp/packer/packer" "github.com/oklog/ulid" ) @@ -174,3 +176,29 @@ func (version *Version) statusSummary(ui sdkpacker.Ui) { ui.Say(buf.String()) } + +// AddMetadataToBuild adds metadata to a build in the HCP Packer registry. +func (version *Version) AddMetadataToBuild( + ctx context.Context, buildName string, metadata packer.BuildMetadata, +) error { + buildToUpdate, err := version.Build(buildName) + if err != nil { + return err + } + + packerMetadata := make(map[string]interface{}) + packerMetadata["version"] = metadata.PackerVersion + + var pluginsMetadata []map[string]interface{} + for _, plugin := range metadata.Plugins { + pluginMetadata := map[string]interface{}{ + "version": plugin.Description.Version, + "name": plugin.Name, + } + pluginsMetadata = append(pluginsMetadata, pluginMetadata) + } + packerMetadata["plugins"] = pluginsMetadata + + buildToUpdate.Metadata.Packer = packerMetadata + return nil +} From 70d2efec4d7a54c4d35599dcadf0b934ad8903ce Mon Sep 17 00:00:00 2001 From: Devashish Date: Mon, 15 Apr 2024 15:02:10 -0400 Subject: [PATCH 349/381] Report metadata only when the build completes (#12923) --- internal/hcp/registry/hcl.go | 5 ----- internal/hcp/registry/json.go | 6 ------ internal/hcp/registry/types.bucket.go | 2 +- 3 files changed, 1 insertion(+), 12 deletions(-) diff --git a/internal/hcp/registry/hcl.go b/internal/hcp/registry/hcl.go index 897e2afc0ec..46909fb3474 100644 --- a/internal/hcp/registry/hcl.go +++ b/internal/hcp/registry/hcl.go @@ -92,11 +92,6 @@ func (h *HCLRegistry) CompleteBuild( buildName = cb.Type } - buildMetadata := cb.GetMetadata() - err := h.bucket.Version.AddMetadataToBuild(ctx, buildName, buildMetadata) - if err != nil { - return nil, err - } return h.bucket.completeBuild(ctx, buildName, artifacts, buildErr) } diff --git a/internal/hcp/registry/json.go b/internal/hcp/registry/json.go index 407ea40a062..e94f7afd415 100644 --- a/internal/hcp/registry/json.go +++ b/internal/hcp/registry/json.go @@ -84,12 +84,6 @@ func (h *JSONRegistry) PopulateVersion(ctx context.Context) error { // StartBuild is invoked when one build for the configuration is starting to be processed func (h *JSONRegistry) StartBuild(ctx context.Context, build sdkpacker.Build) error { name := build.Name() - - metadata := build.(*packer.CoreBuild).GetMetadata() - err := h.bucket.Version.AddMetadataToBuild(ctx, name, metadata) - if err != nil { - return err - } return h.bucket.startBuild(ctx, name) } diff --git a/internal/hcp/registry/types.bucket.go b/internal/hcp/registry/types.bucket.go index 1fe9dd3b2b3..9ebf42eb797 100644 --- a/internal/hcp/registry/types.bucket.go +++ b/internal/hcp/registry/types.bucket.go @@ -213,7 +213,7 @@ func (bucket *Bucket) UpdateBuildStatus( nil, status, nil, - &buildToUpdate.Metadata, + nil, ) if err != nil { return err From f19b9b73694b6a2b8fadcea33d0d4034bf2268b9 Mon Sep 17 00:00:00 2001 From: Devashish Date: Mon, 15 Apr 2024 17:13:09 -0400 Subject: [PATCH 350/381] Remove GetMetadata from StartBuild and add to CompleteBuild for HCL (#12926) --- internal/hcp/registry/hcl.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/internal/hcp/registry/hcl.go b/internal/hcp/registry/hcl.go index 46909fb3474..d80577b1318 100644 --- a/internal/hcp/registry/hcl.go +++ b/internal/hcp/registry/hcl.go @@ -71,11 +71,6 @@ func (h *HCLRegistry) StartBuild(ctx context.Context, build sdkpacker.Build) err name = cb.Type } - metadata := cb.GetMetadata() - err := h.bucket.Version.AddMetadataToBuild(ctx, name, metadata) - if err != nil { - return err - } return h.bucket.startBuild(ctx, name) } @@ -92,6 +87,11 @@ func (h *HCLRegistry) CompleteBuild( buildName = cb.Type } + metadata := cb.GetMetadata() + err := h.bucket.Version.AddMetadataToBuild(ctx, buildName, metadata) + if err != nil { + return nil, err + } return h.bucket.completeBuild(ctx, buildName, artifacts, buildErr) } From fed91012ab09f9177eb9ed796013b4baa7f0bcc6 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 15 Apr 2024 15:38:27 -0400 Subject: [PATCH 351/381] Bump golang.org/x/net to v0.24.0 to address GO-2024-2687 --- go.mod | 8 ++++---- go.sum | 13 ++++++++----- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 596b48a9e6f..d27b71f0e14 100644 --- a/go.mod +++ b/go.mod @@ -44,13 +44,13 @@ require ( github.com/ulikunitz/xz v0.5.10 github.com/zclconf/go-cty v1.13.3 github.com/zclconf/go-cty-yaml v1.0.1 - golang.org/x/crypto v0.19.0 // indirect + golang.org/x/crypto v0.22.0 // indirect golang.org/x/mod v0.13.0 - golang.org/x/net v0.19.0 + golang.org/x/net v0.24.0 golang.org/x/oauth2 v0.15.0 golang.org/x/sync v0.4.0 - golang.org/x/sys v0.17.0 // indirect - golang.org/x/term v0.17.0 // indirect + golang.org/x/sys v0.19.0 // indirect + golang.org/x/term v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.14.0 google.golang.org/api v0.128.0 // indirect diff --git a/go.sum b/go.sum index 006aa84bf8c..639365bc108 100644 --- a/go.sum +++ b/go.sum @@ -590,8 +590,9 @@ golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.19.0 h1:ENy+Az/9Y1vSrlrvBSyna3PITt4tiZLf7sgCjZBX7Wo= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= +golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= @@ -631,8 +632,8 @@ golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ= @@ -688,16 +689,18 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.17.0 h1:25cE3gD+tdBA7lp7QfhuV+rJiE9YXTcS3VG1SqssI/Y= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= +golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= From 3f083fe8ea0a4d2d5137187798ffd6b4e58c0184 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 9 Apr 2024 16:23:59 -0400 Subject: [PATCH 352/381] github: only publish latest release images When building the container images for Packer (light and full), we should only publish them in the version being built is a release, and not a pre-release. Changing this means that both light and full latest will always be only a final release at any time. --- .github/workflows/build.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c15c8c6acf5..4f3bedfa675 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -40,7 +40,7 @@ jobs: outputs: product-version: ${{ steps.set-product-version.outputs.product-version }} base-product-version: ${{ steps.set-product-version.outputs.base-product-version }} - product-date: ${{ steps.get-product-version.outputs.product-date }} + product-date: ${{ steps.set-product-version.outputs.product-date }} product-prerelease-version: ${{ steps.set-product-version.outputs.prerelease-product-version }} set-ld-flags: ${{ steps.set-ld-flags.outputs.set-ld-flags }} steps: @@ -242,10 +242,10 @@ jobs: target: release-light arch: ${{ matrix.arch }} tags: | - docker.io/hashicorp/${{ env.REPO_NAME }}:light + ${{ steps.set-product-version.output.prerelease-product-version == '' && format('docker.io/hashicorp/{0}:light', env.REPO_NAME) }} docker.io/hashicorp/${{ env.REPO_NAME }}:light-${{ env.version }} docker.io/hashicorp/${{ env.REPO_NAME }}:${{ env.version }} - public.ecr.aws/hashicorp/${{ env.REPO_NAME }}:light + ${{ steps.set-product-version.output.prerelease-product-version == '' && format('public.ecr.aws/hashicorp/{0}:light', env.REPO_NAME) }} public.ecr.aws/hashicorp/${{ env.REPO_NAME }}:light-${{ env.version }} public.ecr.aws/hashicorp/${{ env.REPO_NAME }}:${{ env.version }} dev_tags: | @@ -272,9 +272,9 @@ jobs: target: release-full arch: ${{ matrix.arch }} tags: | - docker.io/hashicorp/${{ env.REPO_NAME }}:full + ${{ steps.set-product-version.output.prerelease-product-version == '' && format('docker.io/hashicorp/{0}:full', env.REPO_NAME) }} docker.io/hashicorp/${{ env.REPO_NAME }}:full-${{ env.version }} - public.ecr.aws/hashicorp/${{ env.REPO_NAME }}:full + ${{ steps.set-product-version.output.prerelease-product-version == '' && format('public.ecr.aws/hashicorp/{0}:full', env.REPO_NAME) }} public.ecr.aws/hashicorp/${{ env.REPO_NAME }}:full-${{ env.version }} dev_tags: | docker.io/hashicorppreview/${{ env.REPO_NAME }}:full-${{ env.version }} From 55a11fe7f4b07d07781aac3e768ba9c152bdf87c Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 16 Apr 2024 09:37:17 -0400 Subject: [PATCH 353/381] release/ci: disable automatic version bump --- .release/ci.hcl | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/.release/ci.hcl b/.release/ci.hcl index 14dab1591d9..fdc5e966d4d 100644 --- a/.release/ci.hcl +++ b/.release/ci.hcl @@ -139,21 +139,8 @@ event "post-publish-website" { } } -event "bump-version" { - depends = ["post-publish-website"] - action "bump-version" { - organization = "hashicorp" - repository = "crt-workflows-common" - workflow = "bump-version" - } - - notification { - on = "fail" - } -} - event "update-ironbank" { - depends = ["bump-version"] + depends = ["post-publish-website"] action "update-ironbank" { organization = "hashicorp" repository = "crt-workflows-common" From 27538f377b32660bbf5b23c406728145d21a523c Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 16 Apr 2024 09:39:17 -0400 Subject: [PATCH 354/381] release/ci: remove trailing whitespace --- .release/ci.hcl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.release/ci.hcl b/.release/ci.hcl index fdc5e966d4d..b69f9ba2520 100644 --- a/.release/ci.hcl +++ b/.release/ci.hcl @@ -12,7 +12,7 @@ project "packer" { organization = "hashicorp" repository = "packer" release_branches = [ - "main", + "main", "release/**" ] } From 93bec31ec95205f8f8f11795843a68a089d49a28 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Mon, 15 Apr 2024 15:41:26 -0400 Subject: [PATCH 355/381] version: embed version/VERSION as version string Since we have both version/version.go and version/VERSION to specify version strings, both are a bit redundant. As version/VERSION is supposed to be the source of truth now, we are using it to derive the version informaiton we used to rely on in Packer and its subcommands. Note: doing this prevents us from changing the version/prerelease through ldflags though as we derive Version/VersionPrerelease from the rawVersion variable. --- hcl2template/parser.go | 2 +- version/version.go | 38 +++++++++++++++++++++++++++++--------- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/hcl2template/parser.go b/hcl2template/parser.go index c372a7733a9..a1d23f640da 100644 --- a/hcl2template/parser.go +++ b/hcl2template/parser.go @@ -157,7 +157,7 @@ func (p *Parser) Parse(filename string, varFiles []string, argVars map[string]st // Before we go further, we'll check to make sure this version can read // all files, so we can produce a version-related error message rather than // potentially-confusing downstream errors. - versionDiags := cfg.CheckCoreVersionRequirements(p.CorePackerVersion) + versionDiags := cfg.CheckCoreVersionRequirements(p.CorePackerVersion.Core()) diags = append(diags, versionDiags...) if versionDiags.HasErrors() { return cfg, diags diff --git a/version/version.go b/version/version.go index a7eec6fd4bc..418d7ea4b62 100644 --- a/version/version.go +++ b/version/version.go @@ -4,6 +4,10 @@ package version import ( + _ "embed" + "fmt" + "strings" + "github.com/hashicorp/go-version" pluginVersion "github.com/hashicorp/packer-plugin-sdk/version" ) @@ -16,21 +20,24 @@ var ( // Whether cgo is enabled or not; set at build time CgoEnabled bool + //go:embed VERSION + rawVersion string + // The next version number that will be released. This will be updated after every release // Version must conform to the format expected by github.com/hashicorp/go-version // for tests to work. // A pre-release marker for the version can also be specified (e.g -dev). If this is omitted // The main version number that is being run at the moment. - - Version = "1.11.0" - + Version string // A pre-release marker for the version. If this is "" (empty string) // then it means that it is a final release. Otherwise, this is a pre-release // such as "dev" (in development), "beta", "rc1", etc. - - VersionPrerelease = "dev" - - VersionMetadata = "" + VersionPrerelease string + // VersionMetadata may be added to give more non-normalised information on a build + // like a commit SHA for example. + // + // Ex: 1.0.0-dev+metadata + VersionMetadata string ) var PackerVersion *pluginVersion.PluginVersion @@ -45,8 +52,21 @@ func FormattedVersion() string { var SemVer *version.Version func init() { - PackerVersion = pluginVersion.InitializePluginVersion(Version, VersionPrerelease) - SemVer = PackerVersion.SemVer() + var err error + + // Note: we use strings.TrimSpace on the version read from version/VERSION + // as it could have trailing whitespaces that must not be part of the + // version string, otherwise version.NewSemver will reject it. + SemVer, err = version.NewSemver(strings.TrimSpace(rawVersion)) + if err != nil { + panic(fmt.Sprintf("Invalid semver version specified in 'version/VERSION' (%q): %s", rawVersion, err)) + } + + Version = SemVer.Core().String() + VersionPrerelease = SemVer.Prerelease() + VersionMetadata = SemVer.Metadata() + + PackerVersion = pluginVersion.InitializePluginVersion(SemVer.Core().String(), SemVer.Prerelease()) } // String returns the complete version string, including prerelease From f05124e2a49c012ed06d1700eab7d2eb8026cfe0 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Mon, 15 Apr 2024 16:06:48 -0400 Subject: [PATCH 356/381] version: set version to 1.11.0-dev Since we set the raw version string from version/VERSION now, we change its information to point to 1.11.0-dev until we're ready to release. --- version/VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version/VERSION b/version/VERSION index 169f19b4901..1f724bf455d 100644 --- a/version/VERSION +++ b/version/VERSION @@ -1 +1 @@ -1.11.0 \ No newline at end of file +1.11.0-dev From 72a2604b34507c2ecc218ad97ebd1f2aef1f43c0 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 11 Apr 2024 10:25:49 -0400 Subject: [PATCH 357/381] Add LICENSE to zipped Go binaries --- .github/workflows/build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4f3bedfa675..a47a872ece0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -121,6 +121,7 @@ jobs: arch: ${{ matrix.goarch }} reproducible: report instructions: |- + cp LICENSE.txt "$TARGET_DIR/" go build -o "$BIN_PATH" -ldflags="$LD_FLAGS" -trimpath -buildvcs=false build-linux: @@ -158,6 +159,7 @@ jobs: arch: ${{ matrix.goarch }} reproducible: report instructions: |- + cp LICENSE.txt "$TARGET_DIR/" go build -o "$BIN_PATH" -ldflags="$LD_FLAGS" -trimpath -buildvcs=false - name: Linux Packaging @@ -220,6 +222,7 @@ jobs: arch: ${{ matrix.goarch }} reproducible: report instructions: |- + cp LICENSE.txt "$TARGET_DIR/" go build -o "$BIN_PATH" -ldflags="$LD_FLAGS" -tags netcgo -trimpath -buildvcs=false build-docker-light: From c37a89266525aa38dbceb75307464267489e9b08 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 11 Apr 2024 10:27:58 -0400 Subject: [PATCH 358/381] Add LICENSE details to Docker release binaries --- .release/docker/README.md | 4 ++++ Dockerfile | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.release/docker/README.md b/.release/docker/README.md index f733efbeaf9..8178630a5b3 100644 --- a/.release/docker/README.md +++ b/.release/docker/README.md @@ -2,6 +2,10 @@ The root of this repository contains the officially supported HashiCorp Dockerfile to build the hashicorp/packer docker image. The `dev` docker image should be built for local dev and testing, while the production docker image, `release`, is built in CI and makes use of CI-built binaries. The `light` and `full` docker images are built using the official binaries from releases.hashicorp.com. +## License + +This image is licensed under (BUSL-1.1)[https://github.com/hashicorp/packer/blob/main/LICENSE]. + ## Build Refer to the Makefile of this repository, especially the `docker` and `docker-dev` targets to build a local version of the dev image based on the sources available. diff --git a/Dockerfile b/Dockerfile index 12c38fde6af..b4b97dc44fb 100644 --- a/Dockerfile +++ b/Dockerfile @@ -45,11 +45,13 @@ LABEL name="Packer" \ version=$PRODUCT_VERSION \ release=$PRODUCT_VERSION \ summary="Packer is a tool for creating identical machine images for multiple platforms from a single source configuration." \ - description="Packer is a tool for creating identical machine images for multiple platforms from a single source configuration. Please submit issues to https://github.com/hashicorp/packer/issues" + description="Packer is a tool for creating identical machine images for multiple platforms from a single source configuration. Please submit issues to https://github.com/hashicorp/packer/issues" \ + org.opencontainers.image.licenses="BUSL-1.1" RUN apk add --no-cache git bash wget openssl gnupg xorriso COPY dist/$TARGETOS/$TARGETARCH/$BIN_NAME /bin/ +COPY LICENSE /usr/share/doc/$PRODUCT_NAME/LICENSE.txt ENTRYPOINT ["/bin/packer"] From 98fd73ad74237622c66756cec07f02ea76b170f8 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 11 Apr 2024 10:35:28 -0400 Subject: [PATCH 359/381] Add LICENSE to Linux packages --- .github/workflows/build.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a47a872ece0..7fced12f1be 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -162,6 +162,12 @@ jobs: cp LICENSE.txt "$TARGET_DIR/" go build -o "$BIN_PATH" -ldflags="$LD_FLAGS" -trimpath -buildvcs=false + - name: Copy license file to config_dir + if: ${{ matrix.goos == 'linux' }} + env: + LICENSE_DIR: ".release/linux/package/usr/share/doc/${{ env.REPO_NAME }}" + run: | + mkdir -p "$LICENSE_DIR" && cp LICENSE "$LICENSE_DIR/LICENSE.txt" - name: Linux Packaging uses: hashicorp/actions-packaging-linux@v1 with: @@ -175,6 +181,7 @@ jobs: binary: "dist/${{ env.REPO_NAME }}" deb_depends: "openssl" rpm_depends: "openssl" + config_dir: ".release/linux/package/" - name: Add Linux Package names to env run: | echo "RPM_PACKAGE=$(basename out/*.rpm)" >> $GITHUB_ENV From 0b00f52653b14cb2ee5e0bfd6135d650791a477e Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Thu, 11 Apr 2024 16:00:51 -0400 Subject: [PATCH 360/381] Copy license into zip with txt extension --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7fced12f1be..0cc4a511d5f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -121,7 +121,7 @@ jobs: arch: ${{ matrix.goarch }} reproducible: report instructions: |- - cp LICENSE.txt "$TARGET_DIR/" + cp LICENSE "$TARGET_DIR/LICENSE.txt" go build -o "$BIN_PATH" -ldflags="$LD_FLAGS" -trimpath -buildvcs=false build-linux: @@ -159,7 +159,7 @@ jobs: arch: ${{ matrix.goarch }} reproducible: report instructions: |- - cp LICENSE.txt "$TARGET_DIR/" + cp LICENSE "$TARGET_DIR/LICENSE.txt" go build -o "$BIN_PATH" -ldflags="$LD_FLAGS" -trimpath -buildvcs=false - name: Copy license file to config_dir @@ -229,7 +229,7 @@ jobs: arch: ${{ matrix.goarch }} reproducible: report instructions: |- - cp LICENSE.txt "$TARGET_DIR/" + cp LICENSE "$TARGET_DIR/LICENSE.txt" go build -o "$BIN_PATH" -ldflags="$LD_FLAGS" -tags netcgo -trimpath -buildvcs=false build-docker-light: From 33d95509034408df00c912d4599a360efb53c164 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 2 Apr 2024 15:10:00 -0400 Subject: [PATCH 361/381] packer: make Ui implementations match new SDK's The SDK's Ui interface has had some additions recently for supporting format-strings and their arguments as paramereters to Say, Ask and Error. These changes to the interface means that all the implementations of that interface need to match the definition, so in this case the implementations we had in packer/ui.go need to be updated to support those functions. --- go.mod | 2 +- go.sum | 4 ++-- packer/ui.go | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 51 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index d27b71f0e14..37ce0057399 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/hashicorp/hcl/v2 v2.19.1 github.com/hashicorp/hcp-sdk-go v0.90.0 github.com/hashicorp/packer-plugin-amazon v1.2.1 - github.com/hashicorp/packer-plugin-sdk v0.5.2 + github.com/hashicorp/packer-plugin-sdk v0.5.3 github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 github.com/klauspost/compress v1.13.6 // indirect github.com/klauspost/pgzip v1.2.5 diff --git a/go.sum b/go.sum index 639365bc108..1162fcdc3d9 100644 --- a/go.sum +++ b/go.sum @@ -321,8 +321,8 @@ github.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0= github.com/hashicorp/packer-plugin-amazon v1.2.1 h1:0Xqr8KsTJJhIo0vvjqPYrVMgyVxNRuYH4DeB5m/WAtw= github.com/hashicorp/packer-plugin-amazon v1.2.1/go.mod h1:qlp0h5TWVGgcPzN9mSxPiEAwOUOW3XU/zep0pGd0ZsM= -github.com/hashicorp/packer-plugin-sdk v0.5.2 h1:N+9qzkZLkjR0bgY+l5wFvrTN0G/Mf9f7g2yLsrDjmFI= -github.com/hashicorp/packer-plugin-sdk v0.5.2/go.mod h1:0LRUBS6CPClHvq6zPoGRi7C+cZDAIEaW4CeH4LhWWuc= +github.com/hashicorp/packer-plugin-sdk v0.5.3 h1:rWQuRgUUnkf1O3UYymQZz/nJErLh4NFkuarOVEQK+Rs= +github.com/hashicorp/packer-plugin-sdk v0.5.3/go.mod h1:ntdZSJnc1LGGdMEXsYOxopZL1311QOTIbzVZH2EbN0U= github.com/hashicorp/serf v0.10.1 h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY= github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= github.com/hashicorp/vault/api v1.10.0 h1:/US7sIjWN6Imp4o/Rj1Ce2Nr5bki/AXi9vAW3p2tOJQ= diff --git a/packer/ui.go b/packer/ui.go index c01e9591a54..ca1bec2937c 100644 --- a/packer/ui.go +++ b/packer/ui.go @@ -47,10 +47,18 @@ func (u *ColoredUi) Ask(query string) (string, error) { return u.Ui.Ask(u.colorize(query, u.Color, true)) } +func (u *ColoredUi) Askf(query string, vals ...any) (string, error) { + return u.Ask(fmt.Sprintf(query, vals...)) +} + func (u *ColoredUi) Say(message string) { u.Ui.Say(u.colorize(message, u.Color, true)) } +func (u *ColoredUi) Sayf(message string, vals ...any) { + u.Say(fmt.Sprintf(message, vals...)) +} + func (u *ColoredUi) Message(message string) { u.Ui.Message(u.colorize(message, u.Color, false)) } @@ -64,6 +72,10 @@ func (u *ColoredUi) Error(message string) { u.Ui.Error(u.colorize(message, color, true)) } +func (u *ColoredUi) Errorf(message string, vals ...any) { + u.Error(fmt.Sprintf(message, vals...)) +} + func (u *ColoredUi) Machine(t string, args ...string) { // Don't colorize machine-readable output u.Ui.Machine(t, args...) @@ -121,10 +133,18 @@ func (u *TargetedUI) Ask(query string) (string, error) { return u.Ui.Ask(u.prefixLines(true, query)) } +func (u *TargetedUI) Askf(query string, args ...any) (string, error) { + return u.Ask(fmt.Sprintf(query, args...)) +} + func (u *TargetedUI) Say(message string) { u.Ui.Say(u.prefixLines(true, message)) } +func (u *TargetedUI) Sayf(message string, args ...any) { + u.Say(fmt.Sprintf(message, args...)) +} + func (u *TargetedUI) Message(message string) { u.Ui.Message(u.prefixLines(false, message)) } @@ -133,6 +153,10 @@ func (u *TargetedUI) Error(message string) { u.Ui.Error(u.prefixLines(true, message)) } +func (u *TargetedUI) Errorf(message string, args ...any) { + u.Error(fmt.Sprintf(message, args...)) +} + func (u *TargetedUI) Machine(t string, args ...string) { // Prefix in the target, then pass through u.Ui.Machine(fmt.Sprintf("%s,%s", u.Target, t), args...) @@ -170,10 +194,18 @@ func (u *MachineReadableUi) Ask(query string) (string, error) { return "", errors.New("machine-readable UI can't ask") } +func (u *MachineReadableUi) Askf(query string, args ...any) (string, error) { + return u.Ask(fmt.Sprintf(query, args...)) +} + func (u *MachineReadableUi) Say(message string) { u.Machine("ui", "say", message) } +func (u *MachineReadableUi) Sayf(message string, args ...any) { + u.Say(fmt.Sprintf(message, args...)) +} + func (u *MachineReadableUi) Message(message string) { u.Machine("ui", "message", message) } @@ -182,6 +214,10 @@ func (u *MachineReadableUi) Error(message string) { u.Machine("ui", "error", message) } +func (u *MachineReadableUi) Errorf(message string, args ...any) { + u.Error(fmt.Sprintf(message, args...)) +} + func (u *MachineReadableUi) Machine(category string, args ...string) { now := time.Now().UTC() @@ -232,10 +268,18 @@ func (u *TimestampedUi) Ask(query string) (string, error) { return u.Ui.Ask(query) } +func (u *TimestampedUi) Askf(query string, args ...any) (string, error) { + return u.Ask(fmt.Sprintf(query, args...)) +} + func (u *TimestampedUi) Say(message string) { u.Ui.Say(u.timestampLine(message)) } +func (u *TimestampedUi) Sayf(message string, args ...any) { + u.Say(fmt.Sprintf(message, args...)) +} + func (u *TimestampedUi) Message(message string) { u.Ui.Message(u.timestampLine(message)) } @@ -244,6 +288,10 @@ func (u *TimestampedUi) Error(message string) { u.Ui.Error(u.timestampLine(message)) } +func (u *TimestampedUi) Errorf(message string, args ...any) { + u.Error(fmt.Sprintf(message, args...)) +} + func (u *TimestampedUi) Machine(message string, args ...string) { u.Ui.Machine(message, args...) } From cdaad0cde2170ece81273fb64523c8656749634c Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 16 Apr 2024 13:55:48 -0400 Subject: [PATCH 362/381] version: up version handling code for SDK update Since the SDK was updated and now accepts raw version strings in addition to also supporting metadata officially, we can start using those functions in our version package as well. --- version/version.go | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/version/version.go b/version/version.go index 418d7ea4b62..139025076e6 100644 --- a/version/version.go +++ b/version/version.go @@ -5,7 +5,6 @@ package version import ( _ "embed" - "fmt" "strings" "github.com/hashicorp/go-version" @@ -52,21 +51,14 @@ func FormattedVersion() string { var SemVer *version.Version func init() { - var err error + rawVersion = strings.TrimSpace(rawVersion) - // Note: we use strings.TrimSpace on the version read from version/VERSION - // as it could have trailing whitespaces that must not be part of the - // version string, otherwise version.NewSemver will reject it. - SemVer, err = version.NewSemver(strings.TrimSpace(rawVersion)) - if err != nil { - panic(fmt.Sprintf("Invalid semver version specified in 'version/VERSION' (%q): %s", rawVersion, err)) - } + PackerVersion = pluginVersion.NewRawVersion(rawVersion) + SemVer = PackerVersion.SemVer() - Version = SemVer.Core().String() - VersionPrerelease = SemVer.Prerelease() - VersionMetadata = SemVer.Metadata() - - PackerVersion = pluginVersion.InitializePluginVersion(SemVer.Core().String(), SemVer.Prerelease()) + Version = PackerVersion.GetVersion() + VersionPrerelease = PackerVersion.GetVersionPrerelease() + VersionMetadata = PackerVersion.GetMetadata() } // String returns the complete version string, including prerelease From 7526cd6e7637f25115ab9260f771fe577ea106b5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 17 Apr 2024 22:33:36 -0400 Subject: [PATCH 363/381] build(deps): bump github.com/hashicorp/hcp-sdk-go from 0.90.0 to 0.92.0 (#12935) Bumps [github.com/hashicorp/hcp-sdk-go](https://github.com/hashicorp/hcp-sdk-go) from 0.90.0 to 0.92.0. - [Release notes](https://github.com/hashicorp/hcp-sdk-go/releases) - [Changelog](https://github.com/hashicorp/hcp-sdk-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/hcp-sdk-go/compare/v0.90.0...v0.92.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/hcp-sdk-go dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 37ce0057399..23886fc8d2d 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/hashicorp/go-uuid v1.0.3 github.com/hashicorp/go-version v1.6.0 github.com/hashicorp/hcl/v2 v2.19.1 - github.com/hashicorp/hcp-sdk-go v0.90.0 + github.com/hashicorp/hcp-sdk-go v0.92.0 github.com/hashicorp/packer-plugin-amazon v1.2.1 github.com/hashicorp/packer-plugin-sdk v0.5.3 github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 diff --git a/go.sum b/go.sum index 1162fcdc3d9..cf130d90f4c 100644 --- a/go.sum +++ b/go.sum @@ -313,8 +313,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= -github.com/hashicorp/hcp-sdk-go v0.90.0 h1:dYN7PB9bBYKamjMHPBQnK6d8zphyexHGXw4ddynK2ck= -github.com/hashicorp/hcp-sdk-go v0.90.0/go.mod h1:vQ4fzdL1AmhIAbCw+4zmFe5Hbpajj3NvRWkJoVuxmAk= +github.com/hashicorp/hcp-sdk-go v0.92.0 h1:0D429tlRozQoOjxQOSgaodNUhglhcjTg9n25vWDhkAo= +github.com/hashicorp/hcp-sdk-go v0.92.0/go.mod h1:vQ4fzdL1AmhIAbCw+4zmFe5Hbpajj3NvRWkJoVuxmAk= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR/prTM= From baa67010dea153368d9a37ef51511e10b25322b0 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 22 Apr 2024 14:23:30 -0400 Subject: [PATCH 364/381] Add CHANGELOG entries for 1.10.3 --- CHANGELOG.md | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 34c2b6c5d42..cb8996176e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -95,13 +95,36 @@ If, however, a 1.1.1 release version of the plugin is available, it will have pr └── packer-plugin-amazon_v1.1.1_x5.0_darwin_arm64_SHA256SUM ``` -## 1.10.3 (Upcoming) +## 1.10.3 (April 22, 2024) + +### NOTES +* A LICENSE.txt file has been added to the Packer release artifacts. + [GH-12981](https://github.com/hashicorp/packer/pull/12931) + +### FEATURES +* Packer users can now track Packer version and plugin versions used for each + build artifact in HCP Packer. + [GH-12891](https://github.com/hashicorp/packer/pull/12891) + [GH-12910](https://github.com/hashicorp/packer/pull/12910) + [GH-12923](https://github.com/hashicorp/packer/pull/12923) + [GH-12926](https://github.com/hashicorp/packer/pull/12926) ### IMPROVEMENTS: * cmd/fmt: Display actual parsing errors when the `packer fmt` fails to read a template containing invalid HCL2 syntax. [GH-12870](https://github.com/hashicorp/packer/pull/12870) +### SECURITY +* Bump github.com/go-jose/go-jose/v3 to address GHSA-c5q2-7r4c-mv6g. + [GH-12928](https://github.com/hashicorp/packer/pull/12928) +* Bump golang.org/x/net to v0.24.0 to address GO-2024-2687. + [GH-12924](https://github.com/hashicorp/packer/pull/12924) + +### BUG FIXES +* cmd/fmt: Display information error when Packer `fmt` fails due to HCL2 + parsing error. [GH-12870](https://github.com/hashicorp/packer/pull/12870) + + ## 1.10.2 (March 6, 2024) ### NOTES: From 094e00ebd2c462784fa2848b39ee4cb6e5a0f5bc Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 23 Apr 2024 09:26:25 -0400 Subject: [PATCH 365/381] Update CHANGELOG --- CHANGELOG.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cb8996176e1..a62efc7d4ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -109,11 +109,6 @@ If, however, a 1.1.1 release version of the plugin is available, it will have pr [GH-12923](https://github.com/hashicorp/packer/pull/12923) [GH-12926](https://github.com/hashicorp/packer/pull/12926) -### IMPROVEMENTS: -* cmd/fmt: Display actual parsing errors when the `packer fmt` fails to read a - template containing invalid HCL2 syntax. - [GH-12870](https://github.com/hashicorp/packer/pull/12870) - ### SECURITY * Bump github.com/go-jose/go-jose/v3 to address GHSA-c5q2-7r4c-mv6g. [GH-12928](https://github.com/hashicorp/packer/pull/12928) From f767d06f931d9f1ba421ca18806dc4892c7440d6 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 23 Apr 2024 09:20:45 -0400 Subject: [PATCH 366/381] Dockerfile: Add Product directory to /usr/share/doc directory Closes: #12939 --- Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index b4b97dc44fb..e7146a888f9 100644 --- a/Dockerfile +++ b/Dockerfile @@ -51,7 +51,8 @@ LABEL name="Packer" \ RUN apk add --no-cache git bash wget openssl gnupg xorriso COPY dist/$TARGETOS/$TARGETARCH/$BIN_NAME /bin/ -COPY LICENSE /usr/share/doc/$PRODUCT_NAME/LICENSE.txt +RUN mkdir -p /usr/share/doc/Packer +COPY LICENSE /usr/share/doc/Packer/LICENSE.txt ENTRYPOINT ["/bin/packer"] From 410e59f141fb6c0391bbba67d79bdd3631732814 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Tue, 16 Apr 2024 15:45:53 -0400 Subject: [PATCH 367/381] version: compute SemVer from rawVersion A bug in the SDK prevents us from calling SemVer on the PluginVersion derived from the rawVersion, as when doing so, we reset the semVer attribute to only use the core part of the version, thereby dropping any information on pre-release/metadata. This is not ideal, and arguably not wanted. So in order to not lose this information, we re-compute the SemVer from rawVersion, this way we don't overwrite it for both structures. --- version/version.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/version/version.go b/version/version.go index 139025076e6..edb5a9412da 100644 --- a/version/version.go +++ b/version/version.go @@ -54,7 +54,11 @@ func init() { rawVersion = strings.TrimSpace(rawVersion) PackerVersion = pluginVersion.NewRawVersion(rawVersion) - SemVer = PackerVersion.SemVer() + // A bug in the SDK prevents us from calling SemVer on the PluginVersion + // derived from the rawVersion, as when doing so, we reset the semVer + // attribute to only use the core part of the version, thereby dropping any + // information on pre-release/metadata. + SemVer, _ = version.NewVersion(rawVersion) Version = PackerVersion.GetVersion() VersionPrerelease = PackerVersion.GetVersionPrerelease() From 00f39e72d35b981e57d099ac2e65e2f7fe774d17 Mon Sep 17 00:00:00 2001 From: Jiaqi Liu Date: Mon, 29 Apr 2024 22:04:20 +0800 Subject: [PATCH 368/381] Add missing option doc for 'packer fmt' (#12944) --- website/content/docs/commands/fmt.mdx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/website/content/docs/commands/fmt.mdx b/website/content/docs/commands/fmt.mdx index be66e3eda39..d082f9afc7c 100644 --- a/website/content/docs/commands/fmt.mdx +++ b/website/content/docs/commands/fmt.mdx @@ -52,4 +52,7 @@ $ cat my-template.pkr.hcl | packer fmt - - `-write=false` - Don't write formatting changes to source files (always disabled if using -check) -- `-` - read formatting changes from stdin and write them to stdout. \ No newline at end of file +- `-` - read formatting changes from stdin and write them to stdout. + +- `recursive` Also process files in subdirectories. By default, only the + given directory (or current directory) is processed. \ No newline at end of file From 1bf3e86ee1b435334d791c83c878db1288c9e41f Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Wed, 17 Apr 2024 16:44:47 -0400 Subject: [PATCH 369/381] hcl2template: fix invalid_inexplicit_source_2 test The invalid_inexplicit_source_2 subtest for parse used to fail in previous versions of Packer, but with the latest changes to plugin source management, it won't, at least at parsing time, instead it fails later when the Github getter (the only available for now) cannot get the plugin binary from the source, as the source is not a valid Github URI. --- hcl2template/types.packer_config_test.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/hcl2template/types.packer_config_test.go b/hcl2template/types.packer_config_test.go index 391899e9234..eec35860ee1 100644 --- a/hcl2template/types.packer_config_test.go +++ b/hcl2template/types.packer_config_test.go @@ -644,13 +644,26 @@ func TestParser_no_init(t *testing.T) { }{ VersionConstraints: nil, RequiredPlugins: []*RequiredPlugins{ - {}, + { + RequiredPlugins: map[string]*RequiredPlugin{ + "amazon": { + Name: "amazon", + Source: "hashicorp/amazon", + Type: &addrs.Plugin{ + Source: "hashicorp/amazon", + }, + Requirement: VersionConstraint{ + Required: mustVersionConstraints(version.NewConstraint(">= v0")), + }, + }, + }, + }, }, }, CorePackerVersionString: lockedVersion, Basedir: filepath.Clean("testdata/init"), }, - true, true, + false, false, []packersdk.Build{}, false, }, From 6fc1d154bdac4c8f6c4b823c90aab517dee77498 Mon Sep 17 00:00:00 2001 From: Lucas Bajolet Date: Thu, 4 Apr 2024 16:23:28 -0400 Subject: [PATCH 370/381] packer: relax constraints on sources The source parsing logic was heavily directed towards Github compatible source URIs, however if we want to support more cases, we need to make sure we are able to specify those URIs, and to load plugins installed from those sources. Right now, since the getters available are only github.com, we will not support remotely instlling plugins from sources other than github.com, with the same set of constraints as before. However, we do support now installing from a local plugin binary to any kind of source, and we support loading them, including if a template wants this plugin installed locally with version constraints. --- acctest/plugin/component_acc_test.go | 4 +- acctest/plugin/plugin_acc_test.go | 53 +++----- command/plugins_install.go | 2 +- hcl2template/addrs/plugin.go | 134 +++++++++++--------- hcl2template/addrs/plugin_test.go | 104 +++++++++++++-- hcl2template/types.packer_config_test.go | 24 +--- hcl2template/types.required_plugins_test.go | 6 +- packer/plugin-getter/github/getter.go | 45 ++++++- packer/plugin-getter/plugins.go | 74 +++++++++-- packer/plugin-getter/plugins_test.go | 11 +- 10 files changed, 294 insertions(+), 163 deletions(-) diff --git a/acctest/plugin/component_acc_test.go b/acctest/plugin/component_acc_test.go index 53a49ad229c..14d0e5702d0 100644 --- a/acctest/plugin/component_acc_test.go +++ b/acctest/plugin/component_acc_test.go @@ -22,9 +22,7 @@ var basicAmazonAmiDatasourceHCL2Template string func TestAccInitAndBuildBasicAmazonAmiDatasource(t *testing.T) { plugin := addrs.Plugin{ - Hostname: "github.com", - Namespace: "hashicorp", - Type: "amazon", + Source: "github.com/hashicorp/amazon", } testCase := &acctest.PluginTestCase{ Name: "amazon-ami_basic_datasource_test", diff --git a/acctest/plugin/plugin_acc_test.go b/acctest/plugin/plugin_acc_test.go index b2afe7e8162..c9eec1fbc2b 100644 --- a/acctest/plugin/plugin_acc_test.go +++ b/acctest/plugin/plugin_acc_test.go @@ -18,7 +18,7 @@ import ( "github.com/hashicorp/packer-plugin-sdk/acctest" "github.com/hashicorp/packer-plugin-sdk/acctest/testutils" "github.com/hashicorp/packer/hcl2template/addrs" - "github.com/mitchellh/go-homedir" + "github.com/hashicorp/packer/packer" ) //go:embed test-fixtures/basic-amazon-ebs.pkr.hcl @@ -26,9 +26,7 @@ var basicAmazonEbsHCL2Template string func TestAccInitAndBuildBasicAmazonEbs(t *testing.T) { plugin := addrs.Plugin{ - Hostname: "github.com", - Namespace: "hashicorp", - Type: "amazon", + Source: "github.com/hashicorp/amazon", } testCase := &acctest.PluginTestCase{ Name: "amazon-ebs_basic_plugin_init_and_build_test", @@ -69,27 +67,22 @@ func TestAccInitAndBuildBasicAmazonEbs(t *testing.T) { acctest.TestPlugin(t, testCase) } -func cleanupPluginInstallation(plugin addrs.Plugin) error { - home, err := homedir.Dir() +func pluginDirectory(plugin addrs.Plugin) (string, error) { + pluginDir, err := packer.PluginFolder() if err != nil { - return err + return "", err } - pluginPath := filepath.Join(home, - ".packer.d", - "plugins", - plugin.Hostname, - plugin.Namespace, - plugin.Type) - if xdgConfigHome := os.Getenv("XDG_CONFIG_HOME"); xdgConfigHome != "" { - pluginPath = filepath.Join(xdgConfigHome, - "packer", - "plugins", - plugin.Hostname, - plugin.Namespace, - plugin.Type) - } + pluginParts := []string{pluginDir} + pluginParts = append(pluginParts, plugin.Parts()...) + return filepath.Join(pluginParts...), nil +} +func cleanupPluginInstallation(plugin addrs.Plugin) error { + pluginPath, err := pluginDirectory(plugin) + if err != nil { + return err + } testutils.CleanupFiles(pluginPath) return nil } @@ -100,27 +93,11 @@ func checkPluginInstallation(initOutput string, plugin addrs.Plugin) error { return fmt.Errorf("logs doesn't contain expected foo value %q", initOutput) } - home, err := homedir.Dir() + pluginPath, err := pluginDirectory(plugin) if err != nil { return err } - pluginPath := filepath.Join(home, - ".packer.d", - "plugins", - plugin.Hostname, - plugin.Namespace, - plugin.Type) - - if xdgConfigHome := os.Getenv("XDG_CONFIG_HOME"); xdgConfigHome != "" { - pluginPath = filepath.Join(xdgConfigHome, - "packer", - "plugins", - plugin.Hostname, - plugin.Namespace, - plugin.Type) - } - if !testutils.FileExists(pluginPath) { return fmt.Errorf("%s plugin installation not found", plugin.String()) } diff --git a/command/plugins_install.go b/command/plugins_install.go index 4360de41141..59e197a3f6a 100644 --- a/command/plugins_install.go +++ b/command/plugins_install.go @@ -308,7 +308,7 @@ func (c *PluginsInstallCommand) InstallFromBinary(opts plugingetter.ListInstalla outputPrefix := fmt.Sprintf( "packer-plugin-%s_v%s_%s", - pluginIdentifier.Type, + pluginIdentifier.Name(), noMetaVersion, desc.APIVersion, ) diff --git a/hcl2template/addrs/plugin.go b/hcl2template/addrs/plugin.go index 9db29b31717..2baae570365 100644 --- a/hcl2template/addrs/plugin.go +++ b/hcl2template/addrs/plugin.go @@ -5,6 +5,8 @@ package addrs import ( "fmt" + "net/url" + "path" "strings" "github.com/hashicorp/hcl/v2" @@ -13,21 +15,31 @@ import ( // Plugin encapsulates a single plugin type. type Plugin struct { - Hostname string - Namespace string - Type string + Source string } -func (p Plugin) RealRelativePath() string { - return p.Namespace + "/packer-plugin-" + p.Type +// Parts returns the list of components of the source URL, starting with the +// host, and ending with the name of the plugin. +// +// This will correspond more or less to the filesystem hierarchy where +// the plugin is installed. +func (p Plugin) Parts() []string { + return strings.FieldsFunc(p.Source, func(r rune) bool { + return r == '/' + }) } -func (p Plugin) Parts() []string { - return []string{p.Hostname, p.Namespace, p.Type} +// Name returns the raw name of the plugin from its source +// +// Exemples: +// - "github.com/hashicorp/amazon" -> "amazon" +func (p Plugin) Name() string { + parts := p.Parts() + return parts[len(parts)-1] } func (p Plugin) String() string { - return strings.Join(p.Parts(), "/") + return p.Source } // ParsePluginPart processes an addrs.Plugin namespace or type string @@ -98,67 +110,66 @@ func IsPluginPartNormalized(str string) (bool, error) { // // The following are valid source string formats: // -// name // namespace/name // hostname/namespace/name func ParsePluginSourceString(str string) (*Plugin, hcl.Diagnostics) { - ret := &Plugin{ - Hostname: "", - Namespace: "", - } var diags hcl.Diagnostics - // split the source string into individual components - parts := strings.Split(str, "/") - if len(parts) != 3 { - diags = diags.Append(&hcl.Diagnostic{ - Severity: hcl.DiagError, - Summary: "Invalid plugin source string", - Detail: `The "source" attribute must be in the format "hostname/namespace/name"`, - }) - return nil, diags + var errs []string + + if strings.HasPrefix(str, "/") { + errs = append(errs, "A source URL must not start with a '/' character.") } - // check for an invalid empty string in any part - for i := range parts { - if parts[i] == "" { - diags = diags.Append(&hcl.Diagnostic{ - Severity: hcl.DiagError, - Summary: "Invalid plugin source string", - Detail: `The "source" attribute must be in the format "hostname/namespace/name"`, - }) - return nil, diags - } + if strings.HasSuffix(str, "/") { + errs = append(errs, "A source URL must not end with a '/' character.") } - // check the 'name' portion, which is always the last part - givenName := parts[len(parts)-1] - name, err := ParsePluginPart(givenName) + if !strings.Contains(str, "/") { + errs = append(errs, "A source URL must at least contain a host and a path.") + } + + url, err := url.Parse(str) if err != nil { - diags = diags.Append(&hcl.Diagnostic{ + errs = append(errs, fmt.Sprintf("Failed to parse source URL: %s", err)) + } + + if url != nil && url.Scheme != "" { + errs = append(errs, "A source URL must not contain a scheme (e.g. https://).") + } + + if url != nil && url.RawQuery != "" { + errs = append(errs, "A source URL must not contain a query (e.g. ?var=val)") + } + + if url != nil && url.Fragment != "" { + errs = append(errs, "A source URL must not contain a fragment (e.g. #anchor).") + } + + if errs != nil { + errsMsg := &strings.Builder{} + for _, err := range errs { + fmt.Fprintf(errsMsg, "* %s\n", err) + } + + return nil, diags.Append(&hcl.Diagnostic{ Severity: hcl.DiagError, - Summary: "Invalid plugin type", - Detail: fmt.Sprintf(`Invalid plugin type %q in source %q: %s"`, givenName, str, err), + Summary: "Malformed source URL", + Detail: fmt.Sprintf("The provided source URL %q is invalid. The following errors have been discovered:\n%s\nA valid source looks like \"github.com/hashicorp/happycloud\"", str, errsMsg), }) - return nil, diags } - ret.Type = name - // the namespace is always the second-to-last part - givenNamespace := parts[len(parts)-2] - namespace, err := ParsePluginPart(givenNamespace) + // check the 'name' portion, which is always the last part + _, givenName := path.Split(str) + _, err = ParsePluginPart(givenName) if err != nil { diags = diags.Append(&hcl.Diagnostic{ Severity: hcl.DiagError, - Summary: "Invalid plugin namespace", - Detail: fmt.Sprintf(`Invalid plugin namespace %q in source %q: %s"`, namespace, str, err), + Summary: "Invalid plugin type", + Detail: fmt.Sprintf(`Invalid plugin type %q in source %q: %s"`, givenName, str, err), }) return nil, diags } - ret.Namespace = namespace - - // the hostname is always the first part in a three-part source string - ret.Hostname = parts[0] // Due to how plugin executables are named and plugin git repositories // are conventionally named, it's a reasonable and @@ -171,8 +182,8 @@ func ParsePluginSourceString(str string) (*Plugin, hcl.Diagnostics) { // packer-plugin- prefix to help them self-correct. const redundantPrefix = "packer-" const userErrorPrefix = "packer-plugin-" - if strings.HasPrefix(ret.Type, redundantPrefix) { - if strings.HasPrefix(ret.Type, userErrorPrefix) { + if strings.HasPrefix(givenName, redundantPrefix) { + if strings.HasPrefix(givenName, userErrorPrefix) { // Likely user error. We only return this specialized error if // whatever is after the prefix would otherwise be a // syntactically-valid plugin type, so we don't end up advising @@ -181,32 +192,33 @@ func ParsePluginSourceString(str string) (*Plugin, hcl.Diagnostics) { // (This is mainly just for robustness, because the validation // we already did above should've rejected most/all ways for // the suggestedType to end up invalid here.) - suggestedType := ret.Type[len(userErrorPrefix):] + suggestedType := strings.Replace(givenName, userErrorPrefix, "", -1) if _, err := ParsePluginPart(suggestedType); err == nil { - suggestedAddr := ret - suggestedAddr.Type = suggestedType - diags = diags.Append(&hcl.Diagnostic{ + return nil, diags.Append(&hcl.Diagnostic{ Severity: hcl.DiagError, Summary: "Invalid plugin type", Detail: fmt.Sprintf("Plugin source %q has a type with the prefix %q, which isn't valid. "+ "Although that prefix is often used in the names of version control repositories for Packer plugins, "+ "plugin source strings should not include it.\n"+ - "\nDid you mean %q?", ret, userErrorPrefix, suggestedAddr), + "\nDid you mean %q?", str, userErrorPrefix, suggestedType), }) - return nil, diags } } // Otherwise, probably instead an incorrectly-named plugin, perhaps // arising from a similar instinct to what causes there to be // thousands of Python packages on PyPI with "python-"-prefixed // names. - diags = diags.Append(&hcl.Diagnostic{ + return nil, diags.Append(&hcl.Diagnostic{ Severity: hcl.DiagError, Summary: "Invalid plugin type", - Detail: fmt.Sprintf("Plugin source %q has a type with the prefix %q, which isn't allowed because it would be redundant to name a Packer plugin with that prefix. If you are the author of this plugin, rename it to not include the prefix.", ret, redundantPrefix), + Detail: fmt.Sprintf("Plugin source %q has a type with the prefix %q, which isn't allowed "+ + "because it would be redundant to name a Packer plugin with that prefix. "+ + "If you are the author of this plugin, rename it to not include the prefix.", + str, redundantPrefix), }) - return nil, diags } - return ret, diags + return &Plugin{ + Source: str, + }, diags } diff --git a/hcl2template/addrs/plugin_test.go b/hcl2template/addrs/plugin_test.go index e99a72416b8..60af038bedd 100644 --- a/hcl2template/addrs/plugin_test.go +++ b/hcl2template/addrs/plugin_test.go @@ -6,29 +6,109 @@ package addrs import ( "reflect" "testing" + + "github.com/google/go-cmp/cmp" ) -func TestParsePluginSourceString(t *testing.T) { - type args struct { - str string - } +func TestPluginParseSourceString(t *testing.T) { tests := []struct { - args args + name string + source string want *Plugin wantDiags bool }{ - {args{"potato"}, nil, true}, - {args{"hashicorp/azr"}, nil, true}, - {args{"github.com/hashicorp/azr"}, &Plugin{"github.com", "hashicorp", "azr"}, false}, + {"invalid: only one component, rejected", "potato", nil, true}, + {"valid: two components in name", "hashicorp/azr", &Plugin{"hashicorp/azr"}, false}, + {"valid: three components, nothing superfluous", "github.com/hashicorp/azr", &Plugin{"github.com/hashicorp/azr"}, false}, + {"invalid: trailing slash", "github.com/hashicorp/azr/", nil, true}, + {"invalid: reject because scheme specified", "https://github.com/hashicorp/azr", nil, true}, + {"invalid: reject because query non nil", "github.com/hashicorp/azr?arg=1", nil, true}, + {"invalid: reject because fragment present", "github.com/hashicorp/azr#anchor", nil, true}, + {"invalid: leading and trailing slashes are removed", "/github.com/hashicorp/azr/", nil, true}, + {"invalid: leading slashes are removed", "/github.com/hashicorp/azr", nil, true}, + {"invalid: plugin name contains packer-", "/github.com/hashicorp/packer-azr", nil, true}, + {"invalid: plugin name contains packer-plugin-", "/github.com/hashicorp/packer-plugin-azr", nil, true}, } for _, tt := range tests { - t.Run(tt.args.str, func(t *testing.T) { - got, gotDiags := ParsePluginSourceString(tt.args.str) + t.Run(tt.name, func(t *testing.T) { + got, gotDiags := ParsePluginSourceString(tt.source) if !reflect.DeepEqual(got, tt.want) { t.Errorf("ParsePluginSourceString() got = %v, want %v", got, tt.want) } - if tt.wantDiags == (len(gotDiags) == 0) { - t.Errorf("Unexpected diags %s", gotDiags) + if tt.wantDiags && len(gotDiags) == 0 { + t.Errorf("Expected diags, but got none") + } + if !tt.wantDiags && len(gotDiags) != 0 { + t.Errorf("Unexpected diags: %s", gotDiags) + } + }) + } +} + +func TestPluginName(t *testing.T) { + tests := []struct { + name string + pluginString string + expectName string + }{ + { + "valid minimal name", + "github.com/hashicorp/amazon", + "amazon", + }, + { + // Technically we can call `Name` on a plugin created manually + // but this is invalid as the Source's Name should not contain + // `packer-plugin-`. + "invalid name with prefix", + "github.com/hashicorp/packer-plugin-amazon", + "packer-plugin-amazon", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + plug := &Plugin{ + Source: tt.pluginString, + } + + name := plug.Name() + if name != tt.expectName { + t.Errorf("Expected plugin %q to have %q as name, got %q", tt.pluginString, tt.expectName, name) + } + }) + } +} + +func TestPluginParts(t *testing.T) { + tests := []struct { + name string + pluginSource string + expectedParts []string + }{ + { + "valid with two parts", + "factiartory.com/packer", + []string{"factiartory.com", "packer"}, + }, + { + "valid with four parts", + "factiartory.com/hashicrop/fields/packer", + []string{"factiartory.com", "hashicrop", "fields", "packer"}, + }, + { + "valid, with double-slashes in the name", + "factiartory.com/hashicrop//fields/packer//", + []string{"factiartory.com", "hashicrop", "fields", "packer"}, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + plugin := &Plugin{tt.pluginSource} + diff := cmp.Diff(plugin.Parts(), tt.expectedParts) + if diff != "" { + t.Errorf("Difference found between expected and computed parts: %s", diff) } }) } diff --git a/hcl2template/types.packer_config_test.go b/hcl2template/types.packer_config_test.go index eec35860ee1..10a0e73a7a2 100644 --- a/hcl2template/types.packer_config_test.go +++ b/hcl2template/types.packer_config_test.go @@ -474,9 +474,7 @@ func TestParser_no_init(t *testing.T) { Name: "amazon", Source: "github.com/hashicorp/amazon", Type: &addrs.Plugin{ - Type: "amazon", - Namespace: "hashicorp", - Hostname: "github.com", + Source: "github.com/hashicorp/amazon", }, Requirement: VersionConstraint{ Required: mustVersionConstraints(version.NewConstraint(">= v0")), @@ -486,9 +484,7 @@ func TestParser_no_init(t *testing.T) { Name: "amazon-v1", Source: "github.com/hashicorp/amazon", Type: &addrs.Plugin{ - Type: "amazon", - Namespace: "hashicorp", - Hostname: "github.com", + Source: "github.com/hashicorp/amazon", }, Requirement: VersionConstraint{ Required: mustVersionConstraints(version.NewConstraint(">= v1")), @@ -498,9 +494,7 @@ func TestParser_no_init(t *testing.T) { Name: "amazon-v2", Source: "github.com/hashicorp/amazon", Type: &addrs.Plugin{ - Type: "amazon", - Namespace: "hashicorp", - Hostname: "github.com", + Source: "github.com/hashicorp/amazon", }, Requirement: VersionConstraint{ Required: mustVersionConstraints(version.NewConstraint(">= v2")), @@ -510,9 +504,7 @@ func TestParser_no_init(t *testing.T) { Name: "amazon-v3", Source: "github.com/hashicorp/amazon", Type: &addrs.Plugin{ - Type: "amazon", - Namespace: "hashicorp", - Hostname: "github.com", + Source: "github.com/hashicorp/amazon", }, Requirement: VersionConstraint{ Required: mustVersionConstraints(version.NewConstraint(">= v3")), @@ -522,9 +514,7 @@ func TestParser_no_init(t *testing.T) { Name: "amazon-v3-azr", Source: "github.com/azr/amazon", Type: &addrs.Plugin{ - Type: "amazon", - Namespace: "azr", - Hostname: "github.com", + Source: "github.com/azr/amazon", }, Requirement: VersionConstraint{ Required: mustVersionConstraints(version.NewConstraint(">= v3")), @@ -534,9 +524,7 @@ func TestParser_no_init(t *testing.T) { Name: "amazon-v4", Source: "github.com/hashicorp/amazon", Type: &addrs.Plugin{ - Type: "amazon", - Namespace: "hashicorp", - Hostname: "github.com", + Source: "github.com/hashicorp/amazon", }, Requirement: VersionConstraint{ Required: mustVersionConstraints(version.NewConstraint(">= v4")), diff --git a/hcl2template/types.required_plugins_test.go b/hcl2template/types.required_plugins_test.go index 0329d1505ff..8a44b6e170e 100644 --- a/hcl2template/types.required_plugins_test.go +++ b/hcl2template/types.required_plugins_test.go @@ -42,7 +42,7 @@ func TestPackerConfig_required_plugin_parse(t *testing.T) { "amazon": { Name: "amazon", Source: "github.com/hashicorp/amazon", - Type: &addrs.Plugin{Hostname: "github.com", Namespace: "hashicorp", Type: "amazon"}, + Type: &addrs.Plugin{Source: "github.com/hashicorp/amazon"}, Requirement: VersionConstraint{ Required: mustVersionConstraints(version.NewConstraint("~> v1.2.3")), }, @@ -72,7 +72,7 @@ func TestPackerConfig_required_plugin_parse(t *testing.T) { "amazon": { Name: "amazon", Source: "github.com/azr/amazon", - Type: &addrs.Plugin{Hostname: "github.com", Namespace: "azr", Type: "amazon"}, + Type: &addrs.Plugin{Source: "github.com/azr/amazon"}, Requirement: VersionConstraint{ Required: mustVersionConstraints(version.NewConstraint("~> v1.2.3")), }, @@ -103,7 +103,7 @@ func TestPackerConfig_required_plugin_parse(t *testing.T) { "amazon": { Name: "amazon", Source: "github.com/azr/amazon", - Type: &addrs.Plugin{Hostname: "github.com", Namespace: "azr", Type: "amazon"}, + Type: &addrs.Plugin{Source: "github.com/azr/amazon"}, Requirement: VersionConstraint{ Required: mustVersionConstraints(version.NewConstraint("~> v1.2.3")), }, diff --git a/packer/plugin-getter/github/getter.go b/packer/plugin-getter/github/getter.go index a4942a42163..e4cd4f603b2 100644 --- a/packer/plugin-getter/github/getter.go +++ b/packer/plugin-getter/github/getter.go @@ -14,10 +14,12 @@ import ( "log" "net/http" "os" + "path" "path/filepath" "strings" "github.com/google/go-github/v33/github" + "github.com/hashicorp/packer/hcl2template/addrs" plugingetter "github.com/hashicorp/packer/packer/plugin-getter" "golang.org/x/oauth2" ) @@ -156,10 +158,40 @@ func (t *HostSpecificTokenAuthTransport) base() http.RoundTripper { return http.DefaultTransport } +type GithubPlugin struct { + Hostname string + Namespace string + Type string +} + +func NewGithubPlugin(source *addrs.Plugin) (*GithubPlugin, error) { + parts := source.Parts() + if len(parts) != 3 { + return nil, fmt.Errorf("Invalid github.com URI %q: a Github-compatible source must be in the github.com// format.", source.String()) + } + + if parts[0] != defaultHostname { + return nil, fmt.Errorf("%q doesn't appear to be a valid %q source address; check source and try again.", source.String(), defaultHostname) + } + + return &GithubPlugin{ + Hostname: parts[0], + Namespace: parts[1], + Type: strings.Replace(parts[2], "packer-plugin-", "", 1), + }, nil +} + +func (gp GithubPlugin) RealRelativePath() string { + return path.Join( + gp.Namespace, + fmt.Sprintf("packer-plugin-%s", gp.Type), + ) +} + func (g *Getter) Get(what string, opts plugingetter.GetOptions) (io.ReadCloser, error) { - if opts.PluginRequirement.Identifier.Hostname != defaultHostname { - s := opts.PluginRequirement.Identifier.String() + " doesn't appear to be a valid " + defaultHostname + " source address; check source and try again." - return nil, errors.New(s) + ghURI, err := NewGithubPlugin(opts.PluginRequirement.Identifier) + if err != nil { + return nil, err } ctx := context.TODO() @@ -188,19 +220,18 @@ func (g *Getter) Get(what string, opts plugingetter.GetOptions) (io.ReadCloser, } var req *http.Request - var err error transform := func(in io.ReadCloser) (io.ReadCloser, error) { return in, nil } switch what { case "releases": - u := filepath.ToSlash("/repos/" + opts.PluginRequirement.Identifier.RealRelativePath() + "/git/matching-refs/tags") + u := filepath.ToSlash("/repos/" + ghURI.RealRelativePath() + "/git/matching-refs/tags") req, err = g.Client.NewRequest("GET", u, nil) transform = transformVersionStream case "sha256": // something like https://github.com/sylviamoss/packer-plugin-comment/releases/download/v0.2.11/packer-plugin-comment_v0.2.11_x5_SHA256SUMS - u := filepath.ToSlash("https://github.com/" + opts.PluginRequirement.Identifier.RealRelativePath() + "/releases/download/" + opts.Version() + "/" + opts.PluginRequirement.FilenamePrefix() + opts.Version() + "_SHA256SUMS") + u := filepath.ToSlash("https://github.com/" + ghURI.RealRelativePath() + "/releases/download/" + opts.Version() + "/" + opts.PluginRequirement.FilenamePrefix() + opts.Version() + "_SHA256SUMS") req, err = g.Client.NewRequest( "GET", u, @@ -208,7 +239,7 @@ func (g *Getter) Get(what string, opts plugingetter.GetOptions) (io.ReadCloser, ) transform = transformChecksumStream() case "zip": - u := filepath.ToSlash("https://github.com/" + opts.PluginRequirement.Identifier.RealRelativePath() + "/releases/download/" + opts.Version() + "/" + opts.ExpectedZipFilename()) + u := filepath.ToSlash("https://github.com/" + ghURI.RealRelativePath() + "/releases/download/" + opts.Version() + "/" + opts.ExpectedZipFilename()) req, err = g.Client.NewRequest( "GET", u, diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index 402ab92f1c4..69c49387030 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -9,6 +9,7 @@ import ( "encoding/json" "fmt" "io" + "io/fs" "log" "os" "os/exec" @@ -96,13 +97,66 @@ func (pr Requirement) FilenamePrefix() string { if pr.Identifier == nil { return "packer-plugin-" } - return "packer-plugin-" + pr.Identifier.Type + "_" + + return "packer-plugin-" + pr.Identifier.Name() + "_" } func (opts BinaryInstallationOptions) FilenameSuffix() string { return "_" + opts.OS + "_" + opts.ARCH + opts.Ext } +// getPluginBinaries lists the plugin binaries installed locally. +// +// Each plugin binary must be in the right hierarchy (not root) and has to be +// conforming to the packer-plugin-____ convention. +func (pr Requirement) getPluginBinaries(opts ListInstallationsOptions) ([]string, error) { + var matches []string + + rootdir := opts.PluginDirectory + if pr.Identifier != nil { + rootdir = filepath.Join(rootdir, path.Dir(pr.Identifier.Source)) + } + + if _, err := os.Lstat(rootdir); err != nil { + log.Printf("Directory %q does not exist, the plugin likely isn't installed locally yet.", rootdir) + return matches, nil + } + + err := filepath.WalkDir(rootdir, func(path string, d fs.DirEntry, err error) error { + if err != nil { + return err + } + + // No need to inspect directory entries, we can continue walking + if d.IsDir() { + return nil + } + + // Skip plugins installed at root, only those in a hierarchy should be considered valid + if filepath.Dir(path) == opts.PluginDirectory { + return nil + } + + // If the binary's name doesn't start with packer-plugin-, we skip it. + if !strings.HasPrefix(filepath.Base(path), pr.FilenamePrefix()) { + return nil + } + // If the binary's name doesn't match the expected convention, we skip it + if !strings.HasSuffix(filepath.Base(path), opts.FilenameSuffix()) { + return nil + } + + matches = append(matches, path) + + return nil + }) + if err != nil { + return nil, err + } + + return matches, err +} + // ListInstallations lists unique installed versions of plugin Requirement pr // with opts as a filter. // @@ -113,21 +167,13 @@ func (opts BinaryInstallationOptions) FilenameSuffix() string { // considered. func (pr Requirement) ListInstallations(opts ListInstallationsOptions) (InstallList, error) { res := InstallList{} - FilenamePrefix := pr.FilenamePrefix() - filenameSuffix := opts.FilenameSuffix() log.Printf("[TRACE] listing potential installations for %q that match %q. %#v", pr.Identifier, pr.VersionConstraints, opts) - glob := "" - if pr.Identifier == nil { - glob = filepath.Join(opts.PluginDirectory, "*", "*", "*", FilenamePrefix+"*"+filenameSuffix) - } else { - glob = filepath.Join(opts.PluginDirectory, pr.Identifier.Hostname, pr.Identifier.Namespace, pr.Identifier.Type, FilenamePrefix+"*"+filenameSuffix) - } - - matches, err := filepath.Glob(glob) + matches, err := pr.getPluginBinaries(opts) if err != nil { - return nil, fmt.Errorf("ListInstallations: %q failed to list binaries in folder: %v", pr.Identifier.String(), err) + return nil, fmt.Errorf("ListInstallations: failed to list installed plugins: %s", err) } + for _, path := range matches { fname := filepath.Base(path) if fname == "." { @@ -156,8 +202,8 @@ func (pr Requirement) ListInstallations(opts ListInstallationsOptions) (InstallL } // base name could look like packer-plugin-amazon_v1.2.3_x5.1_darwin_amd64.exe - versionsStr := strings.TrimPrefix(fname, FilenamePrefix) - versionsStr = strings.TrimSuffix(versionsStr, filenameSuffix) + versionsStr := strings.TrimPrefix(fname, pr.FilenamePrefix()) + versionsStr = strings.TrimSuffix(versionsStr, opts.FilenameSuffix()) if pr.Identifier == nil { if idx := strings.Index(versionsStr, "_"); idx > 0 { diff --git a/packer/plugin-getter/plugins_test.go b/packer/plugin-getter/plugins_test.go index e92e636b1d2..85bcab42e80 100644 --- a/packer/plugin-getter/plugins_test.go +++ b/packer/plugin-getter/plugins_test.go @@ -35,9 +35,7 @@ func TestChecksumFileEntry_init(t *testing.T) { expectedVersion := "v0.3.0" req := &Requirement{ Identifier: &addrs.Plugin{ - Hostname: "github.com", - Namespace: "ddelnano", - Type: "xenserver", + Source: "github.com/ddelnano/xenserver", }, } @@ -460,9 +458,10 @@ func (g *mockPluginGetter) Get(what string, options GetOptions) (io.ReadCloser, } toEncode = enc case "zip": - acc := options.PluginRequirement.Identifier.Hostname + "/" + - options.PluginRequirement.Identifier.RealRelativePath() + "/" + - options.ExpectedZipFilename() + // Note: we'll act as if the plugin sources would always be github sources for now. + // This test will need to be updated if/when we move on to support other sources. + parts := options.PluginRequirement.Identifier.Parts() + acc := fmt.Sprintf("%s/%s/packer-plugin-%s/%s", parts[0], parts[1], parts[2], options.ExpectedZipFilename()) zip, found := g.Zips[acc] if found == false { From 26b2bb8dbf6342df1212ac0ef9af26e7f8bb9a3c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 30 Apr 2024 09:52:54 -0400 Subject: [PATCH 371/381] build(deps): bump github.com/hashicorp/hcp-sdk-go from 0.92.0 to 0.93.0 (#12942) Bumps [github.com/hashicorp/hcp-sdk-go](https://github.com/hashicorp/hcp-sdk-go) from 0.92.0 to 0.93.0. - [Release notes](https://github.com/hashicorp/hcp-sdk-go/releases) - [Changelog](https://github.com/hashicorp/hcp-sdk-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/hashicorp/hcp-sdk-go/compare/v0.92.0...v0.93.0) --- updated-dependencies: - dependency-name: github.com/hashicorp/hcp-sdk-go dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 23886fc8d2d..1f93e2a219d 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/hashicorp/go-uuid v1.0.3 github.com/hashicorp/go-version v1.6.0 github.com/hashicorp/hcl/v2 v2.19.1 - github.com/hashicorp/hcp-sdk-go v0.92.0 + github.com/hashicorp/hcp-sdk-go v0.93.0 github.com/hashicorp/packer-plugin-amazon v1.2.1 github.com/hashicorp/packer-plugin-sdk v0.5.3 github.com/jehiah/go-strftime v0.0.0-20171201141054-1d33003b3869 diff --git a/go.sum b/go.sum index cf130d90f4c..c6ab3b09335 100644 --- a/go.sum +++ b/go.sum @@ -313,8 +313,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.19.1 h1://i05Jqznmb2EXqa39Nsvyan2o5XyMowW5fnCKW5RPI= github.com/hashicorp/hcl/v2 v2.19.1/go.mod h1:ThLC89FV4p9MPW804KVbe/cEXoQ8NZEh+JtMeeGErHE= -github.com/hashicorp/hcp-sdk-go v0.92.0 h1:0D429tlRozQoOjxQOSgaodNUhglhcjTg9n25vWDhkAo= -github.com/hashicorp/hcp-sdk-go v0.92.0/go.mod h1:vQ4fzdL1AmhIAbCw+4zmFe5Hbpajj3NvRWkJoVuxmAk= +github.com/hashicorp/hcp-sdk-go v0.93.0 h1:Ddo261pU9mnHIK5+ncRqSfRqMkkCJsmGyoMHoatAdFg= +github.com/hashicorp/hcp-sdk-go v0.93.0/go.mod h1:vQ4fzdL1AmhIAbCw+4zmFe5Hbpajj3NvRWkJoVuxmAk= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR/prTM= From 403e35d2ffca3f78ef13b1e45a69570d9ba5b46b Mon Sep 17 00:00:00 2001 From: Devashish Date: Wed, 17 Apr 2024 22:28:02 -0400 Subject: [PATCH 372/381] Add thread-safe add and get methods for plugin storage * Add general code improvements --- packer/build.go | 6 ++-- packer/plugin.go | 72 ++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 69 insertions(+), 9 deletions(-) diff --git a/packer/build.go b/packer/build.go index 9dca9610ac8..8b62ec53799 100644 --- a/packer/build.go +++ b/packer/build.go @@ -60,14 +60,14 @@ type BuildMetadata struct { func (b *CoreBuild) getPluginsMetadata() map[string]PluginDetails { resp := map[string]PluginDetails{} - builderPlugin, builderPluginOk := PluginsDetailsStorage[fmt.Sprintf("%q-%q", PluginComponentBuilder, b.BuilderType)] + builderPlugin, builderPluginOk := GlobalPluginsDetailsStore.GetBuilder(b.BuilderType) if builderPluginOk { resp[builderPlugin.Name] = builderPlugin } for _, pp := range b.PostProcessors { for _, p := range pp { - postprocessorsPlugin, postprocessorsPluginOk := PluginsDetailsStorage[fmt.Sprintf("%q-%q", PluginComponentPostProcessor, p.PType)] + postprocessorsPlugin, postprocessorsPluginOk := GlobalPluginsDetailsStore.GetPostProcessor(p.PType) if postprocessorsPluginOk { resp[postprocessorsPlugin.Name] = postprocessorsPlugin } @@ -75,7 +75,7 @@ func (b *CoreBuild) getPluginsMetadata() map[string]PluginDetails { } for _, pv := range b.Provisioners { - provisionerPlugin, provisionerPluginOk := PluginsDetailsStorage[fmt.Sprintf("%q-%q", PluginComponentProvisioner, pv.PType)] + provisionerPlugin, provisionerPluginOk := GlobalPluginsDetailsStore.GetProvisioner(pv.PType) if provisionerPluginOk { resp[provisionerPlugin.Name] = provisionerPlugin } diff --git a/packer/plugin.go b/packer/plugin.go index 513694f639f..de85071d7ad 100644 --- a/packer/plugin.go +++ b/packer/plugin.go @@ -15,6 +15,7 @@ import ( "regexp" "runtime" "strings" + "sync" packersdk "github.com/hashicorp/packer-plugin-sdk/packer" pluginsdk "github.com/hashicorp/packer-plugin-sdk/plugin" @@ -151,8 +152,7 @@ func (c *PluginConfig) DiscoverMultiPlugin(pluginName, pluginPath string) error c.Builders.Set(key, func() (packersdk.Builder, error) { return c.Client(pluginPath, "start", "builder", builderName).Builder() }) - PluginsDetailsStorage[fmt.Sprintf("%q-%q", PluginComponentBuilder, key)] = pluginDetails - + GlobalPluginsDetailsStore.SetBuilder(key, pluginDetails) } if len(desc.Builders) > 0 { @@ -168,7 +168,7 @@ func (c *PluginConfig) DiscoverMultiPlugin(pluginName, pluginPath string) error c.PostProcessors.Set(key, func() (packersdk.PostProcessor, error) { return c.Client(pluginPath, "start", "post-processor", postProcessorName).PostProcessor() }) - PluginsDetailsStorage[fmt.Sprintf("%q-%q", PluginComponentPostProcessor, key)] = pluginDetails + GlobalPluginsDetailsStore.SetPostProcessor(key, pluginDetails) } if len(desc.PostProcessors) > 0 { @@ -184,7 +184,7 @@ func (c *PluginConfig) DiscoverMultiPlugin(pluginName, pluginPath string) error c.Provisioners.Set(key, func() (packersdk.Provisioner, error) { return c.Client(pluginPath, "start", "provisioner", provisionerName).Provisioner() }) - PluginsDetailsStorage[fmt.Sprintf("%q-%q", PluginComponentProvisioner, key)] = pluginDetails + GlobalPluginsDetailsStore.SetProvisioner(key, pluginDetails) } if len(desc.Provisioners) > 0 { @@ -200,7 +200,7 @@ func (c *PluginConfig) DiscoverMultiPlugin(pluginName, pluginPath string) error c.DataSources.Set(key, func() (packersdk.Datasource, error) { return c.Client(pluginPath, "start", "datasource", datasourceName).Datasource() }) - PluginsDetailsStorage[fmt.Sprintf("%q-%q", PluginComponentDataSource, key)] = pluginDetails + GlobalPluginsDetailsStore.SetDataSource(key, pluginDetails) } if len(desc.Datasources) > 0 { log.Printf("found external %v datasource from %s plugin", desc.Datasources, pluginName) @@ -268,4 +268,64 @@ type PluginDetails struct { PluginPath string } -var PluginsDetailsStorage = map[string]PluginDetails{} +type pluginsDetailsStorage struct { + rwMutex sync.RWMutex + data map[string]PluginDetails +} + +var GlobalPluginsDetailsStore = &pluginsDetailsStorage{ + data: make(map[string]PluginDetails), +} + +func (pds *pluginsDetailsStorage) set(key string, plugin PluginDetails) { + pds.rwMutex.Lock() + defer pds.rwMutex.Unlock() + pds.data[key] = plugin +} + +func (pds *pluginsDetailsStorage) get(key string) (PluginDetails, bool) { + pds.rwMutex.RLock() + defer pds.rwMutex.RUnlock() + plugin, exists := pds.data[key] + return plugin, exists +} + +func (pds *pluginsDetailsStorage) SetBuilder(name string, plugin PluginDetails) { + key := fmt.Sprintf("%q-%q", PluginComponentBuilder, name) + pds.set(key, plugin) +} + +func (pds *pluginsDetailsStorage) GetBuilder(name string) (PluginDetails, bool) { + key := fmt.Sprintf("%q-%q", PluginComponentBuilder, name) + return pds.get(key) +} + +func (pds *pluginsDetailsStorage) SetPostProcessor(name string, plugin PluginDetails) { + key := fmt.Sprintf("%q-%q", PluginComponentPostProcessor, name) + pds.set(key, plugin) +} + +func (pds *pluginsDetailsStorage) GetPostProcessor(name string) (PluginDetails, bool) { + key := fmt.Sprintf("%q-%q", PluginComponentPostProcessor, name) + return pds.get(key) +} + +func (pds *pluginsDetailsStorage) SetProvisioner(name string, plugin PluginDetails) { + key := fmt.Sprintf("%q-%q", PluginComponentProvisioner, name) + pds.set(key, plugin) +} + +func (pds *pluginsDetailsStorage) GetProvisioner(name string) (PluginDetails, bool) { + key := fmt.Sprintf("%q-%q", PluginComponentProvisioner, name) + return pds.get(key) +} + +func (pds *pluginsDetailsStorage) SetDataSource(name string, plugin PluginDetails) { + key := fmt.Sprintf("%q-%q", PluginComponentDataSource, name) + pds.set(key, plugin) +} + +func (pds *pluginsDetailsStorage) GetDataSource(name string) (PluginDetails, bool) { + key := fmt.Sprintf("%q-%q", PluginComponentDataSource, name) + return pds.get(key) +} From 029895f421f5dbf02b6c77affd7541a8fe1ab377 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 1 May 2024 20:57:27 +0000 Subject: [PATCH 373/381] build(deps): bump ejs and @hashicorp/platform-cli in /website Bumps [ejs](https://github.com/mde/ejs) to 3.1.10 and updates ancestor dependency [@hashicorp/platform-cli](https://github.com/hashicorp/web-platform-packages/tree/HEAD/packages/cli). These dependencies need to be updated together. Updates `ejs` from 3.1.5 to 3.1.10 - [Release notes](https://github.com/mde/ejs/releases) - [Commits](https://github.com/mde/ejs/compare/v3.1.5...v3.1.10) Updates `@hashicorp/platform-cli` from 2.1.0 to 2.8.0 - [Release notes](https://github.com/hashicorp/web-platform-packages/releases) - [Changelog](https://github.com/hashicorp/web-platform-packages/blob/main/packages/cli/CHANGELOG.md) - [Commits](https://github.com/hashicorp/web-platform-packages/commits/@hashicorp/platform-cli@2.8.0/packages/cli) --- updated-dependencies: - dependency-name: ejs dependency-type: indirect - dependency-name: "@hashicorp/platform-cli" dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- website/package-lock.json | 4043 ++++++++++++++++++++++++++----------- website/package.json | 2 +- 2 files changed, 2863 insertions(+), 1182 deletions(-) diff --git a/website/package-lock.json b/website/package-lock.json index a739f371adb..b50ff371761 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -8,7 +8,7 @@ "name": "packer-docs", "version": "1.0.0", "devDependencies": { - "@hashicorp/platform-cli": "^2.1.0", + "@hashicorp/platform-cli": "^2.8.0", "dart-linkcheck": "2.0.15", "husky": "4.3.8", "next": "^12.3.1", @@ -522,25 +522,12 @@ } }, "node_modules/@babel/runtime": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", - "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", - "dev": true, - "dependencies": { - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/runtime-corejs3": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz", - "integrity": "sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", + "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", "dev": true, "dependencies": { - "core-js-pure": "^3.20.2", - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" @@ -627,49 +614,94 @@ "node": ">=0.1.95" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, "node_modules/@eslint/eslintrc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", - "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.1", - "globals": "^13.9.0", + "espree": "^9.6.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "dev": true, + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "node_modules/@hashicorp/platform-cli": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@hashicorp/platform-cli/-/platform-cli-2.1.0.tgz", - "integrity": "sha512-orPreFHhkFXd84zouNnHvx6C2pT8cM2tTxwPEDkTDx7C2G+GRCQxKtBq+YXxLGj6AZOMa6cuF58eecEWJRW6TA==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@hashicorp/platform-cli/-/platform-cli-2.8.0.tgz", + "integrity": "sha512-OD2o4vIQ4AnWD5ExVr//bZCadI4kRIa3Vk4d/1ugFhiyODlGSem4GEvt7/4hZutrEBOoDgAcKq8wVmWwrP/JiQ==", "dev": true, "dependencies": { - "@hashicorp/platform-cms": "0.3.0", - "@typescript-eslint/eslint-plugin": "5.10.2", - "@typescript-eslint/parser": "5.10.2", + "@hashicorp/platform-cms": "0.4.0", + "@typescript-eslint/eslint-plugin": "^5.48.0", + "@typescript-eslint/parser": "^5.48.0", "chalk": "4.1.0", "commander": "7.2.0", - "ejs": "3.1.5", - "eslint": "8.8.0", - "eslint-config-next": "12.0.10", - "eslint-config-prettier": "8.3.0", - "eslint-plugin-jsx-a11y": "6.5.1", - "eslint-plugin-prettier": "4.0.0", + "ejs": "^3.1.9", + "eslint": "^8.31.0", + "eslint-config-next": "^13.1.1", + "eslint-config-prettier": "^8.6.0", + "eslint-plugin-jsx-a11y": "^6.6.1", + "eslint-plugin-prettier": "^4.2.1", "fs-extra": "9.0.1", "globby": "11.0.1", "inquirer": "7.3.3", "lint-staged": "11.1.2", "open": "7.3.0", - "prettier": "2.5.1", + "prettier": "^2.8.7", "readdirp": "3.5.0", "signale": "1.4.0", "slugify": "1.4.6", @@ -688,44 +720,60 @@ } }, "node_modules/@hashicorp/platform-cli/node_modules/prettier": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", - "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, "bin": { "prettier": "bin-prettier.js" }, "engines": { "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/@hashicorp/platform-cms": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@hashicorp/platform-cms/-/platform-cms-0.3.0.tgz", - "integrity": "sha512-sRX9A+kDEZvfZy8PvGFbEaHjn5G1mEsHwTri1vDnrmKG8apE+ELlug83b0iEkD5wIJi9OqaewMIb0NrLxg9s5A==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@hashicorp/platform-cms/-/platform-cms-0.4.0.tgz", + "integrity": "sha512-Q8fixx7JnzzDvuMEC1+UK8xO4bqMh/QxNX7lPusfMixVhnnyJaTF7xRhDRFWMG1bhUwI9TJxQYElWC2aDj7CmA==", "dev": true, "dependencies": { - "rivet-graphql": "0.3.1" + "rivet-graphql": "^0.6.0-canary-20230309231927" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, "engines": { "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, "node_modules/@istanbuljs/load-nyc-config": { @@ -1114,9 +1162,9 @@ "dev": true }, "node_modules/@next/eslint-plugin-next": { - "version": "12.0.10", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.0.10.tgz", - "integrity": "sha512-PbGRnV5HGSfRGLjf8uTh1MaWgLwnjKjWiGVjK752ifITJbZ28/5AmLAFT2shDYeux8BHgpgVll5QXu7GN3YLFw==", + "version": "13.5.6", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.5.6.tgz", + "integrity": "sha512-ng7pU/DDsxPgT6ZPvuprxrkeew3XaRf4LAT4FabaEO/hAbvVx4P7wqnqdbTdDn1kgTvsI4tpIgT4Awn/m0bGbg==", "dev": true, "dependencies": { "glob": "7.1.7" @@ -1366,9 +1414,9 @@ } }, "node_modules/@rushstack/eslint-patch": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.1.3.tgz", - "integrity": "sha512-WiBSI6JBIhC6LRIsB2Kwh8DsGTlbBU+mLRxJmAe3LjHTdkDpwIbEOZgoXBbZilk/vlfjK8i6nKRAvIRn1XaIMw==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.2.tgz", + "integrity": "sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw==", "dev": true }, "node_modules/@sinonjs/commons": { @@ -1524,15 +1572,15 @@ } }, "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, "node_modules/@types/mdast": { @@ -1575,6 +1623,12 @@ "dev": true, "peer": true }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, "node_modules/@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", @@ -1604,19 +1658,20 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.10.2.tgz", - "integrity": "sha512-4W/9lLuE+v27O/oe7hXJKjNtBLnZE8tQAFpapdxwSVHqtmIoPB1gph3+ahNwVuNL37BX7YQHyGF9Xv6XCnIX2Q==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.10.2", - "@typescript-eslint/type-utils": "5.10.2", - "@typescript-eslint/utils": "5.10.2", - "debug": "^4.3.2", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.2.0", - "semver": "^7.3.5", + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { @@ -1637,15 +1692,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.10.2.tgz", - "integrity": "sha512-JaNYGkaQVhP6HNF+lkdOr2cAs2wdSZBoalE22uYWq8IEv/OVH0RksSGydk+sW8cLoSeYmC+OHvRyv2i4AQ7Czg==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.10.2", - "@typescript-eslint/types": "5.10.2", - "@typescript-eslint/typescript-estree": "5.10.2", - "debug": "^4.3.2" + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1664,13 +1719,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.10.2.tgz", - "integrity": "sha512-39Tm6f4RoZoVUWBYr3ekS75TYgpr5Y+X0xLZxXqcZNDWZdJdYbKd3q2IR4V9y5NxxiPu/jxJ8XP7EgHiEQtFnw==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.10.2", - "@typescript-eslint/visitor-keys": "5.10.2" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1681,13 +1736,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.10.2.tgz", - "integrity": "sha512-uRKSvw/Ccs5FYEoXW04Z5VfzF2iiZcx8Fu7DGIB7RHozuP0VbKNzP1KfZkHBTM75pCpsWxIthEH1B33dmGBKHw==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.10.2", - "debug": "^4.3.2", + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", "tsutils": "^3.21.0" }, "engines": { @@ -1707,9 +1763,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.10.2.tgz", - "integrity": "sha512-Qfp0qk/5j2Rz3p3/WhWgu4S1JtMcPgFLnmAKAW061uXxKSa7VWKZsDXVaMXh2N60CX9h6YLaBoy9PJAfCOjk3w==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1720,17 +1776,17 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.2.tgz", - "integrity": "sha512-WHHw6a9vvZls6JkTgGljwCsMkv8wu8XU8WaYKeYhxhWXH/atZeiMW6uDFPLZOvzNOGmuSMvHtZKd6AuC8PrwKQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.10.2", - "@typescript-eslint/visitor-keys": "5.10.2", - "debug": "^4.3.2", - "globby": "^11.0.4", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { @@ -1767,17 +1823,19 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.10.2.tgz", - "integrity": "sha512-vuJaBeig1NnBRkf7q9tgMLREiYD7zsMrsN1DA3wcoMDvr3BTFiIpKjGiYZoKPllfEwN7spUjv7ZqD+JhbVjEPg==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.10.2", - "@typescript-eslint/types": "5.10.2", - "@typescript-eslint/typescript-estree": "5.10.2", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "semver": "^7.3.7" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1791,13 +1849,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.2.tgz", - "integrity": "sha512-zHIhYGGGrFJvvyfwHk5M08C5B5K4bewkm+rrvNTKk1/S15YHR+SA/QUF8ZWscXSfEaB8Nn2puZj+iHcoxVOD/Q==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.10.2", - "eslint-visitor-keys": "^3.0.0" + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1807,6 +1865,12 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", @@ -1815,9 +1879,9 @@ "peer": true }, "node_modules/acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -1992,16 +2056,12 @@ "dev": true }, "node_modules/aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, "dependencies": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" - }, - "engines": { - "node": ">=6.0" + "dequal": "^2.0.3" } }, "node_modules/arr-diff": { @@ -2034,16 +2094,33 @@ "node": ">=0.10.0" } }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" }, "engines": { @@ -2072,15 +2149,55 @@ "node": ">=0.10.0" } }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array.prototype.flat": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", - "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" }, "engines": { @@ -2091,15 +2208,62 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", - "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.toreversed": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", + "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.1.0", + "es-shim-unscopables": "^1.0.2" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -2128,9 +2292,9 @@ } }, "node_modules/ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", "dev": true }, "node_modules/astral-regex": { @@ -2143,9 +2307,9 @@ } }, "node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", "dev": true }, "node_modules/asynckit": { @@ -2221,20 +2385,38 @@ "url": "https://opencollective.com/postcss/" } }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/axe-core": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz", - "integrity": "sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", "dev": true, "engines": { "node": ">=4" } }, "node_modules/axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", - "dev": true + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } }, "node_modules/babel-jest": { "version": "26.6.3", @@ -2516,13 +2698,19 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2989,17 +3177,6 @@ "node": ">=0.10.0" } }, - "node_modules/core-js-pure": { - "version": "3.22.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.22.1.tgz", - "integrity": "sha512-TChjCtgcMDc8t12RiwAsThjqrS/VpBlEvDgL009ot4HESzBo3h2FSZNa6ZS1nWKZEPDoulnszxUll9n0/spflQ==", - "dev": true, - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, "node_modules/cosmiconfig": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", @@ -3017,12 +3194,12 @@ } }, "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", "dev": true, "dependencies": { - "node-fetch": "2.6.7" + "node-fetch": "^2.6.12" } }, "node_modules/cross-spawn": { @@ -3110,6 +3287,57 @@ "node": ">=10" } }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -3191,12 +3419,30 @@ "node": ">=0.10.0" } }, - "node_modules/define-properties": { + "node_modules/define-data-property": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -3230,6 +3476,15 @@ "node": ">=0.4.0" } }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -3354,12 +3609,12 @@ } }, "node_modules/ejs": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.5.tgz", - "integrity": "sha512-dldq3ZfFtgVTJMLjOe+/3sROTzALlL9E34V4/sDtUd/KlBSS0s6U1/+WPE1B4sj9CXHJpL1M6rhNJnc9Wbal9w==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, "dependencies": { - "jake": "^10.6.1" + "jake": "^10.8.5" }, "bin": { "ejs": "bin/cli.js" @@ -3403,6 +3658,19 @@ "once": "^1.4.0" } }, + "node_modules/enhanced-resolve": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", @@ -3431,31 +3699,57 @@ } }, "node_modules/es-abstract": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.5.tgz", - "integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -3464,33 +3758,105 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-shim-unscopables": { + "node_modules/es-define-property": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", "dev": true, "dependencies": { - "has": "^1.0.3" + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/escalade": { + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", @@ -3587,46 +3953,49 @@ } }, "node_modules/eslint": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.8.0.tgz", - "integrity": "sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.0.5", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.0", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.2.0", - "espree": "^9.3.0", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "bin": { "eslint": "bin/eslint.js" @@ -3639,24 +4008,23 @@ } }, "node_modules/eslint-config-next": { - "version": "12.0.10", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.0.10.tgz", - "integrity": "sha512-l1er6mwSo1bltjLwmd71p5BdT6k/NQxV1n4lKZI6xt3MDMrq7ChUBr+EecxOry8GC/rCRUtPpH8Ygs0BJc5YLg==", + "version": "13.5.6", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.5.6.tgz", + "integrity": "sha512-o8pQsUHTo9aHqJ2YiZDym5gQAMRf7O2HndHo/JZeY7TDD+W4hk6Ma8Vw54RHiBeb7OWWO5dPirQB+Is/aVQ7Kg==", "dev": true, "dependencies": { - "@next/eslint-plugin-next": "12.0.10", - "@rushstack/eslint-patch": "^1.0.8", - "@typescript-eslint/parser": "^5.0.0", - "eslint-import-resolver-node": "^0.3.4", - "eslint-import-resolver-typescript": "^2.4.0", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.27.0", - "eslint-plugin-react-hooks": "^4.3.0" + "@next/eslint-plugin-next": "13.5.6", + "@rushstack/eslint-patch": "^1.3.3", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" }, "peerDependencies": { "eslint": "^7.23.0 || ^8.0.0", - "next": ">=10.2.0", "typescript": ">=3.3.1" }, "peerDependenciesMeta": { @@ -3666,9 +4034,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", - "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -3678,13 +4046,14 @@ } }, "node_modules/eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, "dependencies": { "debug": "^3.2.7", - "resolve": "^1.20.0" + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, "node_modules/eslint-import-resolver-node/node_modules/debug": { @@ -3696,57 +4065,63 @@ "ms": "^2.1.1" } }, - "node_modules/eslint-import-resolver-typescript": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz", - "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==", + "node_modules/eslint-import-resolver-node/node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { - "debug": "^4.3.4", - "glob": "^7.2.0", - "is-glob": "^4.0.3", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": ">=4" + "bin": { + "resolve": "bin/resolve" }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-import-resolver-typescript/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", + "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "debug": "^4.3.4", + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" }, "engines": { - "node": "*" + "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*" } }, "node_modules/eslint-module-utils": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", - "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", "dev": true, "dependencies": { - "debug": "^3.2.7", - "find-up": "^2.1.0" + "debug": "^3.2.7" }, "engines": { "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, "node_modules/eslint-module-utils/node_modules/debug": { @@ -3759,24 +4134,28 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", - "has": "^1.0.3", - "is-core-module": "^2.8.1", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" @@ -3786,12 +4165,12 @@ } }, "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "node_modules/eslint-plugin-import/node_modules/doctrine": { @@ -3806,30 +4185,37 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } }, "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", - "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.16.3", - "aria-query": "^4.2.2", - "array-includes": "^3.1.4", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.3.5", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.7", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", + "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.2.1", - "language-tags": "^1.0.5", - "minimatch": "^3.0.4" + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" }, "engines": { "node": ">=4.0" @@ -3839,15 +4225,15 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", - "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=12.0.0" }, "peerDependencies": { "eslint": ">=7.28.0", @@ -3860,25 +4246,29 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.29.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz", - "integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==", + "version": "7.34.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz", + "integrity": "sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==", "dev": true, "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flatmap": "^1.2.5", + "array-includes": "^3.1.7", + "array.prototype.findlast": "^1.2.4", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.3", "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.17", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.0", - "object.values": "^1.1.5", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7", + "object.hasown": "^1.1.3", + "object.values": "^1.1.7", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.6" + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.10" }, "engines": { "node": ">=4" @@ -3888,9 +4278,9 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.4.0.tgz", - "integrity": "sha512-U3RVIfdzJaeKDQKEJbz5p3NW8/L80PCATJAfuojwbaEL+gBjfGdhUcGde+WGUW46Q5sr/NgxevsIiDtNXrvZaQ==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", "dev": true, "engines": { "node": ">=10" @@ -3912,22 +4302,26 @@ } }, "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -3955,47 +4349,55 @@ "node": ">=4.0" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, "engines": { "node": ">=10" }, @@ -4003,31 +4405,51 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "p-locate": "^5.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.3.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/esprima": { @@ -4045,9 +4467,9 @@ } }, "node_modules/esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { "estraverse": "^5.1.0" @@ -4422,15 +4844,15 @@ "dev": true }, "node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true }, "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -4520,9 +4942,9 @@ } }, "node_modules/filelist": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.3.tgz", - "integrity": "sha512-LwjCsruLWQULGYKy7TX0OPtrL9kLpojOFKc5VCTxdFTV7w5zbsgqVKfnkKG7Qgjtq50gKfO56hJv88OfcGb70Q==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, "dependencies": { "minimatch": "^5.0.1" @@ -4538,9 +4960,9 @@ } }, "node_modules/filelist/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -4592,6 +5014,15 @@ "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, "node_modules/for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -4666,16 +5097,31 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/functions-have-names": { "version": "1.2.3", @@ -4706,14 +5152,19 @@ } }, "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4764,13 +5215,14 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -4779,6 +5231,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-tsconfig": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz", + "integrity": "sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -4860,9 +5324,9 @@ } }, "node_modules/globals": { - "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -4874,6 +5338,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/globby": { "version": "11.0.1", "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", @@ -4915,28 +5395,47 @@ "node": ">=0.6.0" } }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "node_modules/graphql": { - "version": "15.8.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", - "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", + "version": "16.8.1", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", + "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", "dev": true, "engines": { - "node": ">= 10.x" + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } }, "node_modules/graphql-request": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-3.7.0.tgz", - "integrity": "sha512-dw5PxHCgBneN2DDNqpWu8QkbbJ07oOziy8z+bK/TAXufsOLaETuVO4GkXrbs0WjhdKhBMN3BkpN/RIvUHkmNUQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-5.1.0.tgz", + "integrity": "sha512-0OeRVYigVwIiXhNmqnPDt+JhMzsjinxHE7TVy3Lm6jUzav0guVcL0lfSbi6jVTRAxcbwgyr6yrZioSHxf9gHzw==", "dev": true, "dependencies": { - "cross-fetch": "^3.0.6", + "@graphql-typed-document-node/core": "^3.1.1", + "cross-fetch": "^3.1.5", "extract-files": "^9.0.0", "form-data": "^3.0.0" }, @@ -4961,18 +5460,6 @@ "node": ">=6" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -4992,12 +5479,24 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5016,12 +5515,12 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -5105,6 +5604,18 @@ "node": ">=0.10.0" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -5430,13 +5941,13 @@ } }, "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -5489,12 +6000,43 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", @@ -5547,9 +6089,9 @@ } }, "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "engines": { "node": ">= 0.4" @@ -5571,12 +6113,12 @@ } }, "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5595,6 +6137,21 @@ "node": ">=0.10.0" } }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", @@ -5672,6 +6229,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -5691,6 +6260,21 @@ "node": ">=6" } }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -5713,10 +6297,22 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, "engines": { "node": ">= 0.4" @@ -5758,6 +6354,15 @@ "node": ">=0.10.0" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -5812,13 +6417,28 @@ "node": ">=0.10.0" } }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5842,7 +6462,22 @@ "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -5851,13 +6486,13 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -5896,6 +6531,18 @@ "node": ">=8" } }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -5908,6 +6555,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -6033,16 +6696,29 @@ "node": ">=8" } }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, "node_modules/jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", "dev": true, "dependencies": { "async": "^3.2.3", "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" + "filelist": "^1.0.4", + "minimatch": "^3.1.2" }, "bin": { "jake": "bin/cli.js" @@ -6725,7 +7401,7 @@ "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "node_modules/json5": { @@ -6762,13 +7438,15 @@ } }, "node_modules/jsx-ast-utils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz", - "integrity": "sha512-HDAyJ4MNQBboGpUnHAVUNJs6X0lh058s6FuixsFGP7MgJYpD6Vasd6nzSG5iIfXu1zAYlHJ/zsOKNlrenTUBnw==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, "dependencies": { - "array-includes": "^3.1.4", - "object.assign": "^4.1.2" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" }, "engines": { "node": ">=4.0" @@ -6800,18 +7478,21 @@ "dev": true }, "node_modules/language-subtag-registry": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", - "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==", + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", "dev": true }, "node_modules/language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", "dev": true, "dependencies": { - "language-subtag-registry": "~0.3.2" + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" } }, "node_modules/leven": { @@ -7543,6 +8224,12 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "node_modules/next": { "version": "12.3.1", "resolved": "https://registry.npmjs.org/next/-/next-12.3.1.tgz", @@ -7604,9 +8291,9 @@ "peer": true }, "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, "dependencies": { "whatwg-url": "^5.0.0" @@ -7626,19 +8313,19 @@ "node_modules/node-fetch/node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true }, "node_modules/node-fetch/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true }, "node_modules/node-fetch/node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "dependencies": { "tr46": "~0.0.3", @@ -7747,7 +8434,7 @@ "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, "engines": { "node": ">=0.10.0" @@ -7853,9 +8540,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7884,14 +8571,14 @@ } }, "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, "engines": { @@ -7902,28 +8589,29 @@ } }, "node_modules/object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -7932,14 +8620,32 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/object.hasown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", - "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", + "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", "dev": true, "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7959,14 +8665,14 @@ } }, "node_modules/object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -8025,9 +8731,9 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { "deep-is": "^0.1.3", @@ -8035,7 +8741,7 @@ "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -8390,6 +9096,15 @@ "node": ">=0.10.0" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { "version": "8.4.14", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", @@ -8990,10 +9705,31 @@ "node": ">=8" } }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "dev": true }, "node_modules/regex-not": { @@ -9011,14 +9747,15 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -9027,18 +9764,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/remark": { "version": "13.0.0", "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", @@ -9181,6 +9906,15 @@ "node": ">=4" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -9244,13 +9978,14 @@ } }, "node_modules/rivet-graphql": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/rivet-graphql/-/rivet-graphql-0.3.1.tgz", - "integrity": "sha512-HEov02XhZ6H1jOME+mO8CZwliu/UtgZSHixYUwvQ7HSx3gk8EOVaQY5c3zscOYjZECvP8cR4+1Ob3KHWJRWEMw==", + "version": "0.6.0-canary-20230309231927", + "resolved": "https://registry.npmjs.org/rivet-graphql/-/rivet-graphql-0.6.0-canary-20230309231927.tgz", + "integrity": "sha512-6+HlBIKGty0+XULdpQaXwFpXgItmNUOCSZ8a6Eit/kJzXPp7YVyBMvCN9ozaRVqHUK8PiToGB+jg+jo8/V+bgw==", "dev": true, "dependencies": { - "graphql": "^15.3.0", - "graphql-request": "^3.0.0" + "@graphql-typed-document-node/core": "^3.1.2", + "graphql": "^16.6.0", + "graphql-request": "~5.1.0" } }, "node_modules/rsvp": { @@ -9307,6 +10042,30 @@ "npm": ">=2.0.0" } }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -9323,6 +10082,23 @@ "ret": "~0.1.10" } }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -9715,6 +10491,38 @@ "dev": true, "peer": true }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -9784,14 +10592,18 @@ "peer": true }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10478,45 +11290,75 @@ "dev": true }, "node_modules/string.prototype.matchall": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", - "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.1", - "side-channel": "^1.0.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -10986,6 +11828,15 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", @@ -11021,7 +11872,7 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "node_modules/throat": { @@ -11221,21 +12072,21 @@ } }, "node_modules/tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "dependencies": { "@types/json5": "^0.0.29", - "json5": "^1.0.1", + "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" } }, "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "dependencies": { "minimist": "^1.2.0" @@ -11247,7 +12098,7 @@ "node_modules/tsconfig-paths/node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, "engines": { "node": ">=4" @@ -11308,6 +12159,79 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -11332,14 +12256,14 @@ } }, "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" }, "funding": { @@ -11739,6 +12663,56 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", @@ -11752,10 +12726,29 @@ "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", "dev": true }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -12365,22 +13358,12 @@ } }, "@babel/runtime": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", - "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/runtime-corejs3": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.9.tgz", - "integrity": "sha512-WxYHHUWF2uZ7Hp1K+D1xQgbgkGUfA+5UPOegEXGt2Y5SMog/rYCVaifLZDbw8UkNXozEqqrZTy6bglL7xTaCOw==", + "version": "7.24.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", + "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", "dev": true, "requires": { - "core-js-pure": "^3.20.2", - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.14.0" } }, "@babel/template": { @@ -12448,46 +13431,74 @@ "minimist": "^1.2.0" } }, + "@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^3.3.0" + } + }, + "@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true + }, "@eslint/eslintrc": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.1.tgz", - "integrity": "sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.3.1", - "globals": "^13.9.0", + "espree": "^9.6.0", + "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, + "@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true + }, + "@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "dev": true, + "requires": {} + }, "@hashicorp/platform-cli": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@hashicorp/platform-cli/-/platform-cli-2.1.0.tgz", - "integrity": "sha512-orPreFHhkFXd84zouNnHvx6C2pT8cM2tTxwPEDkTDx7C2G+GRCQxKtBq+YXxLGj6AZOMa6cuF58eecEWJRW6TA==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@hashicorp/platform-cli/-/platform-cli-2.8.0.tgz", + "integrity": "sha512-OD2o4vIQ4AnWD5ExVr//bZCadI4kRIa3Vk4d/1ugFhiyODlGSem4GEvt7/4hZutrEBOoDgAcKq8wVmWwrP/JiQ==", "dev": true, "requires": { - "@hashicorp/platform-cms": "0.3.0", - "@typescript-eslint/eslint-plugin": "5.10.2", - "@typescript-eslint/parser": "5.10.2", + "@hashicorp/platform-cms": "0.4.0", + "@typescript-eslint/eslint-plugin": "^5.48.0", + "@typescript-eslint/parser": "^5.48.0", "chalk": "4.1.0", "commander": "7.2.0", - "ejs": "3.1.5", - "eslint": "8.8.0", - "eslint-config-next": "12.0.10", - "eslint-config-prettier": "8.3.0", - "eslint-plugin-jsx-a11y": "6.5.1", - "eslint-plugin-prettier": "4.0.0", + "ejs": "^3.1.9", + "eslint": "^8.31.0", + "eslint-config-next": "^13.1.1", + "eslint-config-prettier": "^8.6.0", + "eslint-plugin-jsx-a11y": "^6.6.1", + "eslint-plugin-prettier": "^4.2.1", "fs-extra": "9.0.1", "globby": "11.0.1", "inquirer": "7.3.3", "lint-staged": "11.1.2", "open": "7.3.0", - "prettier": "2.5.1", + "prettier": "^2.8.7", "readdirp": "3.5.0", "signale": "1.4.0", "slugify": "1.4.6", @@ -12503,37 +13514,43 @@ }, "dependencies": { "prettier": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.5.1.tgz", - "integrity": "sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true } } }, "@hashicorp/platform-cms": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@hashicorp/platform-cms/-/platform-cms-0.3.0.tgz", - "integrity": "sha512-sRX9A+kDEZvfZy8PvGFbEaHjn5G1mEsHwTri1vDnrmKG8apE+ELlug83b0iEkD5wIJi9OqaewMIb0NrLxg9s5A==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@hashicorp/platform-cms/-/platform-cms-0.4.0.tgz", + "integrity": "sha512-Q8fixx7JnzzDvuMEC1+UK8xO4bqMh/QxNX7lPusfMixVhnnyJaTF7xRhDRFWMG1bhUwI9TJxQYElWC2aDj7CmA==", "dev": true, "requires": { - "rivet-graphql": "0.3.1" + "rivet-graphql": "^0.6.0-canary-20230309231927" } }, "@humanwhocodes/config-array": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.9.5.tgz", - "integrity": "sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==", + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, "requires": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" } }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, "@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, "@istanbuljs/load-nyc-config": { @@ -12859,9 +13876,9 @@ "dev": true }, "@next/eslint-plugin-next": { - "version": "12.0.10", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.0.10.tgz", - "integrity": "sha512-PbGRnV5HGSfRGLjf8uTh1MaWgLwnjKjWiGVjK752ifITJbZ28/5AmLAFT2shDYeux8BHgpgVll5QXu7GN3YLFw==", + "version": "13.5.6", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.5.6.tgz", + "integrity": "sha512-ng7pU/DDsxPgT6ZPvuprxrkeew3XaRf4LAT4FabaEO/hAbvVx4P7wqnqdbTdDn1kgTvsI4tpIgT4Awn/m0bGbg==", "dev": true, "requires": { "glob": "7.1.7" @@ -12985,9 +14002,9 @@ } }, "@rushstack/eslint-patch": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.1.3.tgz", - "integrity": "sha512-WiBSI6JBIhC6LRIsB2Kwh8DsGTlbBU+mLRxJmAe3LjHTdkDpwIbEOZgoXBbZilk/vlfjK8i6nKRAvIRn1XaIMw==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.2.tgz", + "integrity": "sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw==", "dev": true }, "@sinonjs/commons": { @@ -13133,15 +14150,15 @@ } }, "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true }, "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, "@types/mdast": { @@ -13184,6 +14201,12 @@ "dev": true, "peer": true }, + "@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, "@types/stack-utils": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", @@ -13213,73 +14236,75 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.10.2.tgz", - "integrity": "sha512-4W/9lLuE+v27O/oe7hXJKjNtBLnZE8tQAFpapdxwSVHqtmIoPB1gph3+ahNwVuNL37BX7YQHyGF9Xv6XCnIX2Q==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.10.2", - "@typescript-eslint/type-utils": "5.10.2", - "@typescript-eslint/utils": "5.10.2", - "debug": "^4.3.2", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.2.0", - "semver": "^7.3.5", + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", "tsutils": "^3.21.0" } }, "@typescript-eslint/parser": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.10.2.tgz", - "integrity": "sha512-JaNYGkaQVhP6HNF+lkdOr2cAs2wdSZBoalE22uYWq8IEv/OVH0RksSGydk+sW8cLoSeYmC+OHvRyv2i4AQ7Czg==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.10.2", - "@typescript-eslint/types": "5.10.2", - "@typescript-eslint/typescript-estree": "5.10.2", - "debug": "^4.3.2" + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.10.2.tgz", - "integrity": "sha512-39Tm6f4RoZoVUWBYr3ekS75TYgpr5Y+X0xLZxXqcZNDWZdJdYbKd3q2IR4V9y5NxxiPu/jxJ8XP7EgHiEQtFnw==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, "requires": { - "@typescript-eslint/types": "5.10.2", - "@typescript-eslint/visitor-keys": "5.10.2" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" } }, "@typescript-eslint/type-utils": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.10.2.tgz", - "integrity": "sha512-uRKSvw/Ccs5FYEoXW04Z5VfzF2iiZcx8Fu7DGIB7RHozuP0VbKNzP1KfZkHBTM75pCpsWxIthEH1B33dmGBKHw==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.10.2", - "debug": "^4.3.2", + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.10.2.tgz", - "integrity": "sha512-Qfp0qk/5j2Rz3p3/WhWgu4S1JtMcPgFLnmAKAW061uXxKSa7VWKZsDXVaMXh2N60CX9h6YLaBoy9PJAfCOjk3w==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.2.tgz", - "integrity": "sha512-WHHw6a9vvZls6JkTgGljwCsMkv8wu8XU8WaYKeYhxhWXH/atZeiMW6uDFPLZOvzNOGmuSMvHtZKd6AuC8PrwKQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.10.2", - "@typescript-eslint/visitor-keys": "5.10.2", - "debug": "^4.3.2", - "globby": "^11.0.4", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "dependencies": { @@ -13300,29 +14325,37 @@ } }, "@typescript-eslint/utils": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.10.2.tgz", - "integrity": "sha512-vuJaBeig1NnBRkf7q9tgMLREiYD7zsMrsN1DA3wcoMDvr3BTFiIpKjGiYZoKPllfEwN7spUjv7ZqD+JhbVjEPg==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, "requires": { + "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.10.2", - "@typescript-eslint/types": "5.10.2", - "@typescript-eslint/typescript-estree": "5.10.2", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "semver": "^7.3.7" } }, "@typescript-eslint/visitor-keys": { - "version": "5.10.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.2.tgz", - "integrity": "sha512-zHIhYGGGrFJvvyfwHk5M08C5B5K4bewkm+rrvNTKk1/S15YHR+SA/QUF8ZWscXSfEaB8Nn2puZj+iHcoxVOD/Q==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.10.2", - "eslint-visitor-keys": "^3.0.0" + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" } }, + "@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", @@ -13331,9 +14364,9 @@ "peer": true }, "acorn": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", - "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true }, "acorn-globals": { @@ -13458,13 +14491,12 @@ "dev": true }, "aria-query": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", - "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, "requires": { - "@babel/runtime": "^7.10.2", - "@babel/runtime-corejs3": "^7.10.2" + "dequal": "^2.0.3" } }, "arr-diff": { @@ -13488,16 +14520,27 @@ "dev": true, "peer": true }, + "array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "requires": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + } + }, "array-includes": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.4.tgz", - "integrity": "sha512-ZTNSQkmWumEbiHO2GF4GmWxYVTiQyJy2XOTa15sdQSrvKn7l+180egQMqlrMOUMCyLMD7pmyQe4mMDUT6Behrw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" } }, @@ -13514,30 +14557,99 @@ "dev": true, "peer": true }, + "array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + } + }, + "array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + } + }, "array.prototype.flat": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz", - "integrity": "sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" } }, "array.prototype.flatmap": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.0.tgz", - "integrity": "sha512-PZC9/8TKAIxcWKdyeb77EzULHPrIX/tIZebLJUQOMR1OwYosT8yggdfWScfTBCDj5utONvOuPQQumYsU2ULbkg==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + } + }, + "array.prototype.toreversed": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", + "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", "dev": true, "requires": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" } }, + "array.prototype.tosorted": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", + "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", + "dev": true, + "requires": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.1.0", + "es-shim-unscopables": "^1.0.2" + } + }, + "arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + } + }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -13552,9 +14664,9 @@ "peer": true }, "ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", "dev": true }, "astral-regex": { @@ -13564,9 +14676,9 @@ "dev": true }, "async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", "dev": true }, "asynckit": { @@ -13621,17 +14733,29 @@ } } }, + "available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "requires": { + "possible-typed-array-names": "^1.0.0" + } + }, "axe-core": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.4.1.tgz", - "integrity": "sha512-gd1kmb21kwNuWr6BQz8fv6GNECPBnUasepcoLbekws23NVBLODdsClRZ+bQ8+9Uomf3Sm3+Vwn0oYG9NvwnJCw==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", "dev": true }, "axobject-query": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.2.0.tgz", - "integrity": "sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==", - "dev": true + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dev": true, + "requires": { + "dequal": "^2.0.3" + } }, "babel-jest": { "version": "26.6.3", @@ -13855,13 +14979,16 @@ } }, "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" } }, "callsites": { @@ -14222,12 +15349,6 @@ "dev": true, "peer": true }, - "core-js-pure": { - "version": "3.22.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.22.1.tgz", - "integrity": "sha512-TChjCtgcMDc8t12RiwAsThjqrS/VpBlEvDgL009ot4HESzBo3h2FSZNa6ZS1nWKZEPDoulnszxUll9n0/spflQ==", - "dev": true - }, "cosmiconfig": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", @@ -14242,12 +15363,12 @@ } }, "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", "dev": true, "requires": { - "node-fetch": "2.6.7" + "node-fetch": "^2.6.12" } }, "cross-spawn": { @@ -14317,6 +15438,39 @@ "whatwg-url": "^8.0.0" } }, + "data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, + "data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -14377,12 +15531,24 @@ "dev": true, "peer": true }, - "define-properties": { + "define-data-property": { "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, + "define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "requires": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } @@ -14404,6 +15570,12 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, + "dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true + }, "detect-newline": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", @@ -14505,12 +15677,12 @@ } }, "ejs": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.5.tgz", - "integrity": "sha512-dldq3ZfFtgVTJMLjOe+/3sROTzALlL9E34V4/sDtUd/KlBSS0s6U1/+WPE1B4sj9CXHJpL1M6rhNJnc9Wbal9w==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, "requires": { - "jake": "^10.6.1" + "jake": "^10.8.5" } }, "electron-to-chromium": { @@ -14542,6 +15714,16 @@ "once": "^1.4.0" } }, + "enhanced-resolve": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, "enquirer": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", @@ -14567,40 +15749,123 @@ } }, "es-abstract": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.5.tgz", - "integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + } + }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.4" } }, - "es-shim-unscopables": { + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true + }, + "es-iterator-helpers": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + } + }, + "es-object-atoms": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "requires": { + "es-errors": "^1.3.0" + } + }, + "es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + } + }, + "es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "requires": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "es-to-primitive": { @@ -14686,46 +15951,49 @@ } }, "eslint": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.8.0.tgz", - "integrity": "sha512-H3KXAzQGBH1plhYS3okDix2ZthuYJlQQEGE5k0IKuEqUSiyu4AmxxlJ2MtTYeJ3xB4jDhcYCwGOg2TXYdnDXlQ==", - "dev": true, - "requires": { - "@eslint/eslintrc": "^1.0.5", - "@humanwhocodes/config-array": "^0.9.2", - "ajv": "^6.10.0", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.0", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.2.0", - "espree": "^9.3.0", - "esquery": "^1.4.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^6.0.1", - "globals": "^13.6.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" + "text-table": "^0.2.0" }, "dependencies": { "escape-string-regexp": { @@ -14735,49 +16003,78 @@ "dev": true }, "eslint-scope": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", - "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } } } }, "eslint-config-next": { - "version": "12.0.10", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.0.10.tgz", - "integrity": "sha512-l1er6mwSo1bltjLwmd71p5BdT6k/NQxV1n4lKZI6xt3MDMrq7ChUBr+EecxOry8GC/rCRUtPpH8Ygs0BJc5YLg==", + "version": "13.5.6", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.5.6.tgz", + "integrity": "sha512-o8pQsUHTo9aHqJ2YiZDym5gQAMRf7O2HndHo/JZeY7TDD+W4hk6Ma8Vw54RHiBeb7OWWO5dPirQB+Is/aVQ7Kg==", "dev": true, "requires": { - "@next/eslint-plugin-next": "12.0.10", - "@rushstack/eslint-patch": "^1.0.8", - "@typescript-eslint/parser": "^5.0.0", - "eslint-import-resolver-node": "^0.3.4", - "eslint-import-resolver-typescript": "^2.4.0", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.27.0", - "eslint-plugin-react-hooks": "^4.3.0" + "@next/eslint-plugin-next": "13.5.6", + "@rushstack/eslint-patch": "^1.3.3", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" } }, "eslint-config-prettier": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.3.0.tgz", - "integrity": "sha512-BgZuLUSeKzvlL/VUjx/Yb787VQ26RU3gGjA3iiFvdsp/2bMfVIWUVP7tjxtjS0e+HP409cPlPvNkQloz8C91ew==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", "dev": true, "requires": {} }, "eslint-import-resolver-node": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", - "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, "requires": { "debug": "^3.2.7", - "resolve": "^1.20.0" + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" }, "dependencies": { "debug": { @@ -14788,46 +16085,42 @@ "requires": { "ms": "^2.1.1" } + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } } } }, "eslint-import-resolver-typescript": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz", - "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", + "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", "dev": true, "requires": { "debug": "^4.3.4", - "glob": "^7.2.0", - "is-glob": "^4.0.3", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" - }, - "dependencies": { - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } + "enhanced-resolve": "^5.12.0", + "eslint-module-utils": "^2.7.4", + "fast-glob": "^3.3.1", + "get-tsconfig": "^4.5.0", + "is-core-module": "^2.11.0", + "is-glob": "^4.0.3" } }, "eslint-module-utils": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz", - "integrity": "sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", "dev": true, "requires": { - "debug": "^3.2.7", - "find-up": "^2.1.0" + "debug": "^3.2.7" }, "dependencies": { "debug": { @@ -14842,33 +16135,37 @@ } }, "eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, "requires": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", - "has": "^1.0.3", - "is-core-module": "^2.8.1", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" }, "dependencies": { "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "doctrine": { @@ -14880,63 +16177,71 @@ "esutils": "^2.0.2" } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } }, "eslint-plugin-jsx-a11y": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.5.1.tgz", - "integrity": "sha512-sVCFKX9fllURnXT2JwLN5Qgo24Ug5NF6dxhkmxsMEUZhXRcGg+X3e1JbJ84YePQKBl5E0ZjAH5Q4rkdcGY99+g==", - "dev": true, - "requires": { - "@babel/runtime": "^7.16.3", - "aria-query": "^4.2.2", - "array-includes": "^3.1.4", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.3.5", - "axobject-query": "^2.2.0", - "damerau-levenshtein": "^1.0.7", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "dev": true, + "requires": { + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", + "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.2.1", - "language-tags": "^1.0.5", - "minimatch": "^3.0.4" + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" } }, "eslint-plugin-prettier": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz", - "integrity": "sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" } }, "eslint-plugin-react": { - "version": "7.29.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.29.4.tgz", - "integrity": "sha512-CVCXajliVh509PcZYRFyu/BoUEz452+jtQJq2b3Bae4v3xBUWPLCmtmBM+ZinG4MzwmxJgJ2M5rMqhqLVn7MtQ==", + "version": "7.34.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz", + "integrity": "sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==", "dev": true, "requires": { - "array-includes": "^3.1.4", - "array.prototype.flatmap": "^1.2.5", + "array-includes": "^3.1.7", + "array.prototype.findlast": "^1.2.4", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.toreversed": "^1.1.2", + "array.prototype.tosorted": "^1.1.3", "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.17", "estraverse": "^5.3.0", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.0", - "object.values": "^1.1.5", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7", + "object.hasown": "^1.1.3", + "object.values": "^1.1.7", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.6" + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.10" }, "dependencies": { "doctrine": { @@ -14949,27 +16254,28 @@ } }, "resolve": { - "version": "2.0.0-next.3", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.3.tgz", - "integrity": "sha512-W8LucSynKUIDu9ylraa7ueVZ7hc0uAgJBxVsQSKOXOyle8a93qXhcz+XAXZ8bIq2d6i4Ehddn6Evt+0/UwKk6Q==", + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true } } }, "eslint-plugin-react-hooks": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.4.0.tgz", - "integrity": "sha512-U3RVIfdzJaeKDQKEJbz5p3NW8/L80PCATJAfuojwbaEL+gBjfGdhUcGde+WGUW46Q5sr/NgxevsIiDtNXrvZaQ==", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", + "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", "dev": true, "requires": {} }, @@ -14984,45 +16290,28 @@ }, "dependencies": { "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - } - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true } } }, "eslint-visitor-keys": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", - "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true }, "espree": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.3.1.tgz", - "integrity": "sha512-bvdyLmJMfwkV3NCRl5ZhJf22zBFo1y8bYh3VYb+bfzqNB4Je68P2sSuXyuFquzWLebHpNd2/d5uv7yoP9ISnGQ==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "requires": { - "acorn": "^8.7.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^3.3.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" } }, "esprima": { @@ -15033,9 +16322,9 @@ "peer": true }, "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "requires": { "estraverse": "^5.1.0" @@ -15337,15 +16626,15 @@ "dev": true }, "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true }, "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -15422,9 +16711,9 @@ } }, "filelist": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.3.tgz", - "integrity": "sha512-LwjCsruLWQULGYKy7TX0OPtrL9kLpojOFKc5VCTxdFTV7w5zbsgqVKfnkKG7Qgjtq50gKfO56hJv88OfcGb70Q==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, "requires": { "minimatch": "^5.0.1" @@ -15440,9 +16729,9 @@ } }, "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -15484,6 +16773,15 @@ "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", "dev": true }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -15539,16 +16837,22 @@ "peer": true }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true + "function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + } }, "functions-have-names": { "version": "1.2.3", @@ -15570,14 +16874,16 @@ "peer": true }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, "get-own-enumerable-property-symbols": { @@ -15610,13 +16916,23 @@ } }, "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + } + }, + "get-tsconfig": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz", + "integrity": "sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==", + "dev": true, + "requires": { + "resolve-pkg-maps": "^1.0.0" } }, "get-value": { @@ -15681,14 +16997,24 @@ } }, "globals": { - "version": "13.13.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.13.0.tgz", - "integrity": "sha512-EQ7Q18AJlPwp3vUDL4mKA0KXrXyNIQyWon6T6XQiBQF0XHvRsiCSrWmmeATpUzdJN2HhWZU6Pdl0a9zdep5p6A==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "requires": { "type-fest": "^0.20.2" } }, + "globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "requires": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + } + }, "globby": { "version": "11.0.1", "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", @@ -15718,25 +17044,41 @@ "minimist": "^1.2.5" } }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, + "graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, "graphql": { - "version": "15.8.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.8.0.tgz", - "integrity": "sha512-5gghUc24tP9HRznNpV2+FIoq3xKkj5dTQqf4v0CpdPbFVwFkWoxOM+o+2OC9ZSvjEMTjfmG9QT+gcvggTwW1zw==", + "version": "16.8.1", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", + "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", "dev": true }, "graphql-request": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-3.7.0.tgz", - "integrity": "sha512-dw5PxHCgBneN2DDNqpWu8QkbbJ07oOziy8z+bK/TAXufsOLaETuVO4GkXrbs0WjhdKhBMN3BkpN/RIvUHkmNUQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/graphql-request/-/graphql-request-5.1.0.tgz", + "integrity": "sha512-0OeRVYigVwIiXhNmqnPDt+JhMzsjinxHE7TVy3Lm6jUzav0guVcL0lfSbi6jVTRAxcbwgyr6yrZioSHxf9gHzw==", "dev": true, "requires": { - "cross-fetch": "^3.0.6", + "@graphql-typed-document-node/core": "^3.1.1", + "cross-fetch": "^3.1.5", "extract-files": "^9.0.0", "form-data": "^3.0.0" } @@ -15755,15 +17097,6 @@ "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, "has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -15777,14 +17110,20 @@ "dev": true }, "has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "requires": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" } }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true + }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", @@ -15792,12 +17131,12 @@ "dev": true }, "has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "requires": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" } }, "has-value": { @@ -15864,6 +17203,15 @@ } } }, + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, "hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -16101,13 +17449,13 @@ } }, "internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "requires": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" } }, @@ -16143,12 +17491,31 @@ "is-decimal": "^1.0.0" } }, + "is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", @@ -16175,9 +17542,9 @@ "dev": true }, "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true }, "is-ci": { @@ -16190,12 +17557,12 @@ } }, "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "requires": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "is-data-descriptor": { @@ -16208,6 +17575,15 @@ "kind-of": "^6.0.0" } }, + "is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "requires": { + "is-typed-array": "^1.1.13" + } + }, "is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", @@ -16257,6 +17633,15 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, + "is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -16270,6 +17655,15 @@ "dev": true, "peer": true }, + "is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -16285,10 +17679,16 @@ "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", "dev": true }, + "is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true + }, "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true }, "is-number": { @@ -16312,6 +17712,12 @@ "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", "dev": true }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true + }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -16351,13 +17757,19 @@ "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", "dev": true }, + "is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true + }, "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "requires": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" } }, "is-stream": { @@ -16384,6 +17796,15 @@ "has-symbols": "^1.0.2" } }, + "is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "requires": { + "which-typed-array": "^1.1.14" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -16405,6 +17826,12 @@ "url-regex": "^5.0.0" } }, + "is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true + }, "is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -16414,6 +17841,16 @@ "call-bind": "^1.0.2" } }, + "is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + } + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -16514,16 +17951,29 @@ "istanbul-lib-report": "^3.0.0" } }, + "iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "requires": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, "jake": { - "version": "10.8.5", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.5.tgz", - "integrity": "sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==", + "version": "10.8.7", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", + "integrity": "sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==", "dev": true, "requires": { "async": "^3.2.3", "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" + "filelist": "^1.0.4", + "minimatch": "^3.1.2" } }, "jest": { @@ -17066,7 +18516,7 @@ "json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true }, "json5": { @@ -17094,13 +18544,15 @@ } }, "jsx-ast-utils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.2.2.tgz", - "integrity": "sha512-HDAyJ4MNQBboGpUnHAVUNJs6X0lh058s6FuixsFGP7MgJYpD6Vasd6nzSG5iIfXu1zAYlHJ/zsOKNlrenTUBnw==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, "requires": { - "array-includes": "^3.1.4", - "object.assign": "^4.1.2" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" } }, "kind-of": { @@ -17123,18 +18575,18 @@ "dev": true }, "language-subtag-registry": { - "version": "0.3.21", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.21.tgz", - "integrity": "sha512-L0IqwlIXjilBVVYKFT37X9Ih11Um5NEl9cbJIuU/SwP/zEEAbBPOnEeeuxVMf45ydWQRDQN3Nqc96OgbH1K+Pg==", + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", "dev": true }, "language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha1-0yHbxNowuovzAk4ED6XBRmH5GTo=", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", "dev": true, "requires": { - "language-subtag-registry": "~0.3.2" + "language-subtag-registry": "^0.3.20" } }, "leven": { @@ -17683,6 +19135,12 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "next": { "version": "12.3.1", "resolved": "https://registry.npmjs.org/next/-/next-12.3.1.tgz", @@ -17718,9 +19176,9 @@ "peer": true }, "node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, "requires": { "whatwg-url": "^5.0.0" @@ -17729,19 +19187,19 @@ "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", "dev": true }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", "dev": true }, "whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, "requires": { "tr46": "~0.0.3", @@ -17842,7 +19300,7 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true }, "object-copy": { @@ -17928,9 +19386,9 @@ } }, "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true }, "object-keys": { @@ -17950,47 +19408,60 @@ } }, "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" } }, "object.entries": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz", - "integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, "object.fromentries": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.5.tgz", - "integrity": "sha512-CAyG5mWQRRiBU57Re4FKoTBjXfDoNwdFVH2Y1tS9PqCsfUTymAohOkEMSG3aRNKmv4lV3O7p1et7c187q6bynw==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + } + }, + "object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" } }, "object.hasown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.0.tgz", - "integrity": "sha512-MhjYRfj3GBlhSkDHo6QmvgjRLXQ2zndabdf3nX0yTyZK9rPfxb6uRpAac8HXNLy1GpqWtZ81Qh4v3uOls2sRAg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", + "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", "dev": true, "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" } }, "object.pick": { @@ -18004,14 +19475,14 @@ } }, "object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, "once": { @@ -18049,9 +19520,9 @@ "dev": true }, "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "requires": { "deep-is": "^0.1.3", @@ -18059,7 +19530,7 @@ "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "word-wrap": "^1.2.5" } }, "os-tmpdir": { @@ -18315,6 +19786,12 @@ "dev": true, "peer": true }, + "possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true + }, "postcss": { "version": "8.4.14", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", @@ -18771,10 +20248,25 @@ "strip-indent": "^3.0.0" } }, + "reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + } + }, "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "dev": true }, "regex-not": { @@ -18789,22 +20281,17 @@ } }, "regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" } }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, "remark": { "version": "13.0.0", "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", @@ -18910,6 +20397,12 @@ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -18956,13 +20449,14 @@ } }, "rivet-graphql": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/rivet-graphql/-/rivet-graphql-0.3.1.tgz", - "integrity": "sha512-HEov02XhZ6H1jOME+mO8CZwliu/UtgZSHixYUwvQ7HSx3gk8EOVaQY5c3zscOYjZECvP8cR4+1Ob3KHWJRWEMw==", + "version": "0.6.0-canary-20230309231927", + "resolved": "https://registry.npmjs.org/rivet-graphql/-/rivet-graphql-0.6.0-canary-20230309231927.tgz", + "integrity": "sha512-6+HlBIKGty0+XULdpQaXwFpXgItmNUOCSZ8a6Eit/kJzXPp7YVyBMvCN9ozaRVqHUK8PiToGB+jg+jo8/V+bgw==", "dev": true, "requires": { - "graphql": "^15.3.0", - "graphql-request": "^3.0.0" + "@graphql-typed-document-node/core": "^3.1.2", + "graphql": "^16.6.0", + "graphql-request": "~5.1.0" } }, "rsvp": { @@ -18996,6 +20490,26 @@ "tslib": "^1.9.0" } }, + "safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -19012,6 +20526,17 @@ "ret": "~0.1.10" } }, + "safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "requires": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -19330,6 +20855,32 @@ "dev": true, "peer": true }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, + "set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + } + }, "set-value": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", @@ -19386,14 +20937,15 @@ "peer": true }, "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" } }, "signal-exit": { @@ -19962,39 +21514,57 @@ } }, "string.prototype.matchall": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", - "integrity": "sha512-f48okCX7JiwVi1NXCVWcFnZgADDC/n2vePlQ/KUCNqCikLLilQvwjMO8+BHVKvgzH0JB0J9LEPgxOGT02RoETg==", + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + } + }, + "string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1", - "get-intrinsic": "^1.1.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.1", - "side-channel": "^1.0.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" } }, "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, "stringify-object": { @@ -20337,6 +21907,12 @@ } } }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, "terminal-link": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", @@ -20363,7 +21939,7 @@ "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, "throat": { @@ -20520,21 +22096,21 @@ } }, "tsconfig-paths": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", - "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "requires": { "@types/json5": "^0.0.29", - "json5": "^1.0.1", + "json5": "^1.0.2", "minimist": "^1.2.6", "strip-bom": "^3.0.0" }, "dependencies": { "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "requires": { "minimist": "^1.2.0" @@ -20543,7 +22119,7 @@ "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true } } @@ -20585,6 +22161,58 @@ "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true }, + "typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + } + }, + "typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "requires": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + } + }, "typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -20602,14 +22230,14 @@ "peer": true }, "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", "which-boxed-primitive": "^1.0.2" } }, @@ -20932,6 +22560,46 @@ "is-symbol": "^1.0.3" } }, + "which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "requires": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "requires": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + } + }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", @@ -20945,10 +22613,23 @@ "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", "dev": true }, + "which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + } + }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true }, "wrap-ansi": { diff --git a/website/package.json b/website/package.json index 1ec08a0f6b9..578141d6a6b 100644 --- a/website/package.json +++ b/website/package.json @@ -4,7 +4,7 @@ "version": "1.0.0", "author": "HashiCorp", "devDependencies": { - "@hashicorp/platform-cli": "^2.1.0", + "@hashicorp/platform-cli": "^2.8.0", "dart-linkcheck": "2.0.15", "husky": "4.3.8", "next": "^12.3.1", From b45f29f3c356947d56d2bae964469e881790d89f Mon Sep 17 00:00:00 2001 From: "Rodrigo C. Moraes" Date: Fri, 3 May 2024 15:35:30 -0300 Subject: [PATCH 374/381] fix: duplicate configs and rm empty lines --- go.mod | 4 +--- go.sum | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 4d70d8f58de..025eeea49ca 100644 --- a/go.mod +++ b/go.mod @@ -1,7 +1,5 @@ module github.com/hashicorp/packer -go 1.18 - require ( cloud.google.com/go v0.110.8 // indirect github.com/biogo/hts v1.4.3 @@ -194,4 +192,4 @@ require ( go 1.21 -replace github.com/zclconf/go-cty => github.com/nywilken/go-cty v1.13.3 // added by packer-sdc fix as noted in github.com/hashicorp/packer-plugin-sdk/issues/187 +replace github.com/zclconf/go-cty => github.com/nywilken/go-cty v1.13.3 // added by packer-sdc fix as noted in github.com/hashicorp/packer-plugin-sdk/issues/187 \ No newline at end of file diff --git a/go.sum b/go.sum index c6ab3b09335..c7e88627789 100644 --- a/go.sum +++ b/go.sum @@ -793,4 +793,4 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= \ No newline at end of file From fe47e1422545999d074438c60dca376dd09dd9b4 Mon Sep 17 00:00:00 2001 From: "Rodrigo C. Moraes" Date: Fri, 3 May 2024 15:48:43 -0300 Subject: [PATCH 375/381] fix: lint errors --- packer/plugin-getter/plugins.go | 2 +- packer/plugin-getter/plugins_test.go | 2 -- packer/plugin.go | 5 ----- 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/packer/plugin-getter/plugins.go b/packer/plugin-getter/plugins.go index 69c49387030..1cd10a230ea 100644 --- a/packer/plugin-getter/plugins.go +++ b/packer/plugin-getter/plugins.go @@ -938,6 +938,6 @@ func init() { // Should never error if both components are set localAPIVersion, err = NewAPIVersion(fmt.Sprintf("x%s.%s", pluginsdk.APIVersionMajor, pluginsdk.APIVersionMinor)) if err != nil { - panic(fmt.Sprintf("malformed API version in Packer. This is a programming error, please open an error to report it.")) + panic("malformed API version in Packer. This is a programming error, please open an error to report it.") } } diff --git a/packer/plugin-getter/plugins_test.go b/packer/plugin-getter/plugins_test.go index 85bcab42e80..32e82ef191d 100644 --- a/packer/plugin-getter/plugins_test.go +++ b/packer/plugin-getter/plugins_test.go @@ -26,8 +26,6 @@ var ( pluginFolderTwo = filepath.Join("testdata", "plugins_2") - pluginFolderThree = filepath.Join("testdata", "plugins_3") - pluginFolderWrongChecksums = filepath.Join("testdata", "wrong_checksums") ) diff --git a/packer/plugin.go b/packer/plugin.go index de85071d7ad..8ad1ed33e62 100644 --- a/packer/plugin.go +++ b/packer/plugin.go @@ -22,11 +22,6 @@ import ( plugingetter "github.com/hashicorp/packer/packer/plugin-getter" ) -var defaultChecksummer = plugingetter.Checksummer{ - Type: "sha256", - Hash: sha256.New(), -} - // PluginConfig helps load and use packer plugins type PluginConfig struct { PluginDirectory string From 72d75d91682c9be70edb49f89d49ec06a3ef1224 Mon Sep 17 00:00:00 2001 From: "Rodrigo C. Moraes" Date: Fri, 3 May 2024 16:02:49 -0300 Subject: [PATCH 376/381] upgrade golangci-lint to fix the typecheck error --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index ed46303684f..bf4cf578172 100644 --- a/Makefile +++ b/Makefile @@ -55,7 +55,7 @@ install-gen-deps: ## Install dependencies for code generation install-lint-deps: ## Install linter dependencies @echo "==> Updating linter dependencies..." - @curl -sSfL -q https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(GOPATH)/bin v1.52.0 + @curl -sSfL -q https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(GOPATH)/bin v1.58.0 dev: ## Build and install a development build @grep 'const VersionPrerelease = ""' version/version.go > /dev/null ; if [ $$? -eq 0 ]; then \ From 93d5356cab514bfe4111d07ffca603aa5a5d45ae Mon Sep 17 00:00:00 2001 From: "Rodrigo C. Moraes" Date: Fri, 3 May 2024 16:27:46 -0300 Subject: [PATCH 377/381] fix: rm deprecated lints --- .golangci.yml | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 656b0373ac5..83039d08ba1 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -27,10 +27,17 @@ issues: # Maximum count of issues with the same text. Set to 0 to disable. Default is 3. max-same-issues: 0 + # which files to skip: they will be analyzed, but issues from them + # won't be reported. Default value is empty list, but there is + # no need to include all autogenerated files, we confidently recognize + # autogenerated files. If it's not please let us know. + exclude-files: + - ".*\\.hcl2spec\\.go$" + # - lib/bad.go + linters: disable-all: true enable: - - deadcode - errcheck - goimports - gosimple @@ -39,7 +46,6 @@ linters: - staticcheck - unconvert - unused - - varcheck fast: true # options for analysis running @@ -72,14 +78,6 @@ run: # vendor$, third_party$, testdata$, examples$, Godeps$, builtin$ skip-dirs-use-default: true - # which files to skip: they will be analyzed, but issues from them - # won't be reported. Default value is empty list, but there is - # no need to include all autogenerated files, we confidently recognize - # autogenerated files. If it's not please let us know. - skip-files: - - ".*\\.hcl2spec\\.go$" - # - lib/bad.go - # by default isn't set. If set we pass it to "go list -mod={option}". From "go help modules": # If invoked with -mod=readonly, the go command is disallowed from the implicit # automatic updating of go.mod described above. Instead, it fails when any changes @@ -93,7 +91,7 @@ run: # output configuration options output: # colored-line-number|line-number|json|tab|checkstyle|code-climate, default is "colored-line-number" - format: colored-line-number + formats: colored-line-number # print lines of code with issue, default is true print-issued-lines: true From d081c4a2756fd308a4b2b0f0b183f9dd6a3a69a8 Mon Sep 17 00:00:00 2001 From: "Rodrigo C. Moraes" Date: Fri, 3 May 2024 16:40:59 -0300 Subject: [PATCH 378/381] set new version of the packer --- version/version.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version/version.go b/version/version.go index 28785ff49e9..c2157873583 100644 --- a/version/version.go +++ b/version/version.go @@ -27,7 +27,7 @@ var ( // for tests to work. // A pre-release marker for the version can also be specified (e.g -dev). If this is omitted // The main version number that is being run at the moment. - Version = "1.8.5-incognia.2" + Version = "1.8.5-incognia.3" // A pre-release marker for the version. If this is "" (empty string) // then it means that it is a final release. Otherwise, this is a pre-release // such as "dev" (in development), "beta", "rc1", etc. From 5f47c99ec4ba31037740464c2abc903efc2b01f8 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 7 May 2024 09:43:00 -0400 Subject: [PATCH 379/381] Bump actions/checkout to address Node.js 16 deprecation issues --- .github/workflows/acceptance-test.yml | 4 ++-- .github/workflows/build.yml | 16 ++++++++-------- .github/workflows/create-release-branch.yml | 2 +- .github/workflows/go-test.yml | 8 ++++---- .github/workflows/go-validate.yml | 10 +++++----- .github/workflows/issue-comment-created.yml | 2 +- .github/workflows/issues-opened.yml | 2 +- .github/workflows/nightly-release.yml | 2 +- 8 files changed, 23 insertions(+), 23 deletions(-) diff --git a/.github/workflows/acceptance-test.yml b/.github/workflows/acceptance-test.yml index 783b6bdccde..6d2efcf5584 100644 --- a/.github/workflows/acceptance-test.yml +++ b/.github/workflows/acceptance-test.yml @@ -19,7 +19,7 @@ jobs: outputs: go-version: ${{ steps.get-go-version.outputs.go-version }} steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - name: 'Determine Go version' id: get-go-version # We use .go-version as our source of truth for current Go @@ -40,7 +40,7 @@ jobs: # Packer GH Token for API Rate Limiting PACKER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: go-version: ${{ needs.get-go-version.outputs.go-version }} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0cc4a511d5f..fce2600673a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,7 @@ jobs: outputs: go-version: ${{ steps.get-go-version.outputs.go-version }} steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - name: 'Determine Go version' id: get-go-version # We use .go-version as our source of truth for current Go @@ -44,7 +44,7 @@ jobs: product-prerelease-version: ${{ steps.set-product-version.outputs.prerelease-product-version }} set-ld-flags: ${{ steps.set-ld-flags.outputs.set-ld-flags }} steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - name: set product version id: set-product-version uses: hashicorp/actions-set-product-version@v1 @@ -67,7 +67,7 @@ jobs: filepath: ${{ steps.generate-metadata-file.outputs.filepath }} steps: - name: 'Checkout directory' - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - name: Generate metadata file id: generate-metadata-file uses: hashicorp/actions-generate-metadata@main @@ -105,7 +105,7 @@ jobs: GOPRIVATE: "github.com/hashicorp" GO111MODULE: on steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - name: Go Build env: PRODUCT_VERSION: ${{ needs.set-product-version.outputs.product-version }} @@ -143,7 +143,7 @@ jobs: GO111MODULE: on steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - name: Go Build env: PRODUCT_VERSION: ${{ needs.set-product-version.outputs.product-version }} @@ -213,7 +213,7 @@ jobs: GO111MODULE: on steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - name: Go Build env: PRODUCT_VERSION: ${{ needs.set-product-version.outputs.product-version }} @@ -244,7 +244,7 @@ jobs: env: version: ${{ needs.set-product-version.outputs.product-version }} steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - name: Docker Build (Action) uses: hashicorp/actions-docker-build@v1 with: @@ -274,7 +274,7 @@ jobs: env: version: ${{ needs.set-product-version.outputs.product-version }} steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - name: Docker Build (Action) uses: hashicorp/actions-docker-build@v1 with: diff --git a/.github/workflows/create-release-branch.yml b/.github/workflows/create-release-branch.yml index 780087058b7..eecbb73bedb 100644 --- a/.github/workflows/create-release-branch.yml +++ b/.github/workflows/create-release-branch.yml @@ -4,7 +4,7 @@ jobs: create-branch: runs-on: ubuntu-latest steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - uses: hashicorp/actions-create-release-branch@v1 with: token: ${{ secrets.ELEVATED_GITHUB_TOKEN }} diff --git a/.github/workflows/go-test.yml b/.github/workflows/go-test.yml index 2f426d16a03..e6be663fe5f 100644 --- a/.github/workflows/go-test.yml +++ b/.github/workflows/go-test.yml @@ -24,7 +24,7 @@ jobs: outputs: go-version: ${{ steps.get-go-version.outputs.go-version }} steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - name: 'Determine Go version' id: get-go-version run: | @@ -36,7 +36,7 @@ jobs: runs-on: ubuntu-latest name: Linux go tests steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: go-version: ${{ needs.get-go-version.outputs.go-version }} @@ -47,7 +47,7 @@ jobs: runs-on: macos-latest name: Darwin go tests steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: go-version: ${{ needs.get-go-version.outputs.go-version }} @@ -58,7 +58,7 @@ jobs: runs-on: windows-latest name: Windows go tests steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: go-version: ${{ needs.get-go-version.outputs.go-version }} diff --git a/.github/workflows/go-validate.yml b/.github/workflows/go-validate.yml index a3c45f794ff..79ae1d268f0 100644 --- a/.github/workflows/go-validate.yml +++ b/.github/workflows/go-validate.yml @@ -20,7 +20,7 @@ jobs: outputs: go-version: ${{ steps.get-go-version.outputs.go-version }} steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - name: 'Determine Go version' id: get-go-version run: | @@ -32,7 +32,7 @@ jobs: runs-on: ubuntu-latest name: Go Mod Tidy steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: go-version: ${{ needs.get-go-version.outputs.go-version }} @@ -43,7 +43,7 @@ jobs: runs-on: ubuntu-latest name: Lint steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 with: fetch-depth: 0 - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 @@ -59,7 +59,7 @@ jobs: runs-on: ubuntu-latest name: Fmt check steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: go-version: ${{ needs.get-go-version.outputs.go-version }} @@ -70,7 +70,7 @@ jobs: runs-on: ubuntu-latest name: Generate check steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 with: go-version: ${{ needs.get-go-version.outputs.go-version }} diff --git a/.github/workflows/issue-comment-created.yml b/.github/workflows/issue-comment-created.yml index a5c112d2a15..2a466050b65 100644 --- a/.github/workflows/issue-comment-created.yml +++ b/.github/workflows/issue-comment-created.yml @@ -15,7 +15,7 @@ jobs: if: ${{contains(github.event.issue.labels.*.name, 'waiting-reply') || contains(github.event.issue.labels.*.name, 'stale')}} runs-on: ubuntu-latest steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - uses: actions-ecosystem/action-remove-labels@2ce5d41b4b6aa8503e285553f75ed56e0a40bae0 # v1.3.0 with: github_token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/issues-opened.yml b/.github/workflows/issues-opened.yml index 565b89af048..4831db33ee0 100644 --- a/.github/workflows/issues-opened.yml +++ b/.github/workflows/issues-opened.yml @@ -13,7 +13,7 @@ jobs: issues: write # for github/issue-labeler to create or remove labels runs-on: ubuntu-latest steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - uses: github/issue-labeler@98b5412841f6c4b0b3d9c29d53c13fad16bd7de2 # v3.2 with: repo-token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/nightly-release.yml b/.github/workflows/nightly-release.yml index e63c05ea30d..afe559dd2d5 100644 --- a/.github/workflows/nightly-release.yml +++ b/.github/workflows/nightly-release.yml @@ -24,7 +24,7 @@ jobs: needs: build-artifacts runs-on: ubuntu-latest steps: - - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - name: Download built artifacts uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 with: From 1a79aab50e30ead95eb93288b76c850e9593e85c Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 7 May 2024 10:50:00 -0400 Subject: [PATCH 380/381] Bump actions/setup-go to address Node.js 16 deprecation issues (#12957) --- .github/workflows/acceptance-test.yml | 2 +- .github/workflows/go-test.yml | 6 +++--- .github/workflows/go-validate.yml | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/acceptance-test.yml b/.github/workflows/acceptance-test.yml index 6d2efcf5584..e95bb0fae0e 100644 --- a/.github/workflows/acceptance-test.yml +++ b/.github/workflows/acceptance-test.yml @@ -41,7 +41,7 @@ jobs: PACKER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 + - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # 5.0.0 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - name: IAM Assume Role diff --git a/.github/workflows/go-test.yml b/.github/workflows/go-test.yml index e6be663fe5f..602b7f3cee3 100644 --- a/.github/workflows/go-test.yml +++ b/.github/workflows/go-test.yml @@ -37,7 +37,7 @@ jobs: name: Linux go tests steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 + - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # 5.0.0 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - run: TESTARGS="-coverprofile=coverage.txt -covermode=atomic" make ci @@ -48,7 +48,7 @@ jobs: name: Darwin go tests steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 + - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # 5.0.0 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - run: go test ./... -coverprofile=coverage.txt -covermode=atomic @@ -59,7 +59,7 @@ jobs: name: Windows go tests steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 + - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # 5.0.0 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - run: go test ./... -coverprofile=coverage.txt -covermode=atomic diff --git a/.github/workflows/go-validate.yml b/.github/workflows/go-validate.yml index 79ae1d268f0..a084acae6ee 100644 --- a/.github/workflows/go-validate.yml +++ b/.github/workflows/go-validate.yml @@ -33,7 +33,7 @@ jobs: name: Go Mod Tidy steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 + - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # 5.0.0 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - run: go mod tidy @@ -46,7 +46,7 @@ jobs: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 with: fetch-depth: 0 - - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 + - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # 5.0.0 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - run: echo "$GITHUB_SHA" @@ -60,7 +60,7 @@ jobs: name: Fmt check steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 + - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # 5.0.0 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - run: make fmt-check @@ -71,7 +71,7 @@ jobs: name: Generate check steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - - uses: actions/setup-go@fac708d6674e30b6ba41289acaab6d4b75aa0753 # v4.0.1 + - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # 5.0.0 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - run: make generate-check From 5e043ab3a07d539031777bca99eb6ac3f311d659 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Tue, 7 May 2024 12:59:45 -0400 Subject: [PATCH 381/381] Bump required actions to address Node.js 16 deprecation issue (#12958) * Bump required actions to address Node.js 16 deprecation issue * Update all tsccr approved actions ```shell tsccr-helper gha update -latest . ``` --- .github/workflows/acceptance-test.yml | 10 ++++----- .github/workflows/auto-close-stale-issues.yml | 2 +- .github/workflows/build.yml | 22 +++++++++---------- .github/workflows/create-release-branch.yml | 2 +- .github/workflows/go-test.yml | 14 ++++++------ .github/workflows/go-validate.yml | 18 +++++++-------- .github/workflows/issue-comment-created.yml | 2 +- .github/workflows/issues-opened.yml | 8 +++---- .github/workflows/jira.yml | 6 ++--- .github/workflows/lock.yml | 2 +- .github/workflows/nightly-release.yml | 14 ++++++------ 11 files changed, 50 insertions(+), 50 deletions(-) diff --git a/.github/workflows/acceptance-test.yml b/.github/workflows/acceptance-test.yml index e95bb0fae0e..126b751d060 100644 --- a/.github/workflows/acceptance-test.yml +++ b/.github/workflows/acceptance-test.yml @@ -19,7 +19,7 @@ jobs: outputs: go-version: ${{ steps.get-go-version.outputs.go-version }} steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - name: 'Determine Go version' id: get-go-version # We use .go-version as our source of truth for current Go @@ -40,12 +40,12 @@ jobs: # Packer GH Token for API Rate Limiting PACKER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # 5.0.0 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - name: IAM Assume Role - uses: aws-actions/configure-aws-credentials@5fd3084fc36e372ff1fff382a39b10d03659f355 # v2.2.0 + uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502 # v4.0.2 with: role-to-assume: ${{ env.AWS_ROLE_ARN }} aws-region: ${{ env.AWS_REGION }} @@ -70,7 +70,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Send slack notification on failure - uses: slackapi/slack-github-action@e28cf165c92ffef168d23c5c9000cffc8a25e117 # v1.24.0 + uses: slackapi/slack-github-action@70cd7be8e40a46e8b0eced40b0de447bdb42f68e # v1.26.0 with: payload: | { diff --git a/.github/workflows/auto-close-stale-issues.yml b/.github/workflows/auto-close-stale-issues.yml index af4a089df5d..2e593d579fa 100644 --- a/.github/workflows/auto-close-stale-issues.yml +++ b/.github/workflows/auto-close-stale-issues.yml @@ -14,7 +14,7 @@ jobs: pull-requests: write # for actions/stale to close stale PRs runs-on: ubuntu-latest steps: - - uses: actions/stale@1160a2240286f5da8ec72b1c0816ce2481aabf84 # v8.0.0 + - uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # v9.0.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} days-before-issue-stale: 23 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fce2600673a..352a84945e9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,7 @@ jobs: outputs: go-version: ${{ steps.get-go-version.outputs.go-version }} steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - name: 'Determine Go version' id: get-go-version # We use .go-version as our source of truth for current Go @@ -44,7 +44,7 @@ jobs: product-prerelease-version: ${{ steps.set-product-version.outputs.prerelease-product-version }} set-ld-flags: ${{ steps.set-ld-flags.outputs.set-ld-flags }} steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - name: set product version id: set-product-version uses: hashicorp/actions-set-product-version@v1 @@ -67,7 +67,7 @@ jobs: filepath: ${{ steps.generate-metadata-file.outputs.filepath }} steps: - name: 'Checkout directory' - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - name: Generate metadata file id: generate-metadata-file uses: hashicorp/actions-generate-metadata@main @@ -75,7 +75,7 @@ jobs: version: ${{ needs.set-product-version.outputs.product-version }} product: ${{ env.REPO_NAME }} - - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: metadata.json path: ${{ steps.generate-metadata-file.outputs.filepath }} @@ -105,7 +105,7 @@ jobs: GOPRIVATE: "github.com/hashicorp" GO111MODULE: on steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - name: Go Build env: PRODUCT_VERSION: ${{ needs.set-product-version.outputs.product-version }} @@ -143,7 +143,7 @@ jobs: GO111MODULE: on steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - name: Go Build env: PRODUCT_VERSION: ${{ needs.set-product-version.outputs.product-version }} @@ -186,11 +186,11 @@ jobs: run: | echo "RPM_PACKAGE=$(basename out/*.rpm)" >> $GITHUB_ENV echo "DEB_PACKAGE=$(basename out/*.deb)" >> $GITHUB_ENV - - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: ${{ env.RPM_PACKAGE }} path: out/${{ env.RPM_PACKAGE }} - - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: ${{ env.DEB_PACKAGE }} path: out/${{ env.DEB_PACKAGE }} @@ -213,7 +213,7 @@ jobs: GO111MODULE: on steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - name: Go Build env: PRODUCT_VERSION: ${{ needs.set-product-version.outputs.product-version }} @@ -244,7 +244,7 @@ jobs: env: version: ${{ needs.set-product-version.outputs.product-version }} steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - name: Docker Build (Action) uses: hashicorp/actions-docker-build@v1 with: @@ -274,7 +274,7 @@ jobs: env: version: ${{ needs.set-product-version.outputs.product-version }} steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - name: Docker Build (Action) uses: hashicorp/actions-docker-build@v1 with: diff --git a/.github/workflows/create-release-branch.yml b/.github/workflows/create-release-branch.yml index eecbb73bedb..8eb406e3acf 100644 --- a/.github/workflows/create-release-branch.yml +++ b/.github/workflows/create-release-branch.yml @@ -4,7 +4,7 @@ jobs: create-branch: runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: hashicorp/actions-create-release-branch@v1 with: token: ${{ secrets.ELEVATED_GITHUB_TOKEN }} diff --git a/.github/workflows/go-test.yml b/.github/workflows/go-test.yml index 602b7f3cee3..d9da6ff7469 100644 --- a/.github/workflows/go-test.yml +++ b/.github/workflows/go-test.yml @@ -24,7 +24,7 @@ jobs: outputs: go-version: ${{ steps.get-go-version.outputs.go-version }} steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - name: 'Determine Go version' id: get-go-version run: | @@ -36,8 +36,8 @@ jobs: runs-on: ubuntu-latest name: Linux go tests steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # 5.0.0 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - run: TESTARGS="-coverprofile=coverage.txt -covermode=atomic" make ci @@ -47,8 +47,8 @@ jobs: runs-on: macos-latest name: Darwin go tests steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # 5.0.0 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - run: go test ./... -coverprofile=coverage.txt -covermode=atomic @@ -58,8 +58,8 @@ jobs: runs-on: windows-latest name: Windows go tests steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # 5.0.0 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - run: go test ./... -coverprofile=coverage.txt -covermode=atomic diff --git a/.github/workflows/go-validate.yml b/.github/workflows/go-validate.yml index a084acae6ee..a6264a7d1c0 100644 --- a/.github/workflows/go-validate.yml +++ b/.github/workflows/go-validate.yml @@ -20,7 +20,7 @@ jobs: outputs: go-version: ${{ steps.get-go-version.outputs.go-version }} steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - name: 'Determine Go version' id: get-go-version run: | @@ -32,8 +32,8 @@ jobs: runs-on: ubuntu-latest name: Go Mod Tidy steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # 5.0.0 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - run: go mod tidy @@ -43,10 +43,10 @@ jobs: runs-on: ubuntu-latest name: Lint steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: fetch-depth: 0 - - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # 5.0.0 + - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - run: echo "$GITHUB_SHA" @@ -59,8 +59,8 @@ jobs: runs-on: ubuntu-latest name: Fmt check steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # 5.0.0 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - run: make fmt-check @@ -70,8 +70,8 @@ jobs: runs-on: ubuntu-latest name: Generate check steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - - uses: actions/setup-go@93397bea11091df50f3d7e59dc26a7711a8bcfbe # 5.0.0 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 with: go-version: ${{ needs.get-go-version.outputs.go-version }} - run: make generate-check diff --git a/.github/workflows/issue-comment-created.yml b/.github/workflows/issue-comment-created.yml index 2a466050b65..a74693b7178 100644 --- a/.github/workflows/issue-comment-created.yml +++ b/.github/workflows/issue-comment-created.yml @@ -15,7 +15,7 @@ jobs: if: ${{contains(github.event.issue.labels.*.name, 'waiting-reply') || contains(github.event.issue.labels.*.name, 'stale')}} runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: actions-ecosystem/action-remove-labels@2ce5d41b4b6aa8503e285553f75ed56e0a40bae0 # v1.3.0 with: github_token: "${{ secrets.GITHUB_TOKEN }}" diff --git a/.github/workflows/issues-opened.yml b/.github/workflows/issues-opened.yml index 4831db33ee0..b3894b9082f 100644 --- a/.github/workflows/issues-opened.yml +++ b/.github/workflows/issues-opened.yml @@ -13,8 +13,8 @@ jobs: issues: write # for github/issue-labeler to create or remove labels runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 - - uses: github/issue-labeler@98b5412841f6c4b0b3d9c29d53c13fad16bd7de2 # v3.2 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: github/issue-labeler@c1b0f9f52a63158c4adc09425e858e87b32e9685 # v3.4 with: repo-token: "${{ secrets.GITHUB_TOKEN }}" configuration-path: .github/labeler-issue-triage.yml @@ -27,7 +27,7 @@ jobs: if: contains(github.event.issue.labels.*.name, 'question') runs-on: ubuntu-latest steps: - - uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1 + - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | github.rest.issues.createComment({ @@ -45,7 +45,7 @@ jobs: If you find the forum to be more helpful or if you've found the answer to your question elsewhere please feel free to post a response and close the issue.` }) - - uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1 + - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | github.rest.issues.addLabels({ diff --git a/.github/workflows/jira.yml b/.github/workflows/jira.yml index 8aa01f87bf4..4225f5f4aac 100644 --- a/.github/workflows/jira.yml +++ b/.github/workflows/jira.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Login - uses: atlassian/gajira-login@ca13f8850ea309cf44a6e4e0c49d9aa48ac3ca4c # v3 + uses: atlassian/gajira-login@45fd029b9f1d6d8926c6f04175aa80c0e42c9026 # v3.0.1 env: JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} @@ -61,7 +61,7 @@ jobs: - name: Create ticket id: create-ticket if: steps.search.outputs.issue == '' && github.event.label.name == 'sync to jira' && steps.set-ticket-type.outputs.type != 'Invalid' - uses: atlassian/gajira-create@1ff0b6bd115a780592b47bfbb63fc4629132e6ec # v3 + uses: atlassian/gajira-create@59e177c4f6451399df5b4911c2211104f171e669 # v3.0.1 with: project: HPR issuetype: "${{ steps.set-ticket-type.outputs.type }}" @@ -72,7 +72,7 @@ jobs: - name: Add tracking comment if: steps.create-ticket.outputs.issue != '' && steps.set-ticket-type.outputs.type != 'Invalid' - uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | github.rest.issues.createComment({ diff --git a/.github/workflows/lock.yml b/.github/workflows/lock.yml index f1f17b35893..7cbfe6c6c30 100644 --- a/.github/workflows/lock.yml +++ b/.github/workflows/lock.yml @@ -15,7 +15,7 @@ jobs: pull-requests: write # for dessant/lock-threads to lock PRs runs-on: ubuntu-latest steps: - - uses: dessant/lock-threads@be8aa5be94131386884a6da4189effda9b14aa21 # v4.0.1 + - uses: dessant/lock-threads@1bf7ec25051fe7c00bdd17e6a7cf3d7bfb7dc771 # v5.0.1 with: github-token: ${{ github.token }} issue-comment: > diff --git a/.github/workflows/nightly-release.yml b/.github/workflows/nightly-release.yml index afe559dd2d5..6a1696da0b8 100644 --- a/.github/workflows/nightly-release.yml +++ b/.github/workflows/nightly-release.yml @@ -24,9 +24,9 @@ jobs: needs: build-artifacts runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # 4.1.4 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - name: Download built artifacts - uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 + uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e # v4.1.7 with: path: out/ # Set BUILD_OUTPUT_LIST to out\-.\*,out\... @@ -38,7 +38,7 @@ jobs: echo "BUILD_OUTPUT_LIST=$(cat tmp2.txt | tr '\n' ',' | perl -ple 'chop')" >> $GITHUB_ENV rm -rf tmp.txt && rm -rf tmp2.txt - name: Advance nightly tag - uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: github-token: ${{ secrets.GITHUB_TOKEN }} script: | @@ -62,7 +62,7 @@ jobs: - name: Create a nightly GitHub prerelease id: create_prerelease continue-on-error: true - uses: ncipollo/release-action@a2e71bdd4e7dab70ca26a852f29600c98b33153e # v1.12.0 + uses: ncipollo/release-action@2c591bcc8ecdcd2db72b97d6147f871fcd833ba5 # v1.14.0 with: name: nightly artifacts: "${{ env.BUILD_OUTPUT_LIST }}" @@ -85,7 +85,7 @@ jobs: - name: Retry failed nightly GitHub prerelease id: create_prerelease_retry if: steps.create_prerelease.outcome == 'failure' - uses: ncipollo/release-action@a2e71bdd4e7dab70ca26a852f29600c98b33153e # v1.12.0 + uses: ncipollo/release-action@2c591bcc8ecdcd2db72b97d6147f871fcd833ba5 # v1.14.0 with: name: nightly artifacts: "${{ env.BUILD_OUTPUT_LIST }}" @@ -101,7 +101,7 @@ jobs: run: | echo "prerelease_id=${{ steps.create_prerelease_retry.outputs.id }}" >> $GITHUB_ENV - name: Publish nightly GitHub prerelease - uses: eregon/publish-release@46913fa2b3f7edc7345ae3c17f6d1b093a54916d # v1.0.5 + uses: eregon/publish-release@01df127f5e9a3c26935118e22e738d95b59d10ce # v1.0.6 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -117,7 +117,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Send slack notification on failure - uses: slackapi/slack-github-action@e28cf165c92ffef168d23c5c9000cffc8a25e117 # v1.24.0 + uses: slackapi/slack-github-action@70cd7be8e40a46e8b0eced40b0de447bdb42f68e # v1.26.0 with: payload: | {