diff options
author | Sean McGivern <sean@mcgivern.me.uk> | 2018-03-21 11:58:20 +0000 |
---|---|---|
committer | Sean McGivern <sean@mcgivern.me.uk> | 2018-03-21 11:58:20 +0000 |
commit | 2f07fa977e8119c6c4a2e2e73bb319751ea5c874 (patch) | |
tree | 8136b7672ab3cecba1dd68c75ff90dced152c836 /go/cmd/gitaly-upload-archive/main.go | |
parent | 9b9ada1013bd91e316c2e85b7c0f0ef8cb02f688 (diff) | |
parent | 27bdba30336bf31242b8168ae710a52246c8f9eb (diff) | |
download | gitlab-shell-2f07fa977e8119c6c4a2e2e73bb319751ea5c874.tar.gz |
Merge branch 'gitaly-upload-archive' into 'master'
Add Gitaly git-upload-archive migrated command
See merge request gitlab-org/gitlab-shell!192
Diffstat (limited to 'go/cmd/gitaly-upload-archive/main.go')
-rw-r--r-- | go/cmd/gitaly-upload-archive/main.go | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/go/cmd/gitaly-upload-archive/main.go b/go/cmd/gitaly-upload-archive/main.go new file mode 100644 index 0000000..c988baa --- /dev/null +++ b/go/cmd/gitaly-upload-archive/main.go @@ -0,0 +1,45 @@ +package main + +import ( + "encoding/json" + "fmt" + "os" + + "gitlab.com/gitlab-org/gitlab-shell/go/internal/handler" + "gitlab.com/gitlab-org/gitlab-shell/go/internal/logger" + + pb "gitlab.com/gitlab-org/gitaly-proto/go" +) + +func init() { + logger.ProgName = "gitaly-upload-archive" +} + +type uploadArchiveHandler func(gitalyAddress string, request *pb.SSHUploadArchiveRequest) (int32, error) + +func main() { + if err := handler.Prepare(); err != nil { + logger.Fatal("preparation failed", err) + } + + code, err := uploadArchive(handler.UploadArchive, os.Args) + + if err != nil { + logger.Fatal("upload-archive failed", err) + } + + os.Exit(int(code)) +} + +func uploadArchive(handler uploadArchiveHandler, args []string) (int32, error) { + if n := len(args); n != 3 { + return 0, fmt.Errorf("wrong number of arguments: expected 2 arguments, got %v", args) + } + + var request pb.SSHUploadArchiveRequest + if err := json.Unmarshal([]byte(args[2]), &request); err != nil { + return 0, fmt.Errorf("unmarshaling request json failed: %v", err) + } + + return handler(args[1], &request) +} |