Skip to content

Commit 2b76bb4

Browse files
Merge pull request #396 from linode/dev
Release v1.9.0
2 parents b8fddd0 + 23dfa49 commit 2b76bb4

8 files changed

Lines changed: 141 additions & 21 deletions

File tree

.web-docs/components/builder/linode/README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,9 @@ can also be supplied to override the typical auto-generated key:
127127

128128
- `image_regions` ([]string) - The regions where the outcome image will be replicated to.
129129

130+
- `image_share_group_ids` ([]int) - Image Share Group IDs to add the newly created private image to
131+
immediately after image creation.
132+
130133
- `interface_generation` (string) - Specifies the interface type for the Linode. The value can be either
131134
`legacy_config` or `linode`. The default value is determined by the
132135
`interfaces_for_new_linodes` setting in the account settings.
@@ -426,6 +429,7 @@ source "linode" "example" {
426429
image = "linode/debian11"
427430
image_description = "My Private Image"
428431
image_label = "private-image-${local.timestamp}"
432+
image_share_group_ids = [12345]
429433
instance_label = "temporary-linode-${local.timestamp}"
430434
instance_type = "g6-nanode-1"
431435
linode_token = "YOUR API TOKEN"
@@ -453,6 +457,7 @@ build {
453457
"instance_label": "temporary-linode-{{timestamp}}",
454458
"image_label": "private-image-{{timestamp}}",
455459
"image_description": "My Private Image",
460+
"image_share_group_ids": [12345],
456461
"ssh_username": "root"
457462
}
458463
}

builder/linode/builder_test.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -696,3 +696,34 @@ func TestBuilderPrepare_MetadataTagsFirewallID(t *testing.T) {
696696
t.Errorf("got %v, expected %v", b.config.Tags, expectedTags)
697697
}
698698
}
699+
700+
func TestBuilderPrepare_ImageShareGroupIDs(t *testing.T) {
701+
var b Builder
702+
config := testConfig()
703+
704+
delete(config, "image_share_group_ids")
705+
_, warnings, err := b.Prepare(config)
706+
if len(warnings) > 0 {
707+
t.Fatalf("bad: %#v", warnings)
708+
}
709+
if err != nil {
710+
t.Fatalf("unexpected error: %v", err)
711+
}
712+
if len(b.config.ImageShareGroupIDs) != 0 {
713+
t.Errorf("expected nil or empty, got %v", b.config.ImageShareGroupIDs)
714+
}
715+
716+
expected := []int{101, 202, 303}
717+
config["image_share_group_ids"] = expected
718+
b = Builder{}
719+
_, warnings, err = b.Prepare(config)
720+
if len(warnings) > 0 {
721+
t.Fatalf("bad: %#v", warnings)
722+
}
723+
if err != nil {
724+
t.Fatalf("should not have error: %s", err)
725+
}
726+
if !reflect.DeepEqual(b.config.ImageShareGroupIDs, expected) {
727+
t.Errorf("got %v, expected %v", b.config.ImageShareGroupIDs, expected)
728+
}
729+
}

builder/linode/config.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,10 @@ type Config struct {
159159
// The regions where the outcome image will be replicated to.
160160
ImageRegions []string `mapstructure:"image_regions" required:"false"`
161161

162+
// Image Share Group IDs to add the newly created private image to
163+
// immediately after image creation.
164+
ImageShareGroupIDs []int `mapstructure:"image_share_group_ids" required:"false"`
165+
162166
// Specifies the interface type for the Linode. The value can be either
163167
// `legacy_config` or `linode`. The default value is determined by the
164168
// `interfaces_for_new_linodes` setting in the account settings.

builder/linode/config.hcl2spec.go

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

builder/linode/step_create_image.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package linode
22

33
import (
44
"context"
5+
"fmt"
56

67
"github.com/hashicorp/packer-plugin-sdk/multistep"
78
packersdk "github.com/hashicorp/packer-plugin-sdk/packer"
@@ -45,6 +46,39 @@ func (s *stepCreateImage) Run(ctx context.Context, state multistep.StateBag) mul
4546
return handleError("Failed to wait for image creation", err)
4647
}
4748

49+
// Add the image to Image Share Groups, if configured
50+
if len(c.ImageShareGroupIDs) > 0 {
51+
for _, shareGroupID := range c.ImageShareGroupIDs {
52+
ui.Say(fmt.Sprintf(
53+
"Adding image %s to image share group %d...",
54+
image.ID,
55+
shareGroupID,
56+
))
57+
58+
_, err := s.client.ImageShareGroupAddImages(
59+
ctx,
60+
shareGroupID,
61+
linodego.ImageShareGroupAddImagesOptions{
62+
Images: []linodego.ImageShareGroupImage{
63+
{
64+
ID: image.ID,
65+
},
66+
},
67+
},
68+
)
69+
if err != nil {
70+
return handleError(
71+
fmt.Sprintf(
72+
"Failed to add image %s to image share group %d",
73+
image.ID,
74+
shareGroupID,
75+
),
76+
err,
77+
)
78+
}
79+
}
80+
}
81+
4882
if len(c.ImageRegions) > 0 {
4983
image, err = s.client.ReplicateImage(ctx, image.ID, linodego.ImageReplicateOptions{
5084
Regions: c.ImageRegions,

docs/builders/linode.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ source "linode" "example" {
186186
image = "linode/debian11"
187187
image_description = "My Private Image"
188188
image_label = "private-image-${local.timestamp}"
189+
image_share_group_ids = [12345]
189190
instance_label = "temporary-linode-${local.timestamp}"
190191
instance_type = "g6-nanode-1"
191192
linode_token = "YOUR API TOKEN"
@@ -213,6 +214,7 @@ build {
213214
"instance_label": "temporary-linode-{{timestamp}}",
214215
"image_label": "private-image-{{timestamp}}",
215216
"image_description": "My Private Image",
217+
"image_share_group_ids": [12345],
216218
"ssh_username": "root"
217219
}
218220
}

go.mod

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ toolchain go1.24.1
66

77
require (
88
github.com/hashicorp/hcl/v2 v2.24.0
9-
github.com/hashicorp/packer-plugin-sdk v0.6.4
9+
github.com/hashicorp/packer-plugin-sdk v0.6.5
1010
github.com/linode/linodego v1.64.0
1111
github.com/mitchellh/mapstructure v1.5.0
1212
github.com/zclconf/go-cty v1.16.3
13-
golang.org/x/crypto v0.46.0
13+
golang.org/x/crypto v0.47.0
1414
golang.org/x/oauth2 v0.34.0
1515
)
1616

@@ -27,6 +27,20 @@ require (
2727
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
2828
github.com/armon/go-metrics v0.4.1 // indirect
2929
github.com/aws/aws-sdk-go v1.44.114 // indirect
30+
github.com/aws/aws-sdk-go-v2 v1.37.2 // indirect
31+
github.com/aws/aws-sdk-go-v2/config v1.30.3 // indirect
32+
github.com/aws/aws-sdk-go-v2/credentials v1.18.3 // indirect
33+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.2 // indirect
34+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.2 // indirect
35+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.2 // indirect
36+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 // indirect
37+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 // indirect
38+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.2 // indirect
39+
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.37.0 // indirect
40+
github.com/aws/aws-sdk-go-v2/service/sso v1.27.0 // indirect
41+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.32.0 // indirect
42+
github.com/aws/aws-sdk-go-v2/service/sts v1.36.0 // indirect
43+
github.com/aws/smithy-go v1.22.5 // indirect
3044
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
3145
github.com/bodgit/ntlmssp v0.0.0-20240506230425-31973bb52d9b // indirect
3246
github.com/bodgit/windows v1.0.1 // indirect
@@ -98,14 +112,14 @@ require (
98112
github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
99113
go.opencensus.io v0.24.0 // indirect
100114
golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect
101-
golang.org/x/mod v0.30.0 // indirect
115+
golang.org/x/mod v0.31.0 // indirect
102116
golang.org/x/net v0.48.0 // indirect
103117
golang.org/x/sync v0.19.0 // indirect
104-
golang.org/x/sys v0.39.0 // indirect
105-
golang.org/x/term v0.38.0 // indirect
106-
golang.org/x/text v0.32.0 // indirect
118+
golang.org/x/sys v0.40.0 // indirect
119+
golang.org/x/term v0.39.0 // indirect
120+
golang.org/x/text v0.33.0 // indirect
107121
golang.org/x/time v0.12.0 // indirect
108-
golang.org/x/tools v0.39.0 // indirect
122+
golang.org/x/tools v0.40.0 // indirect
109123
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
110124
google.golang.org/api v0.150.0 // indirect
111125
google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b // indirect

go.sum

Lines changed: 42 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,34 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj
3737
github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
3838
github.com/aws/aws-sdk-go v1.44.114 h1:plIkWc/RsHr3DXBj4MEw9sEW4CcL/e2ryokc+CKyq1I=
3939
github.com/aws/aws-sdk-go v1.44.114/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
40+
github.com/aws/aws-sdk-go-v2 v1.37.2 h1:xkW1iMYawzcmYFYEV0UCMxc8gSsjCGEhBXQkdQywVbo=
41+
github.com/aws/aws-sdk-go-v2 v1.37.2/go.mod h1:9Q0OoGQoboYIAJyslFyF1f5K1Ryddop8gqMhWx/n4Wg=
42+
github.com/aws/aws-sdk-go-v2/config v1.30.3 h1:utupeVnE3bmB221W08P0Moz1lDI3OwYa2fBtUhl7TCc=
43+
github.com/aws/aws-sdk-go-v2/config v1.30.3/go.mod h1:NDGwOEBdpyZwLPlQkpKIO7frf18BW8PaCmAM9iUxQmI=
44+
github.com/aws/aws-sdk-go-v2/credentials v1.18.3 h1:ptfyXmv+ooxzFwyuBth0yqABcjVIkjDL0iTYZBSbum8=
45+
github.com/aws/aws-sdk-go-v2/credentials v1.18.3/go.mod h1:Q43Nci++Wohb0qUh4m54sNln0dbxJw8PvQWkrwOkGOI=
46+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.2 h1:nRniHAvjFJGUCl04F3WaAj7qp/rcz5Gi1OVoj5ErBkc=
47+
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.2/go.mod h1:eJDFKAMHHUvv4a0Zfa7bQb//wFNUXGrbFpYRCHe2kD0=
48+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.2 h1:sPiRHLVUIIQcoVZTNwqQcdtjkqkPopyYmIX0M5ElRf4=
49+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.2/go.mod h1:ik86P3sgV+Bk7c1tBFCwI3VxMoSEwl4YkRB9xn1s340=
50+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.2 h1:ZdzDAg075H6stMZtbD2o+PyB933M/f20e9WmCBC17wA=
51+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.2/go.mod h1:eE1IIzXG9sdZCB0pNNpMpsYTLl4YdOQD3njiVN1e/E4=
52+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d2KyU5X/BZxjOkRo=
53+
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo=
54+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 h1:6+lZi2JeGKtCraAj1rpoZfKqnQ9SptseRZioejfUOLM=
55+
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0/go.mod h1:eb3gfbVIxIoGgJsi9pGne19dhCBpK6opTYpQqAmdy44=
56+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.2 h1:oxmDEO14NBZJbK/M8y3brhMFEIGN4j8a6Aq8eY0sqlo=
57+
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.2/go.mod h1:4hH+8QCrk1uRWDPsVfsNDUup3taAjO8Dnx63au7smAU=
58+
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.37.0 h1:fC0s79wxfsbz/4WCvosbHLk2mb9ICjPyB+lWs6a0TGM=
59+
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.37.0/go.mod h1:6HxvKCop1trgfFlQGQmlq+WbMM5yPazMN9ClWFWGtDM=
60+
github.com/aws/aws-sdk-go-v2/service/sso v1.27.0 h1:j7/jTOjWeJDolPwZ/J4yZ7dUsxsWZEsxNwH5O7F8eEA=
61+
github.com/aws/aws-sdk-go-v2/service/sso v1.27.0/go.mod h1:M0xdEPQtgpNT7kdAX4/vOAPkFj60hSQRb7TvW9B0iug=
62+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.32.0 h1:ywQF2N4VjqX+Psw+jLjMmUL2g1RDHlvri3NxHA08MGI=
63+
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.32.0/go.mod h1:Z+qv5Q6b7sWiclvbJyPSOT1BRVU9wfSUPaqQzZ1Xg3E=
64+
github.com/aws/aws-sdk-go-v2/service/sts v1.36.0 h1:bRP/a9llXSSgDPk7Rqn5GD/DQCGo6uk95plBFKoXt2M=
65+
github.com/aws/aws-sdk-go-v2/service/sts v1.36.0/go.mod h1:tgBsFzxwl65BWkuJ/x2EUs59bD4SfYKgikvFDJi1S58=
66+
github.com/aws/smithy-go v1.22.5 h1:P9ATCXPMb2mPjYBgueqJNCA5S9UfktsW0tTxi+a7eqw=
67+
github.com/aws/smithy-go v1.22.5/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI=
4068
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
4169
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
4270
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
@@ -200,8 +228,8 @@ github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO
200228
github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc=
201229
github.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR/prTM=
202230
github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0=
203-
github.com/hashicorp/packer-plugin-sdk v0.6.4 h1:V9U7FDgLl18CuE9nURmekb623y4qktD9duT3UsLprCA=
204-
github.com/hashicorp/packer-plugin-sdk v0.6.4/go.mod h1:y5uwHqfjmr6u04S5iSNlWUuxqvNwy219fJFatNMCPB0=
231+
github.com/hashicorp/packer-plugin-sdk v0.6.5 h1:AOMtNg9ghJute3v0b/C2wSdEVLA2sxfEslM0Cl3u40Q=
232+
github.com/hashicorp/packer-plugin-sdk v0.6.5/go.mod h1:5Cg1oCyo0pyX/rUhDDs9LJJVnNBx+eeOHLYZdmtxY78=
205233
github.com/hashicorp/serf v0.10.1 h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY=
206234
github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4=
207235
github.com/hashicorp/vault/api v1.14.0 h1:Ah3CFLixD5jmjusOgm8grfN9M0d+Y8fVR2SW0K6pJLU=
@@ -373,17 +401,17 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh
373401
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
374402
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
375403
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
376-
golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU=
377-
golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0=
404+
golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8=
405+
golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A=
378406
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
379407
golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug=
380408
golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc=
381409
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
382410
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
383411
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
384412
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
385-
golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk=
386-
golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc=
413+
golang.org/x/mod v0.31.0 h1:HaW9xtz0+kOcWKwli0ZXy79Ix+UW/vOfmWI5QVd2tgI=
414+
golang.org/x/mod v0.31.0/go.mod h1:43JraMp9cGx1Rx3AqioxrbrhNsLl2l/iNAvuBkrezpg=
387415
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
388416
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
389417
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -445,21 +473,21 @@ golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBc
445473
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
446474
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
447475
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
448-
golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk=
449-
golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
476+
golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ=
477+
golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
450478
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
451479
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
452480
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
453-
golang.org/x/term v0.38.0 h1:PQ5pkm/rLO6HnxFR7N2lJHOZX6Kez5Y1gDSJla6jo7Q=
454-
golang.org/x/term v0.38.0/go.mod h1:bSEAKrOT1W+VSu9TSCMtoGEOUcKxOKgl3LE5QEF/xVg=
481+
golang.org/x/term v0.39.0 h1:RclSuaJf32jOqZz74CkPA9qFuVTX7vhLlpfj/IGWlqY=
482+
golang.org/x/term v0.39.0/go.mod h1:yxzUCTP/U+FzoxfdKmLaA0RV1WgE0VY7hXBwKtY/4ww=
455483
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
456484
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
457485
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
458486
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
459487
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
460488
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
461-
golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU=
462-
golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY=
489+
golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE=
490+
golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8=
463491
golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE=
464492
golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
465493
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -470,8 +498,8 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn
470498
golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
471499
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
472500
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
473-
golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ=
474-
golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ=
501+
golang.org/x/tools v0.40.0 h1:yLkxfA+Qnul4cs9QA3KnlFu0lVmd8JJfoq+E41uSutA=
502+
golang.org/x/tools v0.40.0/go.mod h1:Ik/tzLRlbscWpqqMRjyWYDisX8bG13FrdXp3o4Sr9lc=
475503
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
476504
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
477505
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk=

0 commit comments

Comments
 (0)