about summary refs log tree commit diff
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")
+	}
+}