Skip to content

Commit c4842b8

Browse files
committed
cache install paths
1 parent fc98488 commit c4842b8

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

gxutil/pm.go

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,12 @@ const GxVersion = "0.10.0"
2121

2222
const PkgFileName = "package.json"
2323

24+
var installPathsCache map[string]string
25+
26+
func init() {
27+
installPathsCache = make(map[string]string)
28+
}
29+
2430
type PM struct {
2531
ipfssh *sh.Shell
2632

@@ -686,6 +692,10 @@ func InstallPath(env, relpath string, global bool) (string, error) {
686692
return defaultLocalPath, nil
687693
}
688694

695+
if cached, ok := checkInstallPathCache(env, global); ok {
696+
return cached, nil
697+
}
698+
689699
binname, err := getSubtoolPath(env)
690700
if err != nil {
691701
return "", err
@@ -706,8 +716,25 @@ func InstallPath(env, relpath string, global bool) (string, error) {
706716
return "", fmt.Errorf("install-path hook failed: %s", err)
707717
}
708718

709-
return strings.Trim(string(out), " \t\n"), nil
719+
val := strings.Trim(string(out), " \t\n")
720+
setInstallPathCache(env, global, val)
721+
return val, nil
722+
}
723+
724+
func checkInstallPathCache(env string, global bool) (string, bool) {
725+
if global {
726+
env += " --global"
727+
}
728+
v, ok := installPathsCache[env]
729+
return v, ok
730+
}
731+
732+
func setInstallPathCache(env string, global bool, val string) {
733+
if global {
734+
env += " --global"
735+
}
710736

737+
installPathsCache[env] = val
711738
}
712739

713740
func IsHash(s string) bool {

0 commit comments

Comments
 (0)