package debug

import (
	"fmt"
	"os"
)

var (
	enabled     = os.Getenv("BD_DEBUG") != ""
	verboseMode = false
	quietMode   = false
)

func Enabled() bool {
	return enabled || verboseMode
}

// SetVerbose enables verbose/debug output
func SetVerbose(verbose bool) {
	verboseMode = verbose
}

// SetQuiet enables quiet mode (suppress non-essential output)
func SetQuiet(quiet bool) {
	quietMode = quiet
}

// IsQuiet returns true if quiet mode is enabled
func IsQuiet() bool {
	return quietMode
}

func Logf(format string, args ...interface{}) {
	if enabled || verboseMode {
		fmt.Fprintf(os.Stderr, format, args...)
	}
}

func Printf(format string, args ...interface{}) {
	if enabled || verboseMode {
		fmt.Printf(format, args...)
	}
}

// PrintNormal prints output unless quiet mode is enabled
// Use this for normal informational output that should be suppressed in quiet mode
func PrintNormal(format string, args ...interface{}) {
	if !quietMode {
		fmt.Printf(format, args...)
	}
}

// PrintlnNormal prints a line unless quiet mode is enabled
func PrintlnNormal(args ...interface{}) {
	if !quietMode {
		fmt.Println(args...)
	}
}
