main.go 910 B

123456789101112131415161718192021222324252627282930313233
  1. package main
  2. import (
  3. "github.com/alecthomas/kong"
  4. "github.com/annybs/shorty/internal/cli"
  5. "github.com/rs/zerolog"
  6. "github.com/spf13/viper"
  7. )
  8. func main() {
  9. // Initialise config from environment
  10. config := viper.New()
  11. config.SetEnvPrefix("shorty")
  12. config.SetDefault("database_path", ".shorty")
  13. config.SetDefault("port", "3000")
  14. config.SetDefault("url", "http://localhost:3000")
  15. config.AutomaticEnv()
  16. // Create logger
  17. log := zerolog.New(zerolog.NewConsoleWriter()).With().Timestamp().Logger()
  18. // Initialise and run CLI
  19. vars := kong.Vars{
  20. "database_path": config.GetString("database_path"),
  21. "host": config.GetString("host"),
  22. "port": config.GetString("port"),
  23. "token": config.GetString("token"),
  24. "url": config.GetString("url"),
  25. }
  26. ctx := kong.Parse(&cli.CLI{}, vars)
  27. err := ctx.Run(&cli.Context{Config: config, Log: log})
  28. ctx.FatalIfErrorf(err)
  29. }