diff options
Diffstat (limited to 'go/internal/handler/handler.go')
-rw-r--r-- | go/internal/handler/handler.go | 38 |
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()) +} |