package shared

import (
	"flag"
	"fmt"
	"os"

	"github.com/rs/zerolog/log"
)

var (
	FlagConfigFile *string = flag.String(
		"config",
		"config.toml",
		"Location of the config file",
	)
	FlagConfigOnly *bool = flag.Bool(
		"validate-config",
		false,
		"If set, the server will only validate the config (or write the default one) and then quit",
	)
	FlagStartNew         *bool = flag.Bool("new", false, "Start the new system")
	FlagStartDebugServer *bool = flag.Bool(
		"debugserver",
		false,
		"Also start the local debugging server",
	)
)

func flagUsage() {
	executable, err := os.Executable()
	if err != nil {
		log.Fatal().Err(err).Msg("Failed to get own path")
	}
	fmt.Fprintf(os.Stderr, "Usage of %s:\n", executable)
	fmt.Fprintln(os.Stderr, "\t-config string")
	fmt.Fprintln(os.Stderr, "\t\tLocation of the config file (default: \"config.toml\")")
	fmt.Fprintln(os.Stderr, "\t-loglevel string")
	fmt.Fprintln(
		os.Stderr,
		"\t\tSet the logging level. Options are: Trace, Debug, Info, Warning, Error and Fatal. Case insensitive (default: \"Info\")",
	)
	fmt.Fprintln(os.Stderr, "\t-validate-config")
	fmt.Fprintln(
		os.Stderr,
		"\t\tIf set, the server will only validate the config (or write the default one) and then quit",
	)
	fmt.Fprintln(os.Stderr, "\t-jsonlogs")
	fmt.Fprintln(os.Stderr, "\t\tIf set, writes logging messages as json objects instead")
}

func init() {
	flag.Usage = flagUsage
}
