Skip to content

Commit a0fa00a

Browse files
authored
[envsec] Enforce version (#1688)
## Summary Previously we didn't want to enforce a version because it requires a code change for every new version, but while testing this is good because it forces everyone to the same version of envsec. (in the future we won't use the envsec binary at all, so the version will be tightly coupled anyway) Don't merge this until v0.0.13 is actually created ## How was it tested?
1 parent d66f6ea commit a0fa00a

File tree

4 files changed

+49
-36
lines changed

4 files changed

+49
-36
lines changed

go.mod

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ require (
77
github.com/MakeNowJust/heredoc/v2 v2.0.1
88
github.com/alessio/shellescape v1.4.2
99
github.com/aws/aws-sdk-go-v2 v1.24.0
10-
github.com/aws/aws-sdk-go-v2/config v1.26.1
11-
github.com/aws/aws-sdk-go-v2/credentials v1.16.12
10+
github.com/aws/aws-sdk-go-v2/config v1.26.2
11+
github.com/aws/aws-sdk-go-v2/credentials v1.16.13
1212
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.87
1313
github.com/aws/aws-sdk-go-v2/service/s3 v1.40.0
14-
github.com/aws/aws-sdk-go-v2/service/sts v1.26.5
14+
github.com/aws/aws-sdk-go-v2/service/sts v1.26.6
1515
github.com/bmatcuk/doublestar/v4 v4.6.0
1616
github.com/briandowns/spinner v1.23.0
1717
github.com/cavaliergopher/grab/v3 v3.0.1
@@ -39,8 +39,8 @@ require (
3939
github.com/tailscale/hujson v0.0.0-20221223112325-20486734a56a
4040
github.com/wk8/go-ordered-map/v2 v2.1.8
4141
github.com/zealic/go2node v0.1.0
42-
go.jetpack.io/envsec v0.0.12-0.20231220042802-d784a6c23f33
43-
go.jetpack.io/pkg v0.0.0-20231220014237-68ef53318b2e
42+
go.jetpack.io/envsec v0.0.13
43+
go.jetpack.io/pkg v0.0.0-20231220195442-0c2f1e897695
4444
golang.org/x/exp v0.0.0-20231219180239-dc181d75b848
4545
golang.org/x/mod v0.14.0
4646
golang.org/x/sync v0.5.0
@@ -65,6 +65,7 @@ require (
6565
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.36 // indirect
6666
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.9 // indirect
6767
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.15.4 // indirect
68+
github.com/aws/aws-sdk-go-v2/service/ssm v1.44.6 // indirect
6869
github.com/aws/aws-sdk-go-v2/service/sso v1.18.5 // indirect
6970
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.5 // indirect
7071
github.com/aws/smithy-go v1.19.0 // indirect
@@ -120,7 +121,7 @@ require (
120121
go.jetpack.io/typeid v1.0.0 // indirect
121122
go4.org v0.0.0-20200411211856-f5505b9728dd // indirect
122123
golang.org/x/crypto v0.17.0 // indirect
123-
golang.org/x/oauth2 v0.14.0 // indirect
124+
golang.org/x/oauth2 v0.15.0 // indirect
124125
golang.org/x/sys v0.15.0 // indirect
125126
golang.org/x/term v0.15.0 // indirect
126127
golang.org/x/text v0.14.0 // indirect

go.sum

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,13 @@ github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.13/go.mod h1:gpAbvyDG
5050
github.com/aws/aws-sdk-go-v2/config v1.18.42/go.mod h1:4AZM3nMMxwlG+eZlxvBKqwVbkDLlnN2a4UGTL6HjaZI=
5151
github.com/aws/aws-sdk-go-v2/config v1.26.1 h1:z6DqMxclFGL3Zfo+4Q0rLnAZ6yVkzCRxhRMsiRQnD1o=
5252
github.com/aws/aws-sdk-go-v2/config v1.26.1/go.mod h1:ZB+CuKHRbb5v5F0oJtGdhFTelmrxd4iWO1lf0rQwSAg=
53+
github.com/aws/aws-sdk-go-v2/config v1.26.2 h1:+RWLEIWQIGgrz2pBPAUoGgNGs1TOyF4Hml7hCnYj2jc=
54+
github.com/aws/aws-sdk-go-v2/config v1.26.2/go.mod h1:l6xqvUxt0Oj7PI/SUXYLNyZ9T/yBPn3YTQcJLLOdtR8=
5355
github.com/aws/aws-sdk-go-v2/credentials v1.13.40/go.mod h1:VtEHVAAqDWASwdOqj/1huyT6uHbs5s8FUHfDQdky/Rs=
5456
github.com/aws/aws-sdk-go-v2/credentials v1.16.12 h1:v/WgB8NxprNvr5inKIiVVrXPuuTegM+K8nncFkr1usU=
5557
github.com/aws/aws-sdk-go-v2/credentials v1.16.12/go.mod h1:X21k0FjEJe+/pauud82HYiQbEr9jRKY3kXEIQ4hXeTQ=
58+
github.com/aws/aws-sdk-go-v2/credentials v1.16.13 h1:WLABQ4Cp4vXtXfOWOS3MEZKr6AAYUpMczLhgKtAjQ/8=
59+
github.com/aws/aws-sdk-go-v2/credentials v1.16.13/go.mod h1:Qg6x82FXwW0sJHzYruxGiuApNo31UEtJvXVSZAXeWiw=
5660
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.11/go.mod h1:TEPP4tENqBGO99KwVpV9MlOX4NSrSLP8u3KRy2CDwA8=
5761
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.10 h1:w98BT5w+ao1/r5sUuiH6JkVzjowOKeOJRHERyy1vh58=
5862
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.10/go.mod h1:K2WGI7vUvkIv1HoNbfBA1bvIZ+9kL3YVmWxeKuLQsiw=
@@ -81,6 +85,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.15.4 h1:v0jkRigbSD6uOd
8185
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.15.4/go.mod h1:LhTyt8J04LL+9cIt7pYJ5lbS/U98ZmXovLOR/4LUsk8=
8286
github.com/aws/aws-sdk-go-v2/service/s3 v1.40.0 h1:wl5dxN1NONhTDQD9uaEvNsDRX29cBmGED/nl0jkWlt4=
8387
github.com/aws/aws-sdk-go-v2/service/s3 v1.40.0/go.mod h1:rDGMZA7f4pbmTtPOk5v5UM2lmX6UAbRnMDJeDvnH7AM=
88+
github.com/aws/aws-sdk-go-v2/service/ssm v1.44.6 h1:EZw+TRx/4qlfp6VJ0P1sx04Txd9yGNK+NiO1upaXmh4=
89+
github.com/aws/aws-sdk-go-v2/service/ssm v1.44.6/go.mod h1:uXndCJoDO9gpuK24rNWVCnrGNUydKFEAYAZ7UU9S0rQ=
8490
github.com/aws/aws-sdk-go-v2/service/sso v1.14.1/go.mod h1:fIAwKQKBFu90pBxx07BFOMJLpRUGu8VOzLJakeY+0K4=
8591
github.com/aws/aws-sdk-go-v2/service/sso v1.18.5 h1:ldSFWz9tEHAwHNmjx2Cvy1MjP5/L9kNoR0skc6wyOOM=
8692
github.com/aws/aws-sdk-go-v2/service/sso v1.18.5/go.mod h1:CaFfXLYL376jgbP7VKC96uFcU8Rlavak0UlAwk1Dlhc=
@@ -90,6 +96,8 @@ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.5/go.mod h1:W+nd4wWDVkSUIox9b
9096
github.com/aws/aws-sdk-go-v2/service/sts v1.22.0/go.mod h1:VC7JDqsqiwXukYEDjoHh9U0fOJtNWh04FPQz4ct4GGU=
9197
github.com/aws/aws-sdk-go-v2/service/sts v1.26.5 h1:5UYvv8JUvllZsRnfrcMQ+hJ9jNICmcgKPAO1CER25Wg=
9298
github.com/aws/aws-sdk-go-v2/service/sts v1.26.5/go.mod h1:XX5gh4CB7wAs4KhcF46G6C8a2i7eupU19dcAAE+EydU=
99+
github.com/aws/aws-sdk-go-v2/service/sts v1.26.6 h1:HJeiuZ2fldpd0WqngyMR6KW7ofkXNLyOaHwEIGm39Cs=
100+
github.com/aws/aws-sdk-go-v2/service/sts v1.26.6/go.mod h1:XX5gh4CB7wAs4KhcF46G6C8a2i7eupU19dcAAE+EydU=
93101
github.com/aws/smithy-go v1.14.2/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA=
94102
github.com/aws/smithy-go v1.19.0 h1:KWFKQV80DpP3vJrrA9sVAHQ5gc2z8i4EzrLhLlWXcBM=
95103
github.com/aws/smithy-go v1.19.0/go.mod h1:NukqUGpCZIILqqiV0NIjeFh24kd/FAa4beRb6nbIUPE=
@@ -367,8 +375,12 @@ github.com/zealic/go2node v0.1.0 h1:ofxpve08cmLJBwFdI0lPCk9jfwGWOSD+s6216x0oAaA=
367375
github.com/zealic/go2node v0.1.0/go.mod h1:GrkFr+HctXwP7vzcU9RsgtAeJjTQ6Ud0IPCQAqpTfBg=
368376
go.jetpack.io/envsec v0.0.12-0.20231220042802-d784a6c23f33 h1:E7PQw+0KO7LmtT2ANOql7/cpwm2pQ6OyxttIXYXSqLE=
369377
go.jetpack.io/envsec v0.0.12-0.20231220042802-d784a6c23f33/go.mod h1:bR8d9A7SnjABK0uvjJLRedJdFRiPOWkDoo+W374z6X4=
378+
go.jetpack.io/envsec v0.0.13 h1:ZtA747aKU/cjDOMwaiqybKu5HG9dly8/T0p4bxLEvK0=
379+
go.jetpack.io/envsec v0.0.13/go.mod h1:K+gqk7llRfXcGF4zB4WHu6m1/DocSthk4Fh6Dx71doc=
370380
go.jetpack.io/pkg v0.0.0-20231220014237-68ef53318b2e h1:XYnuIOYcIStIb2WG6krxtln5YlzY66+QdQU78jMAgmI=
371381
go.jetpack.io/pkg v0.0.0-20231220014237-68ef53318b2e/go.mod h1:3bunF5jJUIXf8vWXvu4PHWfHuDj3hgzOyhTXeoBH8Dk=
382+
go.jetpack.io/pkg v0.0.0-20231220195442-0c2f1e897695 h1:ttpYfHeXn9towh6MGjGbd9y+dbSvWYfu/WYoW4kRrlM=
383+
go.jetpack.io/pkg v0.0.0-20231220195442-0c2f1e897695/go.mod h1:3bunF5jJUIXf8vWXvu4PHWfHuDj3hgzOyhTXeoBH8Dk=
372384
go.jetpack.io/typeid v1.0.0 h1:8gQ+iYGdyiQ0Pr40ydSB/PzMOIwlXX5DTojp1CBeSPQ=
373385
go.jetpack.io/typeid v1.0.0/go.mod h1:+UPEaECUgFxgAjFPn5Yf9eO/3ft/3xZ98Eahv9JW/GQ=
374386
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
@@ -441,6 +453,8 @@ golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4Iltr
441453
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
442454
golang.org/x/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0=
443455
golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM=
456+
golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ=
457+
golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM=
444458
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
445459
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
446460
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=

internal/boxcli/envsec.go

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,9 @@ package boxcli
66
import (
77
"github.com/pkg/errors"
88
"github.com/spf13/cobra"
9-
"go.jetpack.io/devbox/internal/build"
109
"go.jetpack.io/devbox/internal/devbox"
1110
"go.jetpack.io/devbox/internal/devbox/devopt"
12-
"go.jetpack.io/envsec/pkg/envsec"
13-
"go.jetpack.io/pkg/envvar"
11+
envsecIntegration "go.jetpack.io/devbox/internal/integrations/envsec"
1412
)
1513

1614
type envsecInitCmdFlags struct {
@@ -59,23 +57,10 @@ func envsecInitFunc(cmd *cobra.Command, flags envsecInitCmdFlags) error {
5957
if err != nil {
6058
return errors.WithStack(err)
6159
}
62-
envsec := defaultEnvsec(cmd, box.ProjectDir())
60+
envsec := envsecIntegration.DefaultEnvsec(cmd.ErrOrStderr(), box.ProjectDir())
6361
if err := envsec.NewProject(cmd.Context(), flags.force); err != nil {
6462
return errors.WithStack(err)
6563
}
6664
box.Config().SetStringField("EnvFrom", "envsec")
6765
return box.Config().SaveTo(box.ProjectDir())
6866
}
69-
70-
func defaultEnvsec(cmd *cobra.Command, workingDir string) *envsec.Envsec {
71-
return &envsec.Envsec{
72-
APIHost: build.JetpackAPIHost(),
73-
Auth: envsec.AuthConfig{
74-
ClientID: envvar.Get("ENVSEC_CLIENT_ID", build.ClientID()),
75-
Issuer: envvar.Get("ENVSEC_ISSUER", build.Issuer()),
76-
},
77-
IsDev: build.IsDev,
78-
Stderr: cmd.ErrOrStderr(),
79-
WorkingDir: workingDir,
80-
}
81-
}

internal/integrations/envsec/envsec.go

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,18 @@ import (
44
"bytes"
55
"context"
66
"encoding/json"
7+
"io"
8+
"os"
79
"os/exec"
810
"path/filepath"
911

1012
"github.com/pkg/errors"
1113
"go.jetpack.io/devbox/internal/boxcli/usererr"
14+
"go.jetpack.io/devbox/internal/build"
1215
"go.jetpack.io/devbox/internal/debug"
1316
"go.jetpack.io/devbox/internal/devpkg/pkgtype"
17+
"go.jetpack.io/envsec/pkg/envsec"
18+
"go.jetpack.io/pkg/envvar"
1419
)
1520

1621
var (
@@ -25,7 +30,7 @@ func Env(ctx context.Context, projectDir, environment string) (map[string]string
2530
return envCache, nil
2631
}
2732

28-
if err := ensureInitialized(ctx, projectDir); err != nil {
33+
if err := ensureInitialized(projectDir); err != nil {
2934
return nil, err
3035
}
3136

@@ -44,7 +49,7 @@ func EnsureInstalled(ctx context.Context) (string, error) {
4449
return binPathCache, nil
4550
}
4651

47-
paths, err := pkgtype.RunXClient().Install(ctx, "jetpack-io/envsec")
52+
paths, err := pkgtype.RunXClient().Install(ctx, "jetpack-io/envsec@v0.0.13")
4853
if err != nil {
4954
return "", errors.Wrap(err, "failed to install envsec")
5055
}
@@ -57,18 +62,13 @@ func EnsureInstalled(ctx context.Context) (string, error) {
5762
return binPathCache, nil
5863
}
5964

60-
func ensureInitialized(ctx context.Context, projectDir string) error {
61-
binPath, err := EnsureInstalled(ctx)
65+
func ensureInitialized(projectDir string) error {
66+
envsec := DefaultEnvsec(os.Stderr, projectDir)
67+
_, err := envsec.ProjectConfig(projectDir)
6268
if err != nil {
63-
return err
64-
}
65-
cmd := exec.Command(binPath, "init", "--json-errors")
66-
cmd.Dir = projectDir
67-
var bufErr bytes.Buffer
68-
cmd.Stderr = &bufErr
69-
70-
if err := cmd.Run(); err != nil {
71-
return handleError(&bufErr, err)
69+
return errors.New(
70+
"envsec project is not initialized. Use `devbox envsec init` to initialize",
71+
)
7272
}
7373
return nil
7474
}
@@ -118,3 +118,16 @@ func handleError(stderr *bytes.Buffer, err error) error {
118118
}
119119
return errors.WithStack(err)
120120
}
121+
122+
func DefaultEnvsec(stderr io.Writer, workingDir string) *envsec.Envsec {
123+
return &envsec.Envsec{
124+
APIHost: build.JetpackAPIHost(),
125+
Auth: envsec.AuthConfig{
126+
ClientID: envvar.Get("ENVSEC_CLIENT_ID", build.ClientID()),
127+
Issuer: envvar.Get("ENVSEC_ISSUER", build.Issuer()),
128+
},
129+
IsDev: build.IsDev,
130+
Stderr: stderr,
131+
WorkingDir: workingDir,
132+
}
133+
}

0 commit comments

Comments
 (0)