github.com/KusionStack/kpm@v0.8.4-0.20240326033734-dc72298a30e5/pkg/env/env.go (about) 1 package env 2 3 import ( 4 "os" 5 "path/filepath" 6 7 "kcl-lang.io/kpm/pkg/reporter" 8 "kcl-lang.io/kpm/pkg/utils" 9 ) 10 11 // env name 12 const PKG_PATH = "KCL_PKG_PATH" 13 const DEFAULT_PKG_PATH_IN_UER_HOME = ".kcl" 14 const KPM_SUB_DIR = "kpm" 15 16 // GetEnvPkgPath will return the env $KCL_PKG_PATH. 17 func GetEnvPkgPath() string { 18 return os.Getenv(PKG_PATH) 19 } 20 21 // GetKpmSubDir will return the subdir for kpm ".kcl/kpm" 22 func GetKpmSubDir() string { 23 return filepath.Join(DEFAULT_PKG_PATH_IN_UER_HOME, KPM_SUB_DIR) 24 } 25 26 // GetAbsPkgPath will return the absolute path of $KCL_PKG_PATH, 27 // or the absolute path of the current path if $KCL_PKG_PATH does not exist. 28 func GetAbsPkgPath() (string, error) { 29 kpmHome := GetEnvPkgPath() 30 if kpmHome == "" { 31 defaultHome, err := utils.CreateSubdirInUserHome(GetKpmSubDir()) 32 if err != nil { 33 return "", reporter.NewErrorEvent(reporter.FailedAccessPkgPath, err, "could not access $KCL_PKG_PATH.") 34 } 35 kpmHome = defaultHome 36 } 37 38 kpmHome, err := filepath.Abs(kpmHome) 39 if err != nil { 40 return "", reporter.NewErrorEvent(reporter.FailedAccessPkgPath, err, "could not access $KCL_PKG_PATH.") 41 } 42 43 return kpmHome, nil 44 }