Newer
Older
Benjamin Bollen
committed
// Copyright 2015, 2016 Eris Industries (UK) Ltd.
// This file is part of Eris-RT
// Eris-RT is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// Eris-RT is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with Eris-RT. If not, see <http://www.gnu.org/licenses/>.
package definitions
Benjamin Bollen
committed
type Do struct {
// Persistent flags not reflected in the configuration files
// only set through command line flags or environment variables
Debug bool // ERIS_DB_DEBUG
Verbose bool // ERIS_DB_VERBOSE
// Work directory is the root directory for Eris-DB to act in
WorkDir string // ERIS_DB_WORKDIR
// Data directory is defaulted to WorkDir + `/data`.
// If Eris-CLI maps a data container, DataDir is intended to point
// to that mapped data directory.
DataDir string // ERIS_DB_DATADIR
// Capital configuration options explicitly extracted from the Viper config
ChainId string // has to be set to non-empty string,
// uniquely identifying the chain.
GenesisFile string
Benjamin Bollen
committed
// ChainType string
// CSV string
// AccountTypes []string
// Zip bool
// Tarball bool
DisableRpc bool
Benjamin Bollen
committed
// Accounts []*Account
// Result string
}
func NewDo() *Do {
do := new(Do)
do.Debug = false
do.Verbose = false
do.WorkDir = ""
do.DataDir = ""
do.ChainId = ""
do.GenesisFile = ""
do.DisableRpc = false
do.Config = viper.New()
return do
Benjamin Bollen
committed
}
// ReadConfig uses Viper to set the configuration file name, file format
// where Eris-DB currently only uses `toml`.
// The search directory is explicitly limited to a single location to
// minimise the chance of loading the wrong configuration file.
func (d *Do) ReadConfig(directory string, name string, configType string) error {
// name of the configuration file without extension
d.Config.SetConfigName(name)
// Eris-DB currently only uses "toml"
d.Config.SetConfigType(configType)
// look for configuration file in the working directory
d.Config.AddConfigPath(directory)
return d.Config.ReadInConfig()
// InitialiseDataDirectory will default to WorkDir/data if DataDir is empty
func (d *Do) InitialiseDataDirectory() error {
if d.DataDir == "" {
d.DataDir = path.Join(d.WorkDir, "data")
}
return util.EnsureDir(d.DataDir, os.ModePerm)