Skip to content

Commit 8676f3b

Browse files
author
Chris Gilmer
authored
Merge pull request #72 from trussworks/cg_upgrade_aws_vault_code
Upgrade the version of aws-vault to 5.4.4
2 parents ef67a1b + 1838f37 commit 8676f3b

File tree

4 files changed

+44
-41
lines changed

4 files changed

+44
-41
lines changed

cmd/setup.go

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,10 @@ func setupUserCheckConfig(v *viper.Viper) error {
9090
type SetupConfig struct {
9191
Logger *log.Logger
9292
Name string
93-
BaseProfile *vault.Profile
94-
RoleProfile *vault.Profile
93+
BaseProfile *vault.ProfileSection
94+
RoleProfile *vault.ProfileSection
9595
Output string
96-
Config *vault.Config
96+
Config *vault.ConfigFile
9797
AccessKeyID string
9898
SecretAccessKey string
9999
QrTempFile *os.File
@@ -191,7 +191,7 @@ func (sc *SetupConfig) newMFASession() (*session.Session, error) {
191191
}
192192
stsClient := sts.New(basicSession)
193193
getSessionTokenOutput, err := stsClient.GetSessionToken(&sts.GetSessionTokenInput{
194-
SerialNumber: aws.String(sc.BaseProfile.MFASerial),
194+
SerialNumber: aws.String(sc.BaseProfile.MfaSerial),
195195
TokenCode: aws.String(mfaToken),
196196
})
197197
if err != nil {
@@ -241,8 +241,8 @@ func (sc *SetupConfig) GetMFADevice() error {
241241
}
242242
mfaDevice := mfaDeviceOutput.MFADevices[0]
243243

244-
sc.BaseProfile.MFASerial = *mfaDevice.SerialNumber
245-
sc.RoleProfile.MFASerial = *mfaDevice.SerialNumber
244+
sc.BaseProfile.MfaSerial = *mfaDevice.SerialNumber
245+
sc.RoleProfile.MfaSerial = *mfaDevice.SerialNumber
246246

247247
return nil
248248
}
@@ -267,8 +267,8 @@ func (sc *SetupConfig) CreateVirtualMFADevice() error {
267267
return fmt.Errorf("unable to create virtual MFA: %w", err)
268268
}
269269

270-
sc.BaseProfile.MFASerial = *mfaDeviceOutput.VirtualMFADevice.SerialNumber
271-
sc.RoleProfile.MFASerial = *mfaDeviceOutput.VirtualMFADevice.SerialNumber
270+
sc.BaseProfile.MfaSerial = *mfaDeviceOutput.VirtualMFADevice.SerialNumber
271+
sc.RoleProfile.MfaSerial = *mfaDeviceOutput.VirtualMFADevice.SerialNumber
272272

273273
// For the QR code, create a string that encodes:
274274
// otpauth://totp/$virtualMFADeviceName@$AccountName?secret=$Base32String
@@ -333,7 +333,7 @@ func getMFATokenPair(logger *log.Logger) MFATokenPair {
333333
// EnableVirtualMFADevice enables the user's MFA device
334334
func (sc *SetupConfig) EnableVirtualMFADevice() error {
335335
sc.Logger.Println("Enabling the virtual MFA device")
336-
if sc.BaseProfile.MFASerial == "" {
336+
if sc.BaseProfile.MfaSerial == "" {
337337
return fmt.Errorf("profile MFA serial must be set")
338338
}
339339

@@ -348,7 +348,7 @@ func (sc *SetupConfig) EnableVirtualMFADevice() error {
348348
enableMFADeviceInput := &iam.EnableMFADeviceInput{
349349
AuthenticationCode1: aws.String(mfaTokenPair.Token1),
350350
AuthenticationCode2: aws.String(mfaTokenPair.Token2),
351-
SerialNumber: aws.String(sc.BaseProfile.MFASerial),
351+
SerialNumber: aws.String(sc.BaseProfile.MfaSerial),
352352
UserName: aws.String(sc.Name),
353353
}
354354

@@ -416,16 +416,16 @@ func (sc *SetupConfig) RotateAccessKeys() error {
416416
// profile.
417417
func (sc *SetupConfig) AddVaultProfile() error {
418418
creds := credentials.Value{AccessKeyID: sc.AccessKeyID, SecretAccessKey: sc.SecretAccessKey}
419-
provider := &vault.KeyringProvider{Keyring: *sc.Keyring, Profile: sc.BaseProfile.Name}
420419

421-
err := provider.Store(creds)
422-
if err != nil {
423-
return fmt.Errorf("unable to store credentials: %w", err)
420+
ckr := &vault.CredentialKeyring{Keyring: *sc.Keyring}
421+
errSet := ckr.Set(sc.BaseProfile.Name, creds)
422+
if errSet != nil {
423+
return fmt.Errorf("unable to set base profile credentials: %w", errSet)
424424
}
425425

426426
sc.Logger.Printf("Added credentials to profile %q in vault", sc.BaseProfile.Name)
427427

428-
err = deleteSession(sc.BaseProfile.Name, sc.Config, sc.Keyring, sc.Logger)
428+
err := deleteSession(sc.BaseProfile.Name, sc.Keyring, sc.Logger)
429429
if err != nil {
430430
return fmt.Errorf("unable to delete session: %w", err)
431431
}
@@ -480,7 +480,7 @@ func (sc *SetupConfig) UpdateAWSConfigFile() error {
480480
// RemoveVaultSession removes the aws-vault session for the profile.
481481
func (sc *SetupConfig) RemoveVaultSession() error {
482482
sc.Logger.Printf("Removing aws-vault session")
483-
err := deleteSession(sc.BaseProfile.Name, sc.Config, sc.Keyring, sc.Logger)
483+
err := deleteSession(sc.BaseProfile.Name, sc.Keyring, sc.Logger)
484484
if err != nil {
485485
return fmt.Errorf("unable to delete session: %w", err)
486486
}
@@ -505,11 +505,9 @@ func getKeyring(keychainName string) (*keyring.Keyring, error) {
505505
return &ring, nil
506506
}
507507

508-
func deleteSession(profile string, awsConfig *vault.Config, keyring *keyring.Keyring, logger *log.Logger) error {
509-
sessions, err := vault.NewKeyringSessions(*keyring, awsConfig)
510-
if err != nil {
511-
return fmt.Errorf("unable to create new keyring session: %w", err)
512-
}
508+
func deleteSession(profile string, keyring *keyring.Keyring, logger *log.Logger) error {
509+
credsKeyring := vault.CredentialKeyring{Keyring: *keyring}
510+
sessions := credsKeyring.Sessions()
513511

514512
if n, _ := sessions.Delete(profile); n > 0 {
515513
logger.Printf("Deleted %d existing sessions.\n", n)
@@ -620,14 +618,14 @@ func setupUserFunction(cmd *cobra.Command, args []string) error {
620618
logger.Fatal(err)
621619
}
622620

623-
baseProfile := vault.Profile{
621+
baseProfile := vault.ProfileSection{
624622
Name: fmt.Sprintf("%s-base",
625623
awsVaultProfile,
626624
),
627625
Region: awsRegion,
628626
}
629627

630-
roleProfile := vault.Profile{
628+
roleProfile := vault.ProfileSection{
631629
Name: awsVaultProfile,
632630
RoleARN: fmt.Sprintf("arn:%s:iam::%s:role/%s",
633631
partition,

cmd/setup_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@ output=json
3535
errRemove := os.Remove(f)
3636
assert.NoError(t, errRemove)
3737
}()
38-
baseProfile := vault.Profile{
38+
baseProfile := vault.ProfileSection{
3939
Name: "test-base",
4040
Region: "us-west-2",
4141
}
42-
roleProfile := vault.Profile{
42+
roleProfile := vault.ProfileSection{
4343
Name: "test-role",
4444
Region: "us-west-2",
4545
}

go.mod

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,28 @@ module github.com/trussworks/setup-new-aws-user
33
go 1.14
44

55
require (
6-
github.com/99designs/aws-vault v1.0.1-0.20191030013236-08380e6561cc
6+
github.com/99designs/aws-vault v1.0.1-0.20200507051055-ae369037cc75
77
github.com/99designs/keyring v1.1.5
8-
github.com/aws/aws-sdk-go v1.33.1
8+
github.com/aws/aws-sdk-go v1.33.5
99
github.com/danieljoos/wincred v1.1.0 // indirect
1010
github.com/fsnotify/fsnotify v1.4.9 // indirect
1111
github.com/go-playground/universal-translator v0.17.0 // indirect
12+
github.com/gopherjs/gopherjs v0.0.0-20190430165422-3e4dfb77656c // indirect
1213
github.com/keybase/go-keychain v0.0.0-20200502122510-cda31fe0c86d // indirect
1314
github.com/leodido/go-urn v1.2.0 // indirect
1415
github.com/mitchellh/mapstructure v1.3.2 // indirect
1516
github.com/pelletier/go-toml v1.8.0 // indirect
1617
github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4
1718
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
19+
github.com/smartystreets/assertions v1.0.0 // indirect
1820
github.com/spf13/afero v1.3.1 // indirect
1921
github.com/spf13/cast v1.3.1 // indirect
2022
github.com/spf13/cobra v1.0.0
2123
github.com/spf13/jwalterweatherman v1.1.0 // indirect
2224
github.com/spf13/pflag v1.0.5
2325
github.com/spf13/viper v1.7.0
2426
github.com/stretchr/testify v1.6.1
25-
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 // indirect
27+
golang.org/x/crypto v0.0.0-20200707235045-ab33eee955e0 // indirect
2628
golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae // indirect
2729
golang.org/x/text v0.3.3 // indirect
2830
gopkg.in/go-playground/assert.v1 v1.2.1 // indirect

go.sum

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,28 +11,30 @@ cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqCl
1111
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
1212
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
1313
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
14-
github.com/99designs/aws-vault v1.0.1-0.20191030013236-08380e6561cc h1:LvkmVHxD4e0kBiGmyMIu+IsK9ZIa1Ky9ESI2xmM9IcQ=
15-
github.com/99designs/aws-vault v1.0.1-0.20191030013236-08380e6561cc/go.mod h1:uMZxYSIbSixdBvLRO46R1OOeUY+J0crm/3mRsO2v+XU=
14+
github.com/99designs/aws-vault v1.0.1-0.20200507051055-ae369037cc75 h1:OHpiuZC2QFxQm3G1HQZIwadjik+hGLUaUc1WIt95I/w=
15+
github.com/99designs/aws-vault v1.0.1-0.20200507051055-ae369037cc75/go.mod h1:cGFtaMoU3SjRiAL7yrFVbZiHb2+GhE5xfbN0A6mouEI=
1616
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs=
1717
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4=
18-
github.com/99designs/keyring v1.1.3/go.mod h1:657DQuMrBZRtuL/voxVyiyb6zpMehlm5vLB9Qwrv904=
18+
github.com/99designs/keyring v1.1.4/go.mod h1:657DQuMrBZRtuL/voxVyiyb6zpMehlm5vLB9Qwrv904=
1919
github.com/99designs/keyring v1.1.5 h1:wLv7QyzYpFIyMSwOADq1CLTF9KbjbBfcnfmOGJ64aO4=
2020
github.com/99designs/keyring v1.1.5/go.mod h1:7hsVvt2qXgtadGevGJ4ujg+u8m6SpJ5TpHqTozIPqf0=
2121
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
2222
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
2323
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
2424
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
2525
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
26+
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM=
2627
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
2728
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
29+
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E=
2830
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
2931
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
3032
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
3133
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
3234
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
33-
github.com/aws/aws-sdk-go v1.25.17/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
34-
github.com/aws/aws-sdk-go v1.33.1 h1:yz9XmNzPshz/lhfAZvLfMnIS9HPo8+boGRcWqDVX+T0=
35-
github.com/aws/aws-sdk-go v1.33.1/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0=
35+
github.com/aws/aws-sdk-go v1.25.37/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
36+
github.com/aws/aws-sdk-go v1.33.5 h1:p2fr1ryvNTU6avUWLI+/H7FGv0TBIjzVM5WDgXBBv4U=
37+
github.com/aws/aws-sdk-go v1.33.5/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0=
3638
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
3739
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
3840
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
@@ -88,6 +90,8 @@ github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Z
8890
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
8991
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
9092
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
93+
github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg=
94+
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
9195
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
9296
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
9397
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
@@ -203,11 +207,11 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeV
203207
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
204208
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e h1:MRM5ITcdelLK2j1vwZ3Je0FKVCfqOLp5zO6trqMLYs0=
205209
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e/go.mod h1:XV66xRDqSt+GTGFMVlhk3ULuV0y9ZmzeVGR4mloJI3M=
210+
github.com/skratchdot/open-golang v0.0.0-20190402232053-79abb63cd66e h1:VAzdS5Nw68fbf5RZ8RDVlUvPXNU6Z3jtPCK/qvm4FoQ=
206211
github.com/skratchdot/open-golang v0.0.0-20190402232053-79abb63cd66e/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog=
207212
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
208213
github.com/smartystreets/assertions v1.0.0 h1:UVQPSSmc3qtTi+zPPkCXvZX9VvW/xT/NsRvKfwY81a8=
209214
github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM=
210-
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
211215
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
212216
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
213217
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
@@ -258,9 +262,9 @@ golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8U
258262
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
259263
golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
260264
golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
261-
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
262-
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
263-
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
265+
golang.org/x/crypto v0.0.0-20200210222208-86ce3cb69678/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
266+
golang.org/x/crypto v0.0.0-20200707235045-ab33eee955e0 h1:eIYIE7EC5/Wv5Kbz8bJPaq+TN3kq3W8S+LSm62vM0DY=
267+
golang.org/x/crypto v0.0.0-20200707235045-ab33eee955e0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
264268
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
265269
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
266270
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
@@ -294,7 +298,6 @@ golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn
294298
golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
295299
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
296300
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
297-
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
298301
golang.org/x/net v0.0.0-20200202094626-16171245cfb2 h1:CCH4IOTTfewWjGOlSp+zGcjutRKlBEZQ6wTn8ozI/nI=
299302
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
300303
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -320,7 +323,7 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w
320323
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
321324
golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
322325
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
323-
golang.org/x/sys v0.0.0-20191027211539-f8518d3b3627/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
326+
golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
324327
golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae h1:Ih9Yo4hSPImZOpfGuA4bR/ORKTAbhZo2AbWNRCnevdo=
325328
golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
326329
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@@ -370,6 +373,7 @@ google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZi
370373
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
371374
google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
372375
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
376+
gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=
373377
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
374378
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
375379
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
@@ -379,7 +383,6 @@ gopkg.in/go-playground/assert.v1 v1.2.1 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXa
379383
gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE=
380384
gopkg.in/go-playground/validator.v9 v9.31.0 h1:bmXmP2RSNtFES+bn4uYuHT7iJFJv7Vj+an+ZQdDaD1M=
381385
gopkg.in/go-playground/validator.v9 v9.31.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ=
382-
gopkg.in/ini.v1 v1.49.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
383386
gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
384387
gopkg.in/ini.v1 v1.57.0 h1:9unxIsFcTt4I55uWluz+UmL95q4kdJ0buvQ1ZIqVQww=
385388
gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=

0 commit comments

Comments
 (0)