Skip to content
Snippets Groups Projects
plugin.go 1.95 KiB
Newer Older
package cli

import (
	"fmt"
Luca Moser's avatar
Luca Moser committed
	"github.com/iotaledger/goshimmer/packages/parameter"
Wolfgang Welz's avatar
Wolfgang Welz committed
	"github.com/iotaledger/hive.go/events"
Luca Moser's avatar
Luca Moser committed
	"github.com/iotaledger/hive.go/logger"
	"github.com/iotaledger/hive.go/node"
Wolfgang Welz's avatar
Wolfgang Welz committed
	flag "github.com/spf13/pflag"
const (
	// AppVersion version number
	AppVersion = "v0.1.0"
	// AppName app code name
	AppName = "GoShimmer"
)
var PLUGIN = node.NewPlugin("CLI", node.Enabled, configure, run)
func onAddPlugin(name string, status int) {
	AddPluginStatus(node.GetPluginIdentifier(name), status)
}

func init() {
	for name, status := range node.GetPlugins() {
		onAddPlugin(name, status)
	}
	node.Events.AddPlugin.Attach(events.NewClosure(onAddPlugin))
capossele's avatar
capossele committed
	flag.Usage = printUsage
func parseParameters() {
	for _, pluginName := range parameter.NodeConfig.GetStringSlice(node.CFG_DISABLE_PLUGINS) {
		node.DisabledPlugins[node.GetPluginIdentifier(pluginName)] = true
	for _, pluginName := range parameter.NodeConfig.GetStringSlice(node.CFG_ENABLE_PLUGINS) {
		node.EnabledPlugins[node.GetPluginIdentifier(pluginName)] = true
Wolfgang Welz's avatar
Wolfgang Welz committed
	if err := parameter.FetchConfig(false); err != nil {
Luca Moser's avatar
Luca Moser committed
		panic(err)
	}
	parseParameters()

	if err := logger.InitGlobalLogger(parameter.NodeConfig); err != nil {
		panic(err)
	}
}

func configure(ctx *node.Plugin) {
	fmt.Printf(`
   _____  ____   _____ _    _ _____ __  __ __  __ ______ _____  
  / ____|/ __ \ / ____| |  | |_   _|  \/  |  \/  |  ____|  __ \ 
 | |  __| |  | | (___ | |__| | | | | \  / | \  / | |__  | |__) |
 | | |_ | |  | |\___ \|  __  | | | | |\/| | |\/| |  __| |  _  / 
 | |__| | |__| |____) | |  | |_| |_| |  | | |  | | |____| | \ \ 
  \_____|\____/|_____/|_|  |_|_____|_|  |_|_|  |_|______|_|  \_\
                             %s                                     
`, AppVersion)
Wolfgang Welz's avatar
Wolfgang Welz committed
	fmt.Println()
	ctx.Node.Logger.Infof("GoShimmer version %s ...", AppVersion)
	ctx.Node.Logger.Info("Loading plugins ...")
func run(ctx *node.Plugin) {
	// do nothing; everything is handled in the configure step
}