diff options
| author | Petter Rasmussen | 2016-02-06 23:59:15 +0100 |
|---|---|---|
| committer | Petter Rasmussen | 2016-02-07 00:00:18 +0100 |
| commit | 1226727a2edb372fb4daf449e62dcd7fb72b7370 (patch) | |
| tree | 20db6d724652e08a4f1a8dd3038f33afa593a76c | |
| parent | 0ede2d49e12ddc3a6c2f270f2a74fb938c821e12 (diff) | |
| download | gdrive-1226727a2edb372fb4daf449e62dcd7fb72b7370.tar.bz2 | |
Add sync list command
| -rw-r--r-- | drive/sync_list.go | 44 | ||||
| -rw-r--r-- | gdrive.go | 16 | ||||
| -rw-r--r-- | handlers_drive.go | 9 |
3 files changed, 69 insertions, 0 deletions
diff --git a/drive/sync_list.go b/drive/sync_list.go new file mode 100644 index 0000000..beb644e --- /dev/null +++ b/drive/sync_list.go @@ -0,0 +1,44 @@ +package drive + +import ( + "fmt" + "io" + "text/tabwriter" + "google.golang.org/api/googleapi" + "google.golang.org/api/drive/v3" +) + +type ListSyncArgs struct { + Out io.Writer + SkipHeader bool +} + +func (self *Drive) ListSync(args ListSyncArgs) error { + query := fmt.Sprintf("appProperties has {key='isSyncRoot' and value='true'}") + fields := []googleapi.Field{"nextPageToken", "files(id,name,mimeType,createdTime)"} + files, err := self.listAllFiles(query, fields) + if err != nil { + return err + } + printSyncDirectories(files, args) + return nil +} + +func printSyncDirectories(files []*drive.File, args ListSyncArgs) { + w := new(tabwriter.Writer) + w.Init(args.Out, 0, 0, 3, ' ', 0) + + if !args.SkipHeader { + fmt.Fprintln(w, "Id\tName\tCreated") + } + + for _, f := range files { + fmt.Fprintf(w, "%s\t%s\t%s\n", + f.Id, + f.Name, + formatDatetime(f.CreatedTime), + ) + } + + w.Flush() +} @@ -337,6 +337,22 @@ func main() { }, }, &cli.Handler{ + Pattern: "[global] sync list [options]", + Description: "List all syncable directories on drive", + Callback: listSyncHandler, + FlagGroups: cli.FlagGroups{ + cli.NewFlagGroup("global", globalFlags...), + cli.NewFlagGroup("options", + cli.BoolFlag{ + Name: "skipHeader", + Patterns: []string{"--no-header"}, + Description: "Dont print the header", + OmitValue: true, + }, + ), + }, + }, + &cli.Handler{ Pattern: "[global] sync download [options] <id> <path>", Description: "Sync drive directory to local directory", Callback: downloadSyncHandler, diff --git a/handlers_drive.go b/handlers_drive.go index 714493c..71f5201 100644 --- a/handlers_drive.go +++ b/handlers_drive.go @@ -230,6 +230,15 @@ func deleteHandler(ctx cli.Context) { checkErr(err) } +func listSyncHandler(ctx cli.Context) { + args := ctx.Args() + err := newDrive(args).ListSync(drive.ListSyncArgs{ + Out: os.Stdout, + SkipHeader: args.Bool("skipHeader"), + }) + checkErr(err) +} + func deleteRevisionHandler(ctx cli.Context) { args := ctx.Args() err := newDrive(args).DeleteRevision(drive.DeleteRevisionArgs{ |
