summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go63
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")
+ }
+}