@@ -21,6 +21,12 @@ const GxVersion = "0.10.0"
21
21
22
22
const PkgFileName = "package.json"
23
23
24
+ var installPathsCache map [string ]string
25
+
26
+ func init () {
27
+ installPathsCache = make (map [string ]string )
28
+ }
29
+
24
30
type PM struct {
25
31
ipfssh * sh.Shell
26
32
@@ -686,6 +692,10 @@ func InstallPath(env, relpath string, global bool) (string, error) {
686
692
return defaultLocalPath , nil
687
693
}
688
694
695
+ if cached , ok := checkInstallPathCache (env , global ); ok {
696
+ return cached , nil
697
+ }
698
+
689
699
binname , err := getSubtoolPath (env )
690
700
if err != nil {
691
701
return "" , err
@@ -706,8 +716,25 @@ func InstallPath(env, relpath string, global bool) (string, error) {
706
716
return "" , fmt .Errorf ("install-path hook failed: %s" , err )
707
717
}
708
718
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
+ }
710
736
737
+ installPathsCache [env ] = val
711
738
}
712
739
713
740
func IsHash (s string ) bool {
0 commit comments