diff options
| -rw-r--r-- | drive/revision_delete.go | 31 | ||||
| -rw-r--r-- | gdrive.go | 8 | ||||
| -rw-r--r-- | handlers_drive.go | 10 |
3 files changed, 49 insertions, 0 deletions
diff --git a/drive/revision_delete.go b/drive/revision_delete.go new file mode 100644 index 0000000..88c81c6 --- /dev/null +++ b/drive/revision_delete.go @@ -0,0 +1,31 @@ +package drive + +import ( + "io" + "fmt" +) + +type DeleteRevisionArgs struct { + Out io.Writer + FileId string + RevisionId string +} + +func (self *Drive) DeleteRevision(args DeleteRevisionArgs) (err error) { + rev, err := self.service.Revisions.Get(args.FileId, args.RevisionId).Fields("originalFilename").Do() + if err != nil { + return fmt.Errorf("Failed to get revision: %s", err) + } + + if rev.OriginalFilename == "" { + return fmt.Errorf("Deleting revisions for this file type is not supported") + } + + err = self.service.Revisions.Delete(args.FileId, args.RevisionId).Do() + if err != nil { + return fmt.Errorf("Failed to delete revision", err) + } + + fmt.Fprintf(args.Out, "Deleted revision '%s'\n", args.RevisionId) + return +} @@ -372,6 +372,14 @@ func main() { }, }, &cli.Handler{ + Pattern: "[global options] delete revision <fileId> <revisionId>", + Description: "Delete file revision", + Callback: deleteRevisionHandler, + Flags: cli.Flags{ + "global options": globalFlags, + }, + }, + &cli.Handler{ Pattern: "[global options] about [options]", Description: "Google drive metadata, quota usage, import/export formats", Callback: aboutHandler, diff --git a/handlers_drive.go b/handlers_drive.go index 7491996..988cc46 100644 --- a/handlers_drive.go +++ b/handlers_drive.go @@ -160,6 +160,16 @@ func deleteHandler(ctx cli.Context) { checkErr(err) } +func deleteRevisionHandler(ctx cli.Context) { + args := ctx.Args() + err := newDrive(args).DeleteRevision(drive.DeleteRevisionArgs{ + Out: os.Stdout, + FileId: args.String("fileId"), + RevisionId: args.String("revisionId"), + }) + checkErr(err) +} + func aboutHandler(ctx cli.Context) { args := ctx.Args() err := newDrive(args).About(drive.AboutArgs{ |
