diff options
Diffstat (limited to 'main.go')
-rw-r--r-- | main.go | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/main.go b/main.go new file mode 100644 index 0000000..f0c8c51 --- /dev/null +++ b/main.go @@ -0,0 +1,63 @@ +// 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") + } +} |