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  }