Files
cli/cmd/flags/signature_aggregator.go
2026-01-08 20:36:16 -08:00

66 lines
1.9 KiB
Go

// Copyright (C) 2022-2025, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package flags
import (
"fmt"
"github.com/spf13/pflag"
"github.com/luxfi/constants"
"github.com/luxfi/log/level"
"github.com/spf13/cobra"
)
const (
aggregatorLogLevelFlag = "aggregator-log-level"
aggregatorLogToStdoutFlag = "aggregator-log-to-stdout"
)
type SignatureAggregatorFlags struct {
AggregatorLogLevel string
AggregatorLogToStdout bool
}
func validateSignatureAggregatorFlags(sigAggFlags SignatureAggregatorFlags) error {
if _, err := level.ToLevel(sigAggFlags.AggregatorLogLevel); err != nil {
return fmt.Errorf(
"invalid log level: %q. Available values: %s, %s, %s, %s, %s, %s, %s, %s",
sigAggFlags.AggregatorLogLevel,
level.Info.LowerString(),
level.Warn.LowerString(),
level.Error.LowerString(),
level.Off.LowerString(),
level.Fatal.LowerString(),
level.Debug.LowerString(),
level.Trace.LowerString(),
level.Verbo.LowerString(),
)
}
return nil
}
func AddSignatureAggregatorFlagsToCmd(cmd *cobra.Command, sigAggFlags *SignatureAggregatorFlags) GroupedFlags {
return RegisterFlagGroup(cmd, "Signature Aggregator Flags", "show-signature-aggregator-flags", false, func(set *pflag.FlagSet) {
set.StringVar(&sigAggFlags.AggregatorLogLevel, aggregatorLogLevelFlag, constants.DefaultAggregatorLogLevel, "log level to use with signature aggregator")
sigAggPreRun := func(_ *cobra.Command, _ []string) error {
if err := validateSignatureAggregatorFlags(*sigAggFlags); 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 sigAggPreRun(cmd, args)
}
set.BoolVar(&sigAggFlags.AggregatorLogToStdout, aggregatorLogToStdoutFlag, false, "use stdout for signature aggregator logs")
})
}