internal/version: set progress writer formatting width

Change-Id: Iecd41e93e85435a0ae365143a355067af6bf1389
GitHub-Last-Rev: 79403f2c8d721d6e97b3935a1dd5461372af1ea0
GitHub-Pull-Request: golang/dl#3
Reviewed-on: https://go-review.googlesource.com/c/dl/+/168537
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/internal/version/version.go b/internal/version/version.go
index cfb7128..9509e1d 100644
--- a/internal/version/version.go
+++ b/internal/version/version.go
@@ -350,9 +350,17 @@
 	if p.n == p.total {
 		end = ""
 	}
-	fmt.Fprintf(os.Stderr, "Downloaded %0.1f%% (%d / %d bytes)%s\n",
+	fmt.Fprintf(os.Stderr, "Downloaded %5.1f%% (%*d / %d bytes)%s\n",
 		(100.0*float64(p.n))/float64(p.total),
-		p.n, p.total, end)
+		ndigits(p.total), p.n, p.total, end)
+}
+
+func ndigits(i int64) int {
+	var n int
+	for ; i != 0; i /= 10 {
+		n++
+	}
+	return n
 }
 
 func (p *progressWriter) Write(buf []byte) (n int, err error) {