Skip to content

Commit

Permalink
warship binary download subcommand.
Browse files Browse the repository at this point in the history
  • Loading branch information
Meaglith Ma committed Jun 22, 2017
1 parent 252243f commit a7b779a
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 5 deletions.
26 changes: 23 additions & 3 deletions dockyard/client/binary/binary.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package binary

import (
"fmt"
"io"
"net/http"
"os"
"path/filepath"
Expand All @@ -30,9 +31,6 @@ func UploadBinaryFile(filePath, domain, namespace, repository, tag string) error
} else {
defer f.Close()

fmt.Println(fmt.Sprintf("https://%s/binary/v1/%s/%s/binary/%s/%s",
domain, namespace, repository, filepath.Base(filePath), tag))

if req, err := http.NewRequest(http.MethodPut,
fmt.Sprintf("https://%s/binary/v1/%s/%s/binary/%s/%s",
domain, namespace, repository, filepath.Base(filePath), tag), f); err != nil {
Expand Down Expand Up @@ -63,6 +61,28 @@ func UploadBinaryFile(filePath, domain, namespace, repository, tag string) error
return nil
}

// Download binary file to the local.
func DownloadBinaryFile(domain, namespace, repository, filename, tag, filePath string) error {
if _, err := os.Stat(filePath); err == nil {
os.Remove(filePath)
}

if f, err := os.Create(filePath); err != nil {
return err
} else {
defer f.Close()

if resp, err := http.Get(fmt.Sprintf("https://%s/binary/v1/%s/%s/binary/%s/%s",
domain, namespace, repository, filename, tag)); err != nil {
return err
} else {
defer resp.Body.Close()

if _, err := io.Copy(f, resp.Body); err != nil {
return err
}
}
}

return nil
}
23 changes: 21 additions & 2 deletions dockyard/client/cmd/binary.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,10 @@ The upload URI pattern is <namespace>/<repository>/<tag>`,

var downloadCmd = &cobra.Command{
Use: "download",
Short: "Download file form Dockyard service, `warship binary download <namespace>/<repository>/<filename>/<tag>",
Short: "Download file form Dockyard service, `warship binary download <namespace>/<repository>/<filename>/<tag> <filename>",
Long: `Download file from repository of Dockyard:
warship binary download --domain hub.opshub.sh containerops/cncf-demo/warship/strichers
warship binary download --domain hub.opshub.sh containerops/cncf-demo/warship/strichers /tmp/warship
The download URI pattern is <namespace>/<repository>/<filename>/<tag>`,
Run: downloadBinary,
Expand All @@ -89,6 +89,7 @@ func uploadBinary(cmd *cobra.Command, args []string) {
fmt.Println("The file path and upload uri is required.")
os.Exit(1)
}

namespace := strings.Split(args[1], "/")[0]
repository := strings.Split(args[1], "/")[1]
tag := strings.Split(args[1], "/")[2]
Expand All @@ -106,4 +107,22 @@ func downloadBinary(cmd *cobra.Command, args []string) {
if domain == "" {
domain = common.Warship.Domain
}

if len(args) <= 0 {
fmt.Println("The file path and upload uri is required.")
os.Exit(1)
}

namespace := strings.Split(args[0], "/")[0]
repsitory := strings.Split(args[0], "/")[1]
filename := strings.Split(args[0], "/")[2]
tag := strings.Split(args[0], "/")[3]

if err := binary.DownloadBinaryFile(domain, namespace, repsitory, filename, tag, args[1]); err != nil {
fmt.Println("Download file error: ", err.Error())
os.Exit(1)
}

fmt.Println("Download file sucessfully.")
os.Exit(0)
}

0 comments on commit a7b779a

Please sign in to comment.