OOKNET                             [ /  search the index  ]  
──────────────────────────────────────────────────────────────────────────────────────
══════════════════════════════════════════════════════════════════════════════════════
OOKNET   [ /  search  ]  
────────────────────────────────────────────────
════════════════════════════════════════════════
 
 
master @ 80 LINES
 
[ HISTORY ]  [ UP ]
 

package cmd

import (
	"fmt"
	"os"

	"github.com/charmbracelet/log"
	"github.com/spf13/cobra"
	"ookstats/internal/database"
)

var rootCmd = &cobra.Command{
	Use:   "ookstats",
	Short: "WoW Stats Database Management Tool",
	Long: `A comprehensive tool for managing WoW Challenge Mode statistics database.

Supports fetching data from Blizzard API, processing player rankings,
and managing data in local SQLite database.`,
}

// logger is the global logger instance
var logger *log.Logger

// GetLogger returns the global logger instance
func GetLogger() *log.Logger {
	if logger == nil {
		// fallback logger if not initialized
		logger = log.Default()
	}
	return logger
}

// initLogger initializes the global logger with appropriate settings
func initLogger(verbose bool) {
	level := log.InfoLevel
	if verbose {
		level = log.DebugLevel
	}

	logger = log.NewWithOptions(os.Stderr, log.Options{
		ReportTimestamp: true,
		TimeFormat:      "15:04:05",
		Level:           level,
	})

	// Set as default logger for the log package
	log.SetDefault(logger)
}

// execute adds all child commands to the root command and sets flags appropriatel
y.
// this is called by main.main(). It only needs to happen once to the rootCmd.
func Execute() {
	if err := rootCmd.Execute(); err != nil {
		fmt.Fprintf(os.Stderr, "Error: %v\n", err)
		os.Exit(1)
	}
}

func init() {
	// enable completion commands (bash, zsh, fish, powershell)
	rootCmd.CompletionOptions.DisableDefaultCmd = false

	// global flag for local db path
	rootCmd.PersistentFlags().String("db-file", "", "Path to local SQLite database fi
le (default: local.db). Also reads OOKSTATS_DB or ASTRO_DATABASE_FILE.")
	// global verbose flag
	rootCmd.PersistentFlags().Bool("verbose", false, "Enable verbose logging for debu
gging and benchmarking")

	// Set override before running any subcommand
	rootCmd.PersistentPreRun = func(cmd *cobra.Command, args []string) {
		// Initialize logger with verbose setting
		verbose, _ := cmd.Flags().GetBool("verbose")
		initLogger(verbose)

		// Set database path override
		if v, _ := cmd.Flags().GetString("db-file"); v != "" {
			database.SetDBPath(v)
		}
	}
}

package cmd

import (
	"fmt"
	"os"

	"github.com/charmbracelet/log"
	"github.com/spf13/cobra"
	"ookstats/internal/database"
)

var rootCmd = &cobra.Command{
	Use:   "ookstats",
	Short: "WoW Stats Database Management Tool"
,
	Long: `A comprehensive tool for managing Wo
W Challenge Mode statistics database.

Supports fetching data from Blizzard API, pr
ocessing player rankings,
and managing data in local SQLite database.`
,
}

// logger is the global logger instance
var logger *log.Logger

// GetLogger returns the global logger insta
nce
func GetLogger() *log.Logger {
	if logger == nil {
		// fallback logger if not initialized
		logger = log.Default()
	}
	return logger
}

// initLogger initializes the global logger 
with appropriate settings
func initLogger(verbose bool) {
	level := log.InfoLevel
	if verbose {
		level = log.DebugLevel
	}

	logger = log.NewWithOptions(os.Stderr, log.
Options{
		ReportTimestamp: true,
		TimeFormat:      "15:04:05",
		Level:           level,
	})

	// Set as default logger for the log packag
e
	log.SetDefault(logger)
}

// execute adds all child commands to the ro
ot command and sets flags appropriately.
// this is called by main.main(). It only ne
eds to happen once to the rootCmd.
func Execute() {
	if err := rootCmd.Execute(); err != nil {
		fmt.Fprintf(os.Stderr, "Error: %v\n", err)
		os.Exit(1)
	}
}

func init() {
	// enable completion commands (bash, zsh, f
ish, powershell)
	rootCmd.CompletionOptions.DisableDefaultCmd
 = false

	// global flag for local db path
	rootCmd.PersistentFlags().String("db-file",
 "", "Path to local SQLite database file (de
fault: local.db). Also reads OOKSTATS_DB or 
ASTRO_DATABASE_FILE.")
	// global verbose flag
	rootCmd.PersistentFlags().Bool("verbose", f
alse, "Enable verbose logging for debugging 
and benchmarking")

	// Set override before running any subcomma
nd
	rootCmd.PersistentPreRun = func(cmd *cobra.
Command, args []string) {
		// Initialize logger with verbose setting
		verbose, _ := cmd.Flags().GetBool("verbose
")
		initLogger(verbose)

		// Set database path override
		if v, _ := cmd.Flags().GetString("db-file"
); v != "" {
			database.SetDBPath(v)
		}
	}
}
 
──────────────────────────────────────────────────────────────────────────────────────
OOKNET
────────────────────────────────────────────────
OOKNET