18947: Refactor arv-git-httpd as an arvados-server subcommand.
[arvados.git] / services / githttpd / cmd.go
diff --git a/services/githttpd/cmd.go b/services/githttpd/cmd.go
new file mode 100644 (file)
index 0000000..e6ca3c0
--- /dev/null
@@ -0,0 +1,32 @@
+// Copyright (C) The Arvados Authors. All rights reserved.
+//
+// SPDX-License-Identifier: AGPL-3.0
+
+package githttpd
+
+import (
+       "context"
+
+       "git.arvados.org/arvados.git/lib/service"
+       "git.arvados.org/arvados.git/sdk/go/arvados"
+       "git.arvados.org/arvados.git/sdk/go/arvadosclient"
+       "github.com/prometheus/client_golang/prometheus"
+)
+
+var Command = service.Command(arvados.ServiceNameGitHTTP, newHandler)
+
+func newHandler(ctx context.Context, cluster *arvados.Cluster, token string, reg *prometheus.Registry) service.Handler {
+       client, err := arvados.NewClientFromConfig(cluster)
+       if err != nil {
+               return service.ErrorHandler(ctx, cluster, err)
+       }
+       ac, err := arvadosclient.New(client)
+       if err != nil {
+               return service.ErrorHandler(ctx, cluster, err)
+       }
+       return &authHandler{
+               clientPool: &arvadosclient.ClientPool{Prototype: ac},
+               cluster:    cluster,
+               handler:    newGitHandler(ctx, cluster),
+       }
+}