kopia lustrzana https://github.com/bugout-dev/moonstream
Updated default config generation
rodzic
ea706c09b1
commit
bf1f33e683
|
@ -33,11 +33,12 @@ func (i *flagSlice) Set(value string) error {
|
|||
|
||||
// Command Line Interface state
|
||||
type StateCLI struct {
|
||||
addAccessCmd *flag.FlagSet
|
||||
deleteAccessCmd *flag.FlagSet
|
||||
serverCmd *flag.FlagSet
|
||||
usersCmd *flag.FlagSet
|
||||
versionCmd *flag.FlagSet
|
||||
addAccessCmd *flag.FlagSet
|
||||
generateConfigCmd *flag.FlagSet
|
||||
deleteAccessCmd *flag.FlagSet
|
||||
serverCmd *flag.FlagSet
|
||||
usersCmd *flag.FlagSet
|
||||
versionCmd *flag.FlagSet
|
||||
|
||||
// Common flags
|
||||
configPathFlag string
|
||||
|
@ -63,15 +64,15 @@ type StateCLI struct {
|
|||
}
|
||||
|
||||
func (s *StateCLI) usage() {
|
||||
fmt.Printf(`usage: nodebalancer [-h] {%[1]s,%[2]s,%[3]s,%[4]s,%[5]s} ...
|
||||
fmt.Printf(`usage: nodebalancer [-h] {%[1]s,%[2]s,%[3]s,%[4]s,%[5]s,%[6]s} ...
|
||||
|
||||
Moonstream node balancer CLI
|
||||
optional arguments:
|
||||
-h, --help show this help message and exit
|
||||
|
||||
subcommands:
|
||||
{%[1]s,%[2]s,%[3]s,%[4]s,%[5]s}
|
||||
`, s.addAccessCmd.Name(), s.deleteAccessCmd.Name(), s.serverCmd.Name(), s.usersCmd.Name(), s.versionCmd.Name())
|
||||
{%[1]s,%[2]s,%[3]s,%[4]s,%[5]s,%[6]s}
|
||||
`, s.addAccessCmd.Name(), s.generateConfigCmd.Name(), s.deleteAccessCmd.Name(), s.serverCmd.Name(), s.usersCmd.Name(), s.versionCmd.Name())
|
||||
}
|
||||
|
||||
// Check if required flags are set
|
||||
|
@ -82,6 +83,10 @@ func (s *StateCLI) checkRequirements() {
|
|||
fmt.Printf("Add new user access token\n\n")
|
||||
s.addAccessCmd.PrintDefaults()
|
||||
os.Exit(0)
|
||||
case s.generateConfigCmd.Parsed():
|
||||
fmt.Printf("Generate new configuration\n\n")
|
||||
s.generateConfigCmd.PrintDefaults()
|
||||
os.Exit(0)
|
||||
case s.deleteAccessCmd.Parsed():
|
||||
fmt.Printf("Delete user access token\n\n")
|
||||
s.deleteAccessCmd.PrintDefaults()
|
||||
|
@ -133,22 +138,25 @@ func (s *StateCLI) checkRequirements() {
|
|||
}
|
||||
}
|
||||
|
||||
if s.configPathFlag == "" {
|
||||
configPath := configs.GenerateDefaultConfig()
|
||||
s.configPathFlag = configPath
|
||||
config := configs.GetConfigPath(s.configPathFlag)
|
||||
fmt.Println(config)
|
||||
if !configs.CheckPathExists(config.ConfigPath) {
|
||||
configs.GenerateDefaultConfig(config)
|
||||
}
|
||||
s.configPathFlag = config.ConfigPath
|
||||
}
|
||||
|
||||
func (s *StateCLI) populateCLI() {
|
||||
// Subcommands setup
|
||||
s.addAccessCmd = flag.NewFlagSet("add-access", flag.ExitOnError)
|
||||
s.generateConfigCmd = flag.NewFlagSet("generate-config", flag.ExitOnError)
|
||||
s.deleteAccessCmd = flag.NewFlagSet("delete-access", flag.ExitOnError)
|
||||
s.serverCmd = flag.NewFlagSet("server", flag.ExitOnError)
|
||||
s.usersCmd = flag.NewFlagSet("users", flag.ExitOnError)
|
||||
s.versionCmd = flag.NewFlagSet("version", flag.ExitOnError)
|
||||
|
||||
// Common flag pointers
|
||||
for _, fs := range []*flag.FlagSet{s.addAccessCmd, s.deleteAccessCmd, s.serverCmd, s.usersCmd, s.versionCmd} {
|
||||
for _, fs := range []*flag.FlagSet{s.addAccessCmd, s.generateConfigCmd, s.deleteAccessCmd, s.serverCmd, s.usersCmd, s.versionCmd} {
|
||||
fs.BoolVar(&s.helpFlag, "help", false, "Show help message")
|
||||
fs.StringVar(&s.configPathFlag, "config", "", "Path to configuration file (default: ~/.nodebalancer/config.txt)")
|
||||
}
|
||||
|
@ -228,6 +236,10 @@ func CLI() {
|
|||
}
|
||||
fmt.Println(string(resource_data))
|
||||
|
||||
case "generate-config":
|
||||
stateCLI.generateConfigCmd.Parse(os.Args[2:])
|
||||
stateCLI.checkRequirements()
|
||||
|
||||
case "delete-access":
|
||||
stateCLI.deleteAccessCmd.Parse(os.Args[2:])
|
||||
stateCLI.checkRequirements()
|
||||
|
|
|
@ -7,6 +7,8 @@ import (
|
|||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
|
@ -57,32 +59,73 @@ func CheckEnvVarSet() {
|
|||
}
|
||||
}
|
||||
|
||||
func GenerateDefaultConfig() string {
|
||||
homeDir, err := os.UserHomeDir()
|
||||
type Config struct {
|
||||
ConfigDirPath string
|
||||
ConfigDirExists bool
|
||||
|
||||
ConfigPath string
|
||||
ConfigExists bool
|
||||
}
|
||||
|
||||
func CheckPathExists(path string) bool {
|
||||
var exists = true
|
||||
_, err := os.Stat(path)
|
||||
if err != nil {
|
||||
fmt.Printf("Unable to find user home directory, %v", err)
|
||||
os.Exit(1)
|
||||
if os.IsNotExist(err) {
|
||||
exists = false
|
||||
} else {
|
||||
fmt.Println(err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
configDirPath := fmt.Sprintf("%s/.nodebalancer", homeDir)
|
||||
configPath := fmt.Sprintf("%s/config.txt", configDirPath)
|
||||
return exists
|
||||
}
|
||||
|
||||
err = os.MkdirAll(configDirPath, os.ModePerm)
|
||||
if err != nil {
|
||||
fmt.Printf("Unable to create directory, %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
_, err = os.Stat(configPath)
|
||||
if err != nil {
|
||||
tempConfigB := []byte("ethereum,127.0.0.1,8545")
|
||||
err = os.WriteFile(configPath, tempConfigB, 0644)
|
||||
func GetConfigPath(providedPath string) *Config {
|
||||
var configDirPath, configPath string
|
||||
if providedPath == "" {
|
||||
homeDir, err := os.UserHomeDir()
|
||||
if err != nil {
|
||||
fmt.Printf("Unable to find user home directory, %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
configDirPath = fmt.Sprintf("%s/.nodebalancer", homeDir)
|
||||
configPath = fmt.Sprintf("%s/config.txt", configDirPath)
|
||||
} else {
|
||||
configPath = strings.TrimSuffix(providedPath, "/")
|
||||
configDirPath = filepath.Dir(configPath)
|
||||
}
|
||||
|
||||
defaultConfig := &Config{
|
||||
ConfigDirPath: configDirPath,
|
||||
ConfigDirExists: CheckPathExists(configDirPath),
|
||||
|
||||
ConfigPath: configPath,
|
||||
ConfigExists: CheckPathExists(configPath),
|
||||
}
|
||||
|
||||
return defaultConfig
|
||||
}
|
||||
|
||||
func GenerateDefaultConfig(config *Config) string {
|
||||
if !config.ConfigDirExists {
|
||||
if err := os.MkdirAll(config.ConfigDirPath, os.ModePerm); err != nil {
|
||||
fmt.Printf("Unable to create directory, %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
log.Printf("Config directory were not found, created default configuration at %s", configPath)
|
||||
log.Printf("Config directory created at: %s", config.ConfigDirPath)
|
||||
}
|
||||
|
||||
return configPath
|
||||
if !config.ConfigExists {
|
||||
tempConfigB := []byte("ethereum,127.0.0.1,8545")
|
||||
err := os.WriteFile(config.ConfigPath, tempConfigB, 0644)
|
||||
if err != nil {
|
||||
fmt.Printf("Unable to create temp config file, %v", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
log.Printf("Created default configuration at %s", config.ConfigPath)
|
||||
}
|
||||
|
||||
return config.ConfigPath
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue