diff options
Diffstat (limited to 'go/cmd/gitaly-upload-archive/main.go')
-rw-r--r-- | go/cmd/gitaly-upload-archive/main.go | 38 |
1 files changed, 14 insertions, 24 deletions
diff --git a/go/cmd/gitaly-upload-archive/main.go b/go/cmd/gitaly-upload-archive/main.go index 10b10d3..fb07613 100644 --- a/go/cmd/gitaly-upload-archive/main.go +++ b/go/cmd/gitaly-upload-archive/main.go @@ -1,12 +1,12 @@ package main import ( + "context" "encoding/json" - "fmt" - "os" "gitlab.com/gitlab-org/gitlab-shell/go/internal/handler" "gitlab.com/gitlab-org/gitlab-shell/go/internal/logger" + "google.golang.org/grpc" pb "gitlab.com/gitlab-org/gitaly-proto/go/gitalypb" ) @@ -15,31 +15,21 @@ 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)) + handler.RunGitalyCommand(func(ctx context.Context, conn *grpc.ClientConn, requestJSON string) (int32, error) { + request, err := deserialize(requestJSON) + if err != nil { + return 1, err + } + + return handler.UploadArchive(ctx, conn, request) + }) } -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) - } - +func deserialize(argumentJSON string) (*pb.SSHUploadArchiveRequest, error) { var request pb.SSHUploadArchiveRequest - if err := json.Unmarshal([]byte(args[2]), &request); err != nil { - return 0, fmt.Errorf("unmarshaling request json failed: %v", err) + if err := json.Unmarshal([]byte(argumentJSON), request); err != nil { + return nil, err } - - return handler(args[1], &request) + return &request, nil } |