// Copyright 2022 Terin Stock. // SPDX-License-Identifier: MPL-2.0 package main import ( "flag" "os" "github.com/rs/zerolog" "go.terinstock.com/cgit-httpd/handlers/cgit" "go.terinstock.com/cgit-httpd/handlers/git" "go.terinstock.com/cgit-httpd/manager" "go.terinstock.com/cgit-httpd/server" "sigs.k8s.io/controller-runtime/pkg/manager/signals" ) var configFile string func main() { flag.StringVar(&configFile, "config", "./config.edn", "path to cgit-httpd configuration file") flag.Parse() logger := zerolog.New(os.Stdout).With().Logger() cfg, err := readConfig(configFile) if err != nil { logger.Fatal().Err(err).Send() } logger.Info().Interface("config", cfg).Send() srv := server.New(server.Options{ Host: cfg.HTTP.Host, Port: cfg.HTTP.Port, }) cgit.New(cgit.Options{ CGI: cfg.CGit.CGI, ReposRoot: cfg.ReposRoot, AssetsDir: cfg.CGit.AssetsDir, ConfigFile: cfg.CGit.ConfigFile, Logger: logger.With().Str("handler", "cgit").Logger(), }). WithRegister(srv). Build() git.New(git.Options{ CGI: cfg.Git.CGI, ReposRoot: cfg.ReposRoot, ExportAll: cfg.Git.ExportAll, Logger: logger.With().Str("handler", "git").Logger(), }). WithRegister(srv). Build() m := manager.New() m.Add(srv) if err := m.Start(signals.SetupSignalHandler()); err != nil { logger.Info().Err(err).Msg("manager stopped") } }