s3-tests-parser/cmd/parser/modules/root.go

52 lines
1.3 KiB
Go
Raw Permalink Normal View History

package modules
import (
"context"
"runtime"
"strings"
"git.frostfs.info/TrueCloudLab/s3-tests-parser/internal/version"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
// rootCmd represents the base command when called without any subcommands.
var rootCmd = &cobra.Command{
Use: "s3-tests-parser",
Version: version.Version,
Short: "FrostFS S3 Tests Parser",
Long: "Helps manage s3 compatibility test results",
Example: "s3-tests-parser --version",
SilenceErrors: true,
SilenceUsage: true,
PersistentPreRunE: func(cmd *cobra.Command, _ []string) error {
viper.AutomaticEnv()
viper.SetEnvPrefix("S3_TESTS_PARSER")
viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
viper.AllowEmptyEnv(true)
return viper.BindPFlags(cmd.Flags())
},
RunE: func(cmd *cobra.Command, _ []string) error {
return cmd.Help()
},
}
func Execute(ctx context.Context) (*cobra.Command, error) {
return rootCmd.ExecuteContextC(ctx)
}
func init() {
cobra.AddTemplateFunc("runtimeVersion", runtime.Version)
rootCmd.SetVersionTemplate(`Frostfs S3 Tests Parser
{{printf "Version: %s" .Version }}
GoVersion: {{ runtimeVersion }}
`)
rootCmd.AddCommand(compatibilityCmd)
initCompatibilityCmd()
rootCmd.AddCommand(testsCmd)
initTestsCmd()
}