diff options
author | 2022-11-26 19:59:15 +0100 | |
---|---|---|
committer | 2022-11-26 23:51:25 +0100 | |
commit | f4ce6ac1be7b2817a8e02fc0e517d93ff9890d2e (patch) | |
tree | 9474949eb2a2f21e5276a72bd3acdb499c37b5a5 /main.go | |
parent | initial commit (diff) | |
download | cgit-httpd-f4ce6ac1be7b2817a8e02fc0e517d93ff9890d2e.tar.xz |
add initial version of cgit-httpd
Diffstat (limited to 'main.go')
-rw-r--r-- | main.go | 63 |
1 files changed, 63 insertions, 0 deletions
@@ -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") + } +} |