diff --git a/cmd-cp-recursive.go b/cmd-cp-recursive.go index 57b384d7..bd432603 100644 --- a/cmd-cp-recursive.go +++ b/cmd-cp-recursive.go @@ -19,11 +19,13 @@ package main import ( "errors" "fmt" + "io" "os" "path" "path/filepath" "strings" + "github.com/cheggaaa/pb" "github.com/minio-io/cli" "github.com/minio-io/mc/pkg/client" "github.com/minio-io/mc/pkg/client/s3" @@ -56,13 +58,24 @@ func (w *walk) putWalk(p string, i os.FileInfo, err error) error { info(msg) return nil } - err = w.s3.Put(bucketname, key, i.Size(), bodyFile) + var bar *pb.ProgressBar + if !w.args.quiet { + // get progress bar + bar = startBar(i.Size()) + } + newreader := io.Reader(bodyFile) + if !w.args.quiet { + bar.Start() + newreader = io.TeeReader(bodyFile, bar) + } + err = w.s3.Put(bucketname, key, i.Size(), newreader) if err != nil { return err } - msg := fmt.Sprintf("%s uploaded -- to bucket:%s/%s/%s", - key, w.args.destination.host, bucketname, key) - info(msg) + if !w.args.quiet { + bar.Finish() + info("Success!") + } return nil } @@ -77,7 +90,7 @@ func isBucketExist(bucketName string, v []*client.Bucket) bool { } func sourceValidate(input string) error { - if s3.IsValidBucketName(input) { + if !s3.IsValidBucketName(input) { return fmt.Errorf("Invalid input bucket name [%s]", input) } st, err := os.Stat(input) diff --git a/cmd-cp.go b/cmd-cp.go index 1336af8b..c91b0bef 100644 --- a/cmd-cp.go +++ b/cmd-cp.go @@ -79,6 +79,11 @@ func firstMode(c *cli.Context, args *cmdArgs) error { if err != nil { return err } + var bar *pb.ProgressBar + if !args.quiet { + // get progress bar + bar = startBar(size) + } // http://. is specified without key if args.destination.key == "" { args.destination.key = args.source.key @@ -87,13 +92,19 @@ func firstMode(c *cli.Context, args *cmdArgs) error { if err != nil { return err } - err = s3c.Put(args.destination.bucket, args.destination.key, size, source) + newreader := io.Reader(source) + if !args.quiet { + bar.Start() + newreader = io.TeeReader(source, bar) + } + err = s3c.Put(args.destination.bucket, args.destination.key, size, newreader) if err != nil { return err } - msg := fmt.Sprintf("%s uploaded -- to bucket:(http://%s/%s)", args.source.key, - args.destination.bucket, args.destination.key) - info(msg) + if !args.quiet { + bar.Finish() + info("Success!") + } return nil }