-
Notifications
You must be signed in to change notification settings - Fork 249
[envsec] Use runx to install envsec #1497
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 3 commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,15 +3,26 @@ package envsec | |
import ( | ||
"bytes" | ||
"encoding/json" | ||
"os" | ||
"os/exec" | ||
|
||
"github.com/pkg/errors" | ||
"go.jetpack.io/devbox/internal/boxcli/usererr" | ||
"go.jetpack.io/devbox/internal/cmdutil" | ||
"go.jetpack.io/devbox/internal/debug" | ||
"go.jetpack.io/pkg/sandbox/runx" | ||
) | ||
|
||
var envCache map[string]string | ||
|
||
func Env(projectDir string) (map[string]string, error) { | ||
|
||
defer debug.FunctionTimer().End() | ||
|
||
if envCache != nil { | ||
return envCache, nil | ||
} | ||
|
||
if err := ensureEnvsecInstalled(); err != nil { | ||
return nil, err | ||
} | ||
|
@@ -20,10 +31,23 @@ func Env(projectDir string) (map[string]string, error) { | |
return nil, err | ||
} | ||
|
||
return envsecList(projectDir) | ||
var err error | ||
envCache, err = envsecList(projectDir) | ||
|
||
return envCache, err | ||
} | ||
|
||
func ensureEnvsecInstalled() error { | ||
// In newer runx version this will return the paths | ||
paths, err := runx.Install("jetpack-io/[email protected]") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should we not pin this? Or pinning is necessary? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'll unpin it for now, but if we want to keep it unpinned that means we can't make backward incompatible changes to envsec. |
||
if err != nil { | ||
return errors.Wrap(err, "failed to install envsec") | ||
} | ||
|
||
for _, path := range paths { | ||
os.Setenv("PATH", path+string(os.PathListSeparator)+os.Getenv("PATH")) | ||
} | ||
|
||
if !cmdutil.Exists("envsec") { | ||
return usererr.New("envsec is not installed or not in path") | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How do you validate/invalidate this cache
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It never gets invalidated, it's lifetime is just the command. So if you do
devbox run
you only fetch it once.Later on I think we can look into refreshing env vars for long running shells, but even then this cache is OK.