1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
12 "git.arvados.org/arvados.git/lib/cmd"
13 "git.arvados.org/arvados.git/lib/config"
14 "github.com/coreos/go-systemd/daemon"
15 "github.com/ghodss/yaml"
16 log "github.com/sirupsen/logrus"
23 log.SetFormatter(&log.JSONFormatter{
24 TimestampFormat: "2006-01-02T15:04:05.000000000Z07:00",
27 flags := flag.NewFlagSet(os.Args[0], flag.ContinueOnError)
28 loader := config.NewLoader(os.Stdin, logger)
29 loader.SetupFlags(flags)
31 dumpConfig := flags.Bool("dump-config", false, "write current configuration to stdout and exit (useful for migrating from command line flags to config file)")
32 getVersion := flags.Bool("version", false, "print version information and exit.")
34 args := loader.MungeLegacyConfigArgs(logger, os.Args[1:], "-legacy-git-httpd-config")
35 if ok, code := cmd.ParseFlags(flags, os.Args[0], args, "", os.Stderr); !ok {
37 } else if *getVersion {
38 fmt.Printf("arv-git-httpd %s\n", version)
42 cfg, err := loader.Load()
47 cluster, err := cfg.GetCluster("")
53 out, err := yaml.Marshal(cfg)
57 _, err = os.Stdout.Write(out)
64 srv := &server{cluster: cluster}
65 if err := srv.Start(); err != nil {
68 if _, err := daemon.SdNotify(false, "READY=1"); err != nil {
69 log.Printf("Error notifying init daemon: %v", err)
71 log.Printf("arv-git-httpd %s started", version)
72 log.Println("Listening at", srv.Addr)
73 log.Println("Repository root", cluster.Git.Repositories)
74 if err := srv.Wait(); err != nil {