diff options
Diffstat (limited to 'cmd/gitlab-shell/main.go')
-rw-r--r-- | cmd/gitlab-shell/main.go | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/cmd/gitlab-shell/main.go b/cmd/gitlab-shell/main.go new file mode 100644 index 0000000..adb5198 --- /dev/null +++ b/cmd/gitlab-shell/main.go @@ -0,0 +1,44 @@ +package main + +import ( + "fmt" + "os" + + "gitlab.com/gitlab-org/gitlab-shell/go/internal/command" + "gitlab.com/gitlab-org/gitlab-shell/go/internal/command/readwriter" + "gitlab.com/gitlab-org/gitlab-shell/go/internal/config" + "gitlab.com/gitlab-org/gitlab-shell/go/internal/executable" +) + +func main() { + readWriter := &readwriter.ReadWriter{ + Out: os.Stdout, + In: os.Stdin, + ErrOut: os.Stderr, + } + + executable, err := executable.New(executable.GitlabShell) + if err != nil { + fmt.Fprintln(readWriter.ErrOut, "Failed to determine executable, exiting") + os.Exit(1) + } + + config, err := config.NewFromDir(executable.RootDir) + if err != nil { + fmt.Fprintln(readWriter.ErrOut, "Failed to read config, exiting") + os.Exit(1) + } + + cmd, err := command.New(executable, os.Args[1:], config, readWriter) + if err != nil { + // For now this could happen if `SSH_CONNECTION` is not set on + // the environment + fmt.Fprintf(readWriter.ErrOut, "%v\n", err) + os.Exit(1) + } + + if err = cmd.Execute(); err != nil { + fmt.Fprintf(readWriter.ErrOut, "%v\n", err) + os.Exit(1) + } +} |