package main import ( "net" "net/http" "github.com/alecthomas/kong" "github.com/rs/zerolog" "gogs.home.aneur.in/go/ultrashorty/internal" ) func main() { vars := kong.Vars{ "host": "localhost", "port": "4000", } cli := &internal.CLI{} kong.Parse(cli, vars) redirects, err := internal.ReadCsvRedirects(cli.File) if err != nil { panic(err) } srv := &internal.HttpServer{ CLI: cli, Log: zerolog.New(zerolog.NewConsoleWriter()).With().Timestamp().Logger(), Redirects: redirects, } addr := net.JoinHostPort(cli.Host, cli.Port) errc := make(chan error) go func() { errc <- http.ListenAndServe(addr, srv) }() srv.Log.Info().Msgf("Listening at %s", addr) err = <-errc panic(err) }