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

import (
capossele's avatar
capossele committed
	"flag"
	"fmt"
capossele's avatar
capossele committed
	"strings"

	"github.com/iotaledger/goshimmer/packages/events"
	"github.com/iotaledger/goshimmer/packages/node"
	"github.com/iotaledger/goshimmer/packages/parameter"
func onAddBoolParameter(param *parameter.BoolParameter) {
	flagName := strings.Replace(strings.Replace(strings.ToLower(param.Name), "/", "-", 1), "_", "-", -1)

	AddBoolParameter(param.Value, flagName, param.Description)
}

func onAddIntParameter(param *parameter.IntParameter) {
capossele's avatar
capossele committed
	flagName := strings.Replace(strings.Replace(strings.ToLower(param.Name), "/", "-", 1), "_", "-", -1)
capossele's avatar
capossele committed
	AddIntParameter(param.Value, flagName, param.Description)
}

func onAddStringParameter(param *parameter.StringParameter) {
capossele's avatar
capossele committed
	flagName := strings.Replace(strings.Replace(strings.ToLower(param.Name), "/", "-", 1), "_", "-", -1)
capossele's avatar
capossele committed
	AddStringParameter(param.Value, flagName, param.Description)
}

func init() {
	for _, param := range parameter.GetBools() {
		onAddBoolParameter(param)
	}

capossele's avatar
capossele committed
	for _, param := range parameter.GetInts() {
		onAddIntParameter(param)
	}
capossele's avatar
capossele committed
	for _, param := range parameter.GetStrings() {
		onAddStringParameter(param)
	}
	parameter.Events.AddBool.Attach(events.NewClosure(onAddBoolParameter))
capossele's avatar
capossele committed
	parameter.Events.AddInt.Attach(events.NewClosure(onAddIntParameter))
	parameter.Events.AddString.Attach(events.NewClosure(onAddStringParameter))
capossele's avatar
capossele committed
	flag.Usage = printUsage
func parseParameters() {
	for _, pluginName := range strings.Fields(*node.DISABLE_PLUGINS.Value) {
		node.DisabledPlugins[strings.ToLower(pluginName)] = true
	}
	for _, pluginName := range strings.Fields(*node.ENABLE_PLUGINS.Value) {
		node.EnabledPlugins[strings.ToLower(pluginName)] = true
	}
}

func configure(ctx *node.Plugin) {
capossele's avatar
capossele committed
	flag.Parse()
	parseParameters()
	fmt.Println("  _____ _   _ ________  ______  ___ ___________ ")
	fmt.Println(" /  ___| | | |_   _|  \\/  ||  \\/  ||  ___| ___ \\")
	fmt.Println(" \\ `--.| |_| | | | | .  . || .  . || |__ | |_/ /")
	fmt.Println("  `--. \\  _  | | | | |\\/| || |\\/| ||  __||    / ")
	fmt.Println(" /\\__/ / | | |_| |_| |  | || |  | || |___| |\\ \\ ")
	fmt.Println(" \\____/\\_| |_/\\___/\\_|  |_/\\_|  |_/\\____/\\_| \\_| fullnode 0.0.1")
	fmt.Println()

	ctx.Node.LogInfo("Node", "Loading plugins ...")
}
var PLUGIN = node.NewPlugin("CLI", node.Enabled, configure, func(plugin *node.Plugin) {
Wolfgang Welz's avatar
Wolfgang Welz committed