summaryrefslogtreecommitdiff
path: root/go/internal/handler/handler.go
diff options
context:
space:
mode:
authorJacob Vosmaer <jacob@gitlab.com>2017-04-28 18:16:55 +0200
committerJacob Vosmaer <jacob@gitlab.com>2017-05-23 15:26:35 +0200
commit25a32cfa1e0b1c7e6af723053bad0f432ffd0b32 (patch)
treebc6d2958eeedb0b0c15d329ec90cc6d0d90cb919 /go/internal/handler/handler.go
parent285c061ed8933c0d94a9ad027f99653039673324 (diff)
downloadgitlab-shell-25a32cfa1e0b1c7e6af723053bad0f432ffd0b32.tar.gz
Use gitaly-upload-pack and gitaly-receive-pack
Diffstat (limited to 'go/internal/handler/handler.go')
-rw-r--r--go/internal/handler/handler.go38
1 files changed, 38 insertions, 0 deletions
diff --git a/go/internal/handler/handler.go b/go/internal/handler/handler.go
new file mode 100644
index 0000000..927998d
--- /dev/null
+++ b/go/internal/handler/handler.go
@@ -0,0 +1,38 @@
+package handler
+
+import (
+ "os"
+ "os/exec"
+ "syscall"
+
+ "gitlab.com/gitlab-org/gitlab-shell/go/internal/config"
+ "gitlab.com/gitlab-org/gitlab-shell/go/internal/logger"
+)
+
+func Prepare() error {
+ cfg, err := config.New()
+ if err != nil {
+ return err
+ }
+
+ if err := logger.Configure(cfg); err != nil {
+ return err
+ }
+
+ // Use a working directory that won't get removed or unmounted.
+ if err := os.Chdir("/"); err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func execCommand(command string, args ...string) error {
+ binPath, err := exec.LookPath(command)
+ if err != nil {
+ return err
+ }
+
+ args = append([]string{binPath}, args...)
+ return syscall.Exec(binPath, args, os.Environ())
+}