aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drive/revision_delete.go31
-rw-r--r--gdrive.go8
-rw-r--r--handlers_drive.go10
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
+}
diff --git a/gdrive.go b/gdrive.go
index 354f272..7c7d39f 100644
--- a/gdrive.go
+++ b/gdrive.go
@@ -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{