mirror of
https://github.com/luxfi/cli.git
synced 2026-10-30 17:01:20 +00:00
78 lines
3.1 KiB
Go
78 lines
3.1 KiB
Go
// Copyright (C) 2025, Lux Industries Inc. All rights reserved.
|
|
// See the file LICENSE for licensing terms.
|
|
package flags
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/luxfi/cli/v2/pkg/constants"
|
|
"github.com/spf13/cobra"
|
|
"github.com/spf13/pflag"
|
|
)
|
|
|
|
const (
|
|
useLocalMachineFlag = "use-local-machine"
|
|
partialSyncFlag = "partial-sync"
|
|
httpPortFlag = "http-port"
|
|
stakingPortFlag = "staking-port"
|
|
luxdPathFlag = "luxd-path"
|
|
luxdVersionFlag = "luxd-version"
|
|
stakingTLSKeyPathFlag = "staking-tls-key-path"
|
|
stakingCertKeyPathFlag = "staking-cert-key-path"
|
|
stakingSignerKeyPathFlag = "staking-signer-key-path"
|
|
)
|
|
|
|
type LocalMachineFlags struct {
|
|
UseLocalMachine bool
|
|
PartialSync bool
|
|
HTTPPorts []uint
|
|
StakingPorts []uint
|
|
LuxdBinaryPath string
|
|
UserProvidedLuxdVersion string
|
|
StakingTLSKeyPaths []string
|
|
StakingCertKeyPaths []string
|
|
StakingSignerKeyPaths []string
|
|
}
|
|
|
|
func validateLocalMachineFlags(localMachineFlags LocalMachineFlags) error {
|
|
if len(localMachineFlags.StakingSignerKeyPaths) != len(localMachineFlags.StakingCertKeyPaths) || len(localMachineFlags.StakingSignerKeyPaths) != len(localMachineFlags.StakingTLSKeyPaths) {
|
|
return fmt.Errorf("staking key inputs must be for the same number of nodes")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func AddLocalMachineFlagsToCmd(cmd *cobra.Command, localMachineFlags *LocalMachineFlags) GroupedFlags {
|
|
return RegisterFlagGroup(cmd, "Local Machine Flags (Use Local Machine as Bootstrap Validator)", "show-local-machine-flags", true, func(set *pflag.FlagSet) {
|
|
set.BoolVar(&localMachineFlags.UseLocalMachine, useLocalMachineFlag, false, "use local machine as a blockchain validator")
|
|
set.BoolVar(&localMachineFlags.PartialSync, partialSyncFlag, true, "set primary network partial sync for new validators")
|
|
set.UintSliceVar(&localMachineFlags.HTTPPorts, httpPortFlag, []uint{}, "http port for node(s)")
|
|
set.UintSliceVar(&localMachineFlags.StakingPorts, stakingPortFlag, []uint{}, "staking port for node(s)")
|
|
set.StringVar(&localMachineFlags.LuxdBinaryPath, luxdPathFlag, "", "use this luxd binary path")
|
|
set.StringVar(
|
|
&localMachineFlags.UserProvidedLuxdVersion,
|
|
luxdVersionFlag,
|
|
constants.DefaultLuxdVersion,
|
|
"use this version of luxd (ex: v1.17.12)",
|
|
)
|
|
set.StringSliceVar(&localMachineFlags.StakingTLSKeyPaths, stakingTLSKeyPathFlag, []string{}, "path to provided staking TLS key for node(s)")
|
|
set.StringSliceVar(&localMachineFlags.StakingCertKeyPaths, stakingCertKeyPathFlag, []string{}, "path to provided staking cert key for node(s)")
|
|
set.StringSliceVar(&localMachineFlags.StakingSignerKeyPaths, stakingSignerKeyPathFlag, []string{}, "path to provided staking signer key for node(s)")
|
|
localMachinePreRun := func(_ *cobra.Command, _ []string) error {
|
|
if err := validateLocalMachineFlags(*localMachineFlags); err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|
|
|
|
existingPreRunE := cmd.PreRunE
|
|
cmd.PreRunE = func(cmd *cobra.Command, args []string) error {
|
|
if existingPreRunE != nil {
|
|
if err := existingPreRunE(cmd, args); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return localMachinePreRun(cmd, args)
|
|
}
|
|
})
|
|
}
|