Skip to content
Snippets Groups Projects
Select Git revision
  • b7ef514226b0536d16c21fdeeb22bd2525b1f1ec
  • develop default protected
  • congestioncontrol
  • merge-v-data-collection-spammer-0.8.2
  • WIP-merge-v-data-collection-spammer-0.8.2
  • merge-v-data-collection-spammer-0.7.7
  • tmp
  • test-masterpow-fixing
  • test-masterpow
  • test-echo
  • v-data-collection
  • v-data-collection-spammer
  • tmp-dump-spam-info
  • dump-msg-info-0.3.1
  • test-dump-message-info
  • spammer-exprandom
  • extra/tutorial
  • without_tipselection
  • hacking-docker-network
  • hacking-docker-network-0.2.3
  • master
  • v0.2.3
22 results

local.go

Blame
  • plugin.go 1.94 KiB
    package config
    
    import (
    	"github.com/iotaledger/hive.go/logger"
    	"github.com/iotaledger/hive.go/node"
    	"github.com/iotaledger/hive.go/parameter"
    	"github.com/spf13/viper"
    
    	flag "github.com/spf13/pflag"
    )
    
    var (
    	// define the plugin as a placeholder, so the init methods get executed accordingly
    	PLUGIN = node.NewPlugin("Config", node.Enabled)
    
    	// flags<
    	configName    = flag.StringP("config", "c", "config", "Filename of the config file without the file extension")
    	configDirPath = flag.StringP("config-dir", "d", ".", "Path to the directory containing the config file")
    
    	// viper
    	Node *viper.Viper
    
    	// logger
    	defaultLoggerConfig = logger.Config{
    		Level:             "info",
    		DisableCaller:     false,
    		DisableStacktrace: false,
    		Encoding:          "console",
    		OutputPaths:       []string{"goshimmer.log"},
    		DisableEvents:     false,
    	}
    )
    
    func Load() {
    	// do nothing - the config get's initialized during init()
    }
    
    func init() {
    	// set the default logger config
    	Node = viper.New()
    	Node.SetDefault(logger.ViperKey, defaultLoggerConfig)
    
    	if err := fetch(false); err != nil {
    		panic(err)
    	}
    }
    
    // fetch fetches config values from a dir defined via CLI flag --config-dir (or the current working dir if not set).
    //
    // It automatically reads in a single config file starting with "config" (can be changed via the --config CLI flag)
    // and ending with: .json, .toml, .yaml or .yml (in this sequence).
    func fetch(printConfig bool, ignoreSettingsAtPrint ...[]string) error {
    	err := parameter.LoadConfigFile(Node, *configDirPath, *configName, true, true)
    	if err != nil {
    		return err
    	}
    
    	if printConfig {
    		parameter.PrintConfig(Node, ignoreSettingsAtPrint...)
    	}
    
    	for _, pluginName := range Node.GetStringSlice(node.CFG_DISABLE_PLUGINS) {
    		node.DisabledPlugins[node.GetPluginIdentifier(pluginName)] = true
    	}
    	for _, pluginName := range Node.GetStringSlice(node.CFG_ENABLE_PLUGINS) {
    		node.EnabledPlugins[node.GetPluginIdentifier(pluginName)] = true
    	}
    
    	return nil
    }