Skip to content
This repository was archived by the owner on Aug 22, 2022. It is now read-only.
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 88 additions & 0 deletions apps/lukso-cli/cli/cli.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
package cli

import (
"log"
"os"

"github.com/urfave/cli/v2"

"lukso-cli/config"
)

var Cmd string
var Arg string

func Init() {

app := cli.NewApp()
app.Name = "LUKSO CLI"
app.Usage = "Tool for managing LUKSO node"
app.UsageText = "lukso <command> [argument] [--flags]"
app.Flags = getLuksoFlags()
app.EnableBashCompletion = true

app.Commands = []*cli.Command{
getStartCommand(),
getStopCommand(),
getVersionCommand(),
}

err := app.Run(os.Args)
if err != nil {
log.Fatal(err)
}

}

func LoadFlags(LuksoSettings *config.LuksoValues) {

networksNum := 0

if FlagValues.Network != "" {
networksNum++
}

if FlagValues.l15_prod {
networksNum++
}

if FlagValues.l15_staging {
networksNum++
}

if FlagValues.l15_dev {
networksNum++
}

if networksNum > 1 {
log.Fatal("ERROR: You cannot connect to multiple networks, please choose only one.")
}

if FlagValues.Network != "" {
LuksoSettings.Network = FlagValues.Network
}

if FlagValues.l15_prod {
LuksoSettings.Network = "l15-prod"
}

if FlagValues.l15_staging {
LuksoSettings.Network = "l15-staging"
}

if FlagValues.l15_dev {
LuksoSettings.Network = "l15-dev"
}

if FlagValues.DataDir != "" {
LuksoSettings.DataDir = FlagValues.DataDir
} else {
homeDir, _ := os.UserHomeDir()
LuksoSettings.DataDir = homeDir + "/.lukso/" + LuksoSettings.Network + "/datadir"
}

if FlagValues.Orchestrator.Verbosity != "" {
LuksoSettings.Orchestrator.Verbosity = FlagValues.Orchestrator.Verbosity
}

}
192 changes: 192 additions & 0 deletions apps/lukso-cli/cli/luksoFlags.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,192 @@
package cli

import (
"strconv"

"github.com/urfave/cli/v2"

"lukso-cli/config"
)

var FlagValues struct {
config.LuksoValues
Config string
l15_prod bool
l15_staging bool
l15_dev bool
GUI bool
ApiServer bool
}

var luksoFlags []cli.Flag

func getLuksoFlags() []cli.Flag {

var DefaultValues config.LuksoValues
config.LoadDefaults(&DefaultValues)

luksoFlags = []cli.Flag{
&cli.BoolFlag{
Name: "api",
Usage: "Starts API server",
Destination: &FlagValues.ApiServer,
},
&cli.BoolFlag{
Name: "gui",
Usage: "Starts GUI",
Destination: &FlagValues.GUI,
},
&cli.StringFlag{
Name: "config",
Value: "",
Usage: "Loads config file",
TakesFile: true,
Destination: &FlagValues.Config,
},
&cli.BoolFlag{
Name: "l15-prod",
Usage: "Alias for --network l15-prod",
Destination: &FlagValues.l15_prod,
},
&cli.BoolFlag{
Name: "l15-staging",
Usage: "Alias for --network l15-staging",
Destination: &FlagValues.l15_staging,
},
&cli.BoolFlag{
Name: "l15-dev",
Usage: "Alias for --network l15-dev",
Destination: &FlagValues.l15_dev,
},
&cli.BoolFlag{
Name: "force",
Usage: "Enables force mode",
Destination: &FlagValues.Force,
},
&cli.StringFlag{
Name: "network",
Value: "",
Usage: "Picks which setup to use default: " + DefaultValues.Network,
Destination: &FlagValues.Network,
EnvVars: []string{"NETWORK"},
},
&cli.BoolFlag{
Name: "validate",
Usage: "Starts validator",
Destination: &FlagValues.Validate,
},
&cli.StringFlag{
Name: "coinbase",
Usage: "Sets pandora coinbase. This is public address for block mining rewards",
Destination: &FlagValues.Coinbase,
},
&cli.StringFlag{
Name: "node-name",
Usage: "Name of node that's shown on pandora stats and vanguard stats",
Destination: &FlagValues.NodeName,
},
&cli.StringFlag{
Name: "datadir",
Usage: "Sets datadir path",
Destination: &FlagValues.DataDir,
},
&cli.StringFlag{
Name: "logsdir",
Usage: "Sets the logs path",
Destination: &FlagValues.LogsDir,
},
&cli.StringFlag{
Name: "keys-dir",
Usage: "Sets directory of lukso-deposit-cli keys (can be used with \"keygen\" or \"wallet\")",
Destination: &FlagValues.LogsDir,
},
&cli.StringFlag{
Name: "keys-password-file",
Usage: "Sets path to lukso-deposit-cli keys (can be used with \"keygen\" or \"wallet\")",
Destination: &FlagValues.LogsDir,
},
&cli.StringFlag{
Name: "wallet-dir",
Usage: "Sets directory of lukso-validator wallet",
Destination: &FlagValues.LogsDir,
},
&cli.StringFlag{
Name: "wallet-password-file",
Usage: "Password for lukso-validator",
Destination: &FlagValues.LogsDir,
},
&cli.StringFlag{
Name: "orchestrator-tag",
Aliases: []string{"orc-tag", "orchestrator"},
Usage: "download and set orchestrator to given tag",
Destination: &FlagValues.Orchestrator.Tag,
},
&cli.StringFlag{
Name: "orchestrator-verbosity",
Aliases: []string{"orc-verbosity"},
Usage: "Sets orchestrator logging depth (Default: " + DefaultValues.Orchestrator.Verbosity + ")",
Destination: &FlagValues.Orchestrator.Verbosity,
},
&cli.StringFlag{
Name: "orchestrator-vanguard-rpc-endpoint",
Aliases: []string{"orc-vanguard-rpc-endpoint"},
Usage: "Enables Vanguard node RPC provider endpoint.",
Destination: &FlagValues.Orchestrator.VanguardRPCEndpoint,
},
&cli.StringFlag{
Name: "orchestrator-pandora-rpc-endpoint",
Aliases: []string{"orc-pandora-rpc-endpoint"},
Usage: "Pandora node RPC provider endpoint.",
Destination: &FlagValues.Orchestrator.PandoraRPCEndpoint,
},
&cli.StringFlag{
Name: "pandora-tag",
Aliases: []string{"pan-tag", "pandora"},
Usage: "download and set pandora to given tag",
Destination: &FlagValues.Pandora.Tag,
},
&cli.StringFlag{
Name: "pandora-verbosity",
Aliases: []string{"pan-verbosity"},
Usage: "Sets pandora logging depth (Default: " + DefaultValues.Pandora.Verbosity + ")",
Destination: &FlagValues.Pandora.Verbosity,
},
&cli.StringFlag{
Name: "pandora-bootnodes",
Aliases: []string{"pan-bootnodes"},
Usage: "Sets pandora bootnodes (Default: " + DefaultValues.Pandora.Verbosity + ")",
Destination: &FlagValues.Pandora.Bootnodes,
},
&cli.IntFlag{
Name: "pandora-port",
Aliases: []string{"pan-port"},
Usage: "Pandora client TCP/UDP port exposed. (Default: " + strconv.Itoa(DefaultValues.Pandora.Port) + ")",
Destination: &FlagValues.Pandora.Port,
},
&cli.StringFlag{
Name: "pandora-http-addr",
Aliases: []string{"pan-http-addr"},
Usage: "Pandora client http address exposed. (Default: " + DefaultValues.Pandora.HttpAddr + ")",
Destination: &FlagValues.Pandora.Bootnodes,
},
&cli.IntFlag{
Name: "pandora-http-port",
Aliases: []string{"pan-http-port"},
Usage: "Pandora client http port exposed. (Default: " + strconv.Itoa(DefaultValues.Pandora.HttpPort) + ")",
Destination: &FlagValues.Pandora.HttpPort,
},
&cli.StringFlag{
Name: "pandora-ws-addr",
Aliases: []string{"pan-ws-addr"},
Usage: "Pandora client websocket address exposed. (Default: " + DefaultValues.Pandora.WebsocketsAddr + ")",
Destination: &FlagValues.Pandora.Bootnodes,
},
&cli.IntFlag{
Name: "pandora-ws-port",
Aliases: []string{"pan-ws-port"},
Usage: "Pandora client websocket port exposed. (Default: " + strconv.Itoa(DefaultValues.Pandora.WebsocketsPort) + ")",
Destination: &FlagValues.Pandora.HttpPort,
},
}
return luksoFlags
}
38 changes: 38 additions & 0 deletions apps/lukso-cli/cli/start.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package cli

import "github.com/urfave/cli/v2"

func getStartCommand() *cli.Command {
startCommands := []*cli.Command{
{
Name: "vanguard",
Flags: getLuksoFlags(),
Action: func(c *cli.Context) error {
Cmd, Arg = "start", "vanguard"
return nil
},
},
{
Name: "pandora",
Flags: getLuksoFlags(),
Action: func(c *cli.Context) error {
Cmd, Arg = "start", "pandora"
return nil
},
},
}

start := cli.Command{
Name: "start",
Usage: "Starts up all or specific client(s)",
UsageText: "lukso start [client]\n [orchestrator, pandora, vanguard, validator, eth2stats-client, lukso-status, all]",
Flags: getLuksoFlags(),
Action: func(c *cli.Context) error {
Cmd, Arg = "start", "all"
return nil
},
Subcommands: startCommands,
}

return &start
}
30 changes: 30 additions & 0 deletions apps/lukso-cli/cli/stop.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package cli

import "github.com/urfave/cli/v2"

func getStopCommand() *cli.Command {
stopSubCommands := []*cli.Command{
{
Name: "vanguard",
Flags: getLuksoFlags(),
Action: func(c *cli.Context) error {
Cmd, Arg = "stop", "vanguard"
return nil
},
},
}

stop := cli.Command{
Name: "stop",
Usage: "Stop up all or specific client(s)",
UsageText: "lukso stop [client]\n [orchestrator, pandora, vanguard, validator, eth2stats-client, lukso-status, all]",
Flags: getLuksoFlags(),
Action: func(c *cli.Context) error {
Cmd, Arg = "stop", "all"
return nil
},
Subcommands: stopSubCommands,
}

return &stop
}
38 changes: 38 additions & 0 deletions apps/lukso-cli/cli/version.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package cli

import "github.com/urfave/cli/v2"

func getVersionCommand() *cli.Command {
VersionCommands := []*cli.Command{
{
Name: "vanguard",
Flags: getLuksoFlags(),
Action: func(c *cli.Context) error {
Cmd, Arg = "version", "vanguard"
return nil
},
},
{
Name: "pandora",
Flags: getLuksoFlags(),
Action: func(c *cli.Context) error {
Cmd, Arg = "varsion", "pandora"
return nil
},
},
}

version := cli.Command{
Name: "version",
Usage: "Shows version of all or specific client(s)",
UsageText: "lukso version [client]\n [orchestrator, pandora, vanguard, validator, eth2stats-client, lukso-status, all]",
Flags: getLuksoFlags(),
Action: func(c *cli.Context) error {
Cmd, Arg = "version", "all"
return nil
},
Subcommands: VersionCommands,
}

return &version
}
Loading