package main

import (
	"log"

	"github.com/samber/lo"
	"github.com/sirupsen/logrus"
	"github.com/spf13/cobra"
	"go.uber.org/zap"
)

var (
	yamlDir  string
	logLevel string
)

const (
	tierUnitFilenamePrefix = "tier_unit"
	tierFilenamePrefix     = "tiers"
)

func newRootCmd() *cobra.Command {
	cmd := &cobra.Command{
		Use:               "checker",
		CompletionOptions: cobra.CompletionOptions{DisableDefaultCmd: true},
	}
	cmd.AddCommand(
		newStorageThroughputChecker(),
		newTierIntegrityChecker(),
		newUsingDeprecatedTierUnitChecker(),
	)
	cmd.PersistentFlags().StringVar(&yamlDir, "yamlDir", ".", "directory of tiers")
	cmd.PersistentFlags().StringVar(&logLevel, "log-level", "info", "log level")
	return cmd
}

func main() {
	cobra.OnInitialize(func() {
		logrus.Infof("logLevel=%s", logLevel)
		logrus.SetLevel(lo.Must(logrus.ParseLevel(logLevel)))
	})

	rootCmd := newRootCmd()
	if err := rootCmd.Execute(); err != nil {
		log.Fatal("checker return err", zap.Error(err))
	}
}
