package main import ( "fmt" "net/http" "os" "os/signal" "strings" "go.jolheiser.com/gistea/router" "github.com/peterbourgon/ff/v3" "github.com/peterbourgon/ff/v3/fftoml" "github.com/rs/zerolog" "github.com/rs/zerolog/log" ) func main() { level := zerolog.InfoLevel fs.Func("log-level", "Logging level (debug, info, error)", func(s string) error { lvl, err := zerolog.ParseLevel(strings.ToLower(s)) if err != nil { return err } level = lvl return nil }) if err := ff.Parse(fs, os.Args[1:], ff.WithEnvVarPrefix("GISTEA"), ff.WithConfigFileFlag("config"), ff.WithAllowMissingConfigFile(true), ff.WithConfigFileParser(fftoml.New().Parse), ); err != nil { log.Fatal().Err(err).Msg("") } zerolog.SetGlobalLevel(level) if !*jsonFlag { log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr}) } if err := requiredFlags(); err != nil { log.Fatal().Err(err).Msg("") } r := router.New(router.App{ Domain: *domainFlag, SessionSecret: *sessionSecretFlag, GiteaURL: *giteaURLFlag, GiteaClientKey: *giteaClientKeyFlag, GiteaClientSecret: *giteaClientSecretFlag, }) go func() { log.Debug().Msgf("Listening at http://localhost:%d", *portFlag) if err := http.ListenAndServe(fmt.Sprintf(":%d", *portFlag), r); err != nil { log.Err(err).Msg("") } }() ch := make(chan os.Signal, 1) signal.Notify(ch, os.Interrupt, os.Kill) <-ch }