package config import ( "bytes" "text/template" "github.com/spf13/viper" tmos "github.com/tendermint/tendermint/libs/os" ) const defaultConfigTemplate = `# This is a TOML config file. # For more information, see https://github.com/toml-lang/toml ##### main base config options ##### # The minimum gas prices a validator is willing to accept for processing a # transaction. A transaction's fees must meet the minimum of any denomination # specified in this config (e.g. 0.25token1;0.0001token2). minimum-gas-prices = "{{ .BaseConfig.MinGasPrices }}" # HaltHeight contains a non-zero block height at which a node will gracefully # halt and shutdown that can be used to assist upgrades and testing. # # Note: Commitment of state will be attempted on the corresponding block. halt-height = {{ .BaseConfig.HaltHeight }} # HaltTime contains a non-zero minimum block time (in Unix seconds) at which # a node will gracefully halt and shutdown that can be used to assist upgrades # and testing. # # Note: Commitment of state will be attempted on the corresponding block. halt-time = {{ .BaseConfig.HaltTime }} # InterBlockCache enables inter-block caching. inter-block-cache = {{ .BaseConfig.InterBlockCache }} # Pruning sets the pruning strategy: syncable, nothing, everything # syncable: only those states not needed for state syncing will be deleted (keeps last 100 + every 10000th) # nothing: all historic states will be saved, nothing will be deleted (i.e. archiving node) # everything: all saved states will be deleted, storing only the current state pruning = "{{ .BaseConfig.Pruning }}" ` var configTemplate *template.Template func init() { var err error tmpl := template.New("appConfigFileTemplate") if configTemplate, err = tmpl.Parse(defaultConfigTemplate); err != nil { panic(err) } } // ParseConfig retrieves the default environment configuration for the // application. func ParseConfig() (*Config, error) { conf := DefaultConfig() err := viper.Unmarshal(conf) return conf, err } // WriteConfigFile renders config using the template and writes it to // configFilePath. func WriteConfigFile(configFilePath string, config *Config) { var buffer bytes.Buffer if err := configTemplate.Execute(&buffer, config); err != nil { panic(err) } tmos.MustWriteFile(configFilePath, buffer.Bytes(), 0644) }