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{ | 
