github.com/vchain-us/vcn@v0.9.11-0.20210921212052-a2484d23c0b3/pkg/store/paths.go (about) 1 /* 2 * Copyright (c) 2018-2020 vChain, Inc. All Rights Reserved. 3 * This software is released under GPL3. 4 * The full license information can be found under: 5 * https://www.gnu.org/licenses/gpl-3.0.en.html 6 * 7 */ 8 9 package store 10 11 import ( 12 "os" 13 "path/filepath" 14 15 "github.com/vchain-us/vcn/pkg/meta" 16 ) 17 18 var dir = DefaultDirName 19 var configFilepath string 20 21 func ensureDir(path string) error { 22 if _, err := os.Stat(path); os.IsNotExist(err) { 23 if err := os.MkdirAll(path, DirPerm); err != nil { 24 return err 25 } 26 } 27 return nil 28 } 29 30 func defaultConfigFilepath() string { 31 return filepath.Join(dir, configFilename) 32 } 33 34 // SetDefaultDir sets the default store working directory (eg. /tmp/.vcn) 35 func SetDefaultDir() error { 36 // Find home directory 37 tmpDir := os.TempDir() 38 var vcn string 39 switch meta.StageEnvironment() { 40 case meta.StageStaging: 41 vcn = DefaultDirName + ".staging" 42 case meta.StageTest: 43 vcn = DefaultDirName + ".test" 44 default: 45 vcn = DefaultDirName 46 } 47 SetDir(filepath.Join(tmpDir, vcn)) 48 return nil 49 } 50 51 // SetDir sets the store working directory (eg. /tmp/.vcn) 52 func SetDir(p string) { 53 dir = p 54 } 55 56 // ConfigFile returns the config file path 57 func ConfigFile() string { 58 if configFilepath == "" { 59 return defaultConfigFilepath() 60 } 61 return configFilepath 62 } 63 64 // SetConfigFile sets the config file path (e.g. /tmp/.vcn/config.json) 65 func SetConfigFile(filepath string) { 66 configFilepath = filepath 67 } 68 69 // CurrentConfigFilePath returns the current config file path (e.g. /tmp/.vcn/config.json) 70 func CurrentConfigFilePath() string { 71 return dir 72 }