package main

import (
	"github.com/alecthomas/kong"
	"github.com/annybs/shorty/internal/cli"
	"github.com/rs/zerolog"
	"github.com/spf13/viper"
)

func main() {
	// Initialise config from environment
	config := viper.New()
	config.SetEnvPrefix("shorty")
	config.SetDefault("all_path", "/*")
	config.SetDefault("database_path", ".shorty")
	config.SetDefault("port", "3000")
	config.SetDefault("url", "http://localhost:3000")
	config.AutomaticEnv()

	// Create logger
	log := zerolog.New(zerolog.NewConsoleWriter()).With().Timestamp().Logger()

	// Initialise and run CLI
	vars := kong.Vars{
		"all_path":      config.GetString("all_path"),
		"database_path": config.GetString("database_path"),
		"host":          config.GetString("host"),
		"port":          config.GetString("port"),
		"token":         config.GetString("token"),
		"url":           config.GetString("url"),
	}
	ctx := kong.Parse(&cli.CLI{}, vars)
	err := ctx.Run(&cli.Context{Config: config, Log: log})
	ctx.FatalIfErrorf(err)
}