ceremonyclient/client/cmd/node/node.go
2025-04-09 22:00:36 -08:00

90 lines
2.1 KiB
Go

package node
import (
"fmt"
"os"
"os/user"
"github.com/spf13/cobra"
"source.quilibrium.com/quilibrium/monorepo/client/utils"
"source.quilibrium.com/quilibrium/monorepo/node/config"
)
var (
// Base URL for Quilibrium releases
baseReleaseURL = "https://releases.quilibrium.com"
// Default symlink path for the node binary
defaultSymlinkPath = "/usr/local/bin/quilibrium-node"
logPath = "/var/log/quilibrium"
// Default user to run the node
nodeUser = "quilibrium"
ServiceName = "quilibrium-node"
ConfigDirs = "/home/quilibrium/configs"
NodeConfigToRun = "/home/quilibrium/configs/default"
// Default config file name
defaultConfigFileName = "node.yaml"
osType string
arch string
configDirectory string
NodeConfig *config.Config
NodeUser *user.User
)
// NodeCmd represents the node command
var NodeCmd = &cobra.Command{
Use: "node",
Short: "Quilibrium node commands",
Long: `Run Quilibrium node commands.`,
PersistentPreRun: func(cmd *cobra.Command, args []string) {
var userLookup *user.User
var err error
userLookup, err = user.Lookup(nodeUser)
if err != nil {
userLookup, err = InstallQuilibriumUser()
if err != nil {
fmt.Printf("error installing quilibrium user: %s\n", err)
os.Exit(1)
}
}
NodeUser = userLookup
},
Run: func(cmd *cobra.Command, args []string) {
// These commands handle their own configuration
_, err := os.Stat(configDirectory)
if os.IsNotExist(err) {
fmt.Printf("config directory doesn't exist: %s\n", configDirectory)
os.Exit(1)
}
NodeConfig, err = LoadConfig(configDirectory)
if err != nil {
fmt.Printf("invalid config directory: %s\n", configDirectory)
os.Exit(1)
}
},
}
func init() {
NodeCmd.PersistentFlags().StringVar(&configDirectory, "config", ".config", "config directory (default is .config/)")
// Add subcommands
NodeCmd.AddCommand(installCmd)
NodeCmd.AddCommand(updateNodeCmd)
NodeCmd.AddCommand(nodeServiceCmd)
localOsType, localArch, err := utils.GetSystemInfo()
if err != nil {
fmt.Fprintf(os.Stderr, "Error: %v\n", err)
return
}
osType = localOsType
arch = localArch
}