forked from kothar/go-backblaze
/
list.go
70 lines (60 loc) · 1.5 KB
/
list.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package main
import (
"errors"
"fmt"
"time"
"gopkg.in/kothar/go-backblaze.v0"
)
// List is a command
type List struct {
ListVersions bool `short:"a" long:"allVersions" description:"List all versions of files"`
}
func init() {
parser.AddCommand("list", "List files in a bucket", "", &List{})
}
// Execute the list command
func (o *List) Execute(args []string) error {
client, err := Client()
if err != nil {
return err
}
bucket, err := client.Bucket(backblaze.GetBucketRequest{Name: opts.Bucket})
if err != nil {
return err
}
if bucket == nil {
return errors.New("Bucket not found: " + opts.Bucket)
}
if o.ListVersions {
response, err := bucket.ListFileVersions("", "", 100)
if err != nil {
return err
}
if opts.Verbose {
fmt.Printf("Contents of %s/\n", opts.Bucket)
for _, file := range response.Files {
fmt.Printf("%s\n%10d %s %-20s\n\n", file.ID, file.Size, time.Unix(file.UploadTimestamp/1000, file.UploadTimestamp%1000), file.Name)
}
} else {
for _, file := range response.Files {
fmt.Println(file.Name + ":" + file.ID)
}
}
} else {
response, err := bucket.ListFileNames("", 100)
if err != nil {
return err
}
if opts.Verbose {
fmt.Printf("Contents of %s/\n", opts.Bucket)
for _, file := range response.Files {
fmt.Printf("%10d %s %-20s\n", file.Size, time.Unix(file.UploadTimestamp/1000, file.UploadTimestamp%1000), file.Name)
}
} else {
for _, file := range response.Files {
fmt.Println(file.Name)
}
}
}
return nil
}