diff options
| -rw-r--r-- | drive/about.go | 7 | ||||
| -rw-r--r-- | drive/delete.go | 12 | ||||
| -rw-r--r-- | drive/download.go | 25 | ||||
| -rw-r--r-- | drive/info.go | 8 | ||||
| -rw-r--r-- | drive/list.go | 8 | ||||
| -rw-r--r-- | drive/mkdir.go | 8 | ||||
| -rw-r--r-- | drive/share.go | 13 | ||||
| -rw-r--r-- | drive/upload.go | 15 | ||||
| -rw-r--r-- | drive/util.go | 16 | ||||
| -rw-r--r-- | handlers.go | 33 | ||||
| -rw-r--r-- | util.go | 7 | 
11 files changed, 92 insertions, 60 deletions
| diff --git a/drive/about.go b/drive/about.go index 0dbeca2..bea9fda 100644 --- a/drive/about.go +++ b/drive/about.go @@ -12,9 +12,11 @@ type AboutArgs struct {      ExportFormats bool  } -func (self *Drive) About(args AboutArgs) { +func (self *Drive) About(args AboutArgs) (err error) {      about, err := self.service.About.Get().Fields("exportFormats", "importFormats", "maxImportSizes", "maxUploadSize", "storageQuota", "user").Do() -    errorF(err, "Failed to get about %s", err) +    if err != nil { +        return fmt.Errorf("Failed to get about: %s", err) +    }      if args.ExportFormats {          printSupportedFormats(about.ExportFormats) @@ -34,6 +36,7 @@ func (self *Drive) About(args AboutArgs) {      fmt.Printf("Free: %s\n", formatSize(quota.Limit - quota.UsageInDrive, args.SizeInBytes))      fmt.Printf("Total: %s\n", formatSize(quota.Limit, args.SizeInBytes))      fmt.Printf("Max upload size: %s\n", formatSize(about.MaxUploadSize, args.SizeInBytes)) +    return  }  func printSupportedFormats(formats map[string][]string) { diff --git a/drive/delete.go b/drive/delete.go index ebf72ed..6e868eb 100644 --- a/drive/delete.go +++ b/drive/delete.go @@ -8,11 +8,17 @@ type DeleteArgs struct {      Id string  } -func (self *Drive) Delete(args DeleteArgs) { +func (self *Drive) Delete(args DeleteArgs) (err error) {      f, err := self.service.Files.Get(args.Id).Fields("name").Do() -    errorF(err, "Failed to get file: %s", err) +    if err != nil { +        return fmt.Errorf("Failed to get file: %s", err) +    }      err = self.service.Files.Delete(args.Id).Do() -    errorF(err, "Failed to delete file") +    if err != nil { +        return fmt.Errorf("Failed to delete file", err) +    } +      fmt.Printf("Removed file '%s'\n", f.Name) +    return  } diff --git a/drive/download.go b/drive/download.go index 9a35912..57e0160 100644 --- a/drive/download.go +++ b/drive/download.go @@ -13,43 +13,52 @@ type DownloadFileArgs struct {      Stdout bool  } -func (self *Drive) Download(args DownloadFileArgs) { +func (self *Drive) Download(args DownloadFileArgs) (err error) {      getFile := self.service.Files.Get(args.Id)      f, err := getFile.Do() -    errorF(err, "Failed to get file: %s", err) +    if err != nil { +        return fmt.Errorf("Failed to get file: %s", err) +    }      res, err := getFile.Download() -    errorF(err, "Failed to download file: %s", err) +    if err != nil { +        return fmt.Errorf("Failed to download file: %s", err) +    }      // Close body on function exit      defer res.Body.Close()      if args.Stdout {          // Write file content to stdout -        io.Copy(os.Stdout, res.Body) -        return +        _, err := io.Copy(os.Stdout, res.Body) +        return err      }      // Check if file exists      if !args.Force && fileExists(f.Name) { -        exitF("File '%s' already exists, use --force to overwrite", f.Name) +        return fmt.Errorf("File '%s' already exists, use --force to overwrite", f.Name)      }      // Create new file      outFile, err := os.Create(f.Name) -    errorF(err, "Unable to create new file: %s", err) +    if err != nil { +        return fmt.Errorf("Unable to create new file: %s", err) +    }      // Close file on function exit      defer outFile.Close()      // Save file to disk      bytes, err := io.Copy(outFile, res.Body) -    errorF(err, "Failed saving file: %s", err) +    if err != nil { +        return fmt.Errorf("Failed saving file: %s", err) +    }      fmt.Printf("Downloaded '%s' at %s, total %d\n", f.Name, "x/s", bytes)      //if deleteSourceFile {      //    self.Delete(args.Id)      //} +    return  } diff --git a/drive/info.go b/drive/info.go index f5f5602..ca09d0a 100644 --- a/drive/info.go +++ b/drive/info.go @@ -10,14 +10,18 @@ type FileInfoArgs struct {      SizeInBytes bool  } -func (self *Drive) Info(args FileInfoArgs) { +func (self *Drive) Info(args FileInfoArgs) (err error) {      f, err := self.service.Files.Get(args.Id).Fields("id", "name", "size", "createdTime", "modifiedTime", "md5Checksum", "mimeType", "parents", "shared", "description").Do() -    errorF(err, "Failed to get file: %s", err) +    if err != nil { +        return fmt.Errorf("Failed to get file: %s", err) +    }      PrintFileInfo(PrintFileInfoArgs{          File: f,          SizeInBytes: args.SizeInBytes,      }) + +    return  }  type PrintFileInfoArgs struct { diff --git a/drive/list.go b/drive/list.go index c542785..b2e3662 100644 --- a/drive/list.go +++ b/drive/list.go @@ -15,9 +15,11 @@ type ListFilesArgs struct {      SizeInBytes bool  } -func (self *Drive) List(args ListFilesArgs) { +func (self *Drive) List(args ListFilesArgs) (err error) {      fileList, err := self.service.Files.List().PageSize(args.MaxFiles).Q(args.Query).Fields("nextPageToken", "files(id,name,size,createdTime)").Do() -    errorF(err, "Failed listing files: %s\n", err) +    if err != nil { +        return fmt.Errorf("Failed listing files: %s", err) +    }      PrintFileList(PrintFileListArgs{          Files: fileList.Files, @@ -25,6 +27,8 @@ func (self *Drive) List(args ListFilesArgs) {          SkipHeader: args.SkipHeader,          SizeInBytes: args.SizeInBytes,      }) + +    return  }  type PrintFileListArgs struct { diff --git a/drive/mkdir.go b/drive/mkdir.go index 8295649..4080474 100644 --- a/drive/mkdir.go +++ b/drive/mkdir.go @@ -2,6 +2,7 @@ package drive  import (      "google.golang.org/api/drive/v3" +    "fmt"  )  const DirectoryMimeType = "application/vnd.google-apps.folder" @@ -12,7 +13,7 @@ type MkdirArgs struct {      Share bool  } -func (self *Drive) Mkdir(args MkdirArgs) { +func (self *Drive) Mkdir(args MkdirArgs) (err error) {      dstFile := &drive.File{Name: args.Name, MimeType: DirectoryMimeType}      // Set parent folder if provided @@ -22,11 +23,14 @@ func (self *Drive) Mkdir(args MkdirArgs) {      // Create folder      f, err := self.service.Files.Create(dstFile).Do() -    errorF(err, "Failed to create folder: %s", err) +    if err != nil { +        return fmt.Errorf("Failed to create folder: %s", err) +    }      PrintFileInfo(PrintFileInfoArgs{File: f})      //if args.Share {      //    self.Share(TODO)      //} +    return  } diff --git a/drive/share.go b/drive/share.go index 7e7036d..37c1bf8 100644 --- a/drive/share.go +++ b/drive/share.go @@ -14,10 +14,12 @@ type ShareArgs struct {      Revoke bool  } -func (self *Drive) Share(args ShareArgs) { +func (self *Drive) Share(args ShareArgs) (err error) {      if args.Revoke { -        err := self.deletePermissions(args) -        errorF(err, "Failed delete permissions: %s", err) +        err = self.deletePermissions(args) +        if err != nil { +            return fmt.Errorf("Failed delete permissions: %s", err) +        }      }      permission := &drive.Permission{ @@ -28,9 +30,12 @@ func (self *Drive) Share(args ShareArgs) {      }      p, err := self.service.Permissions.Create(args.FileId, permission).Do() -    errorF(err, "Failed share file: %s", err) +    if err != nil { +        return fmt.Errorf("Failed share file: %s", err) +    }      fmt.Println(p) +    return  }  func (self *Drive) deletePermissions(args ShareArgs) error { diff --git a/drive/upload.go b/drive/upload.go index ed373ef..16ae940 100644 --- a/drive/upload.go +++ b/drive/upload.go @@ -19,16 +19,20 @@ type UploadFileArgs struct {      Share bool  } -func (self *Drive) Upload(args UploadFileArgs) { +func (self *Drive) Upload(args UploadFileArgs) (err error) {      //if args.Stdin {      //    self.uploadStdin()      //}      srcFile, err := os.Open(args.Path) -    errorF(err, "Failed to open file: %s", err) +    if err != nil { +        return fmt.Errorf("Failed to open file: %s", err) +    }      srcFileInfo, err := srcFile.Stat() -    errorF(err, "Failed to read file metadata: %s", err) +    if err != nil { +        return fmt.Errorf("Failed to read file metadata: %s", err) +    }      // Instantiate empty drive file      dstFile := &drive.File{} @@ -53,10 +57,13 @@ func (self *Drive) Upload(args UploadFileArgs) {      }      f, err := self.service.Files.Create(dstFile).ResumableMedia(context.Background(), srcFile, srcFileInfo.Size(), dstFile.MimeType).Do() -    errorF(err, "Failed to upload file: %s", err) +    if err != nil { +        return fmt.Errorf("Failed to upload file: %s", err) +    }      fmt.Printf("Uploaded '%s' at %s, total %d\n", f.Name, "x/s", f.Size)      //if args.Share {      //    self.Share(TODO)      //} +    return  } diff --git a/drive/util.go b/drive/util.go index bc2d5c3..7ad0945 100644 --- a/drive/util.go +++ b/drive/util.go @@ -103,22 +103,6 @@ func truncateString(str string, maxRunes int) string {      return truncated  } -func errorF(err error, format string, a ...interface{}) { -    if err == nil { -        return -    } - -    fmt.Fprintf(os.Stderr, format, a...) -    fmt.Println("") -    os.Exit(1) -} - -func exitF(format string, a ...interface{}) { -	fmt.Fprintf(os.Stderr, format, a...) -	fmt.Println("") -	os.Exit(1) -} -  func fileExists(path string) bool {      _, err := os.Stat(path)      if err == nil { diff --git a/handlers.go b/handlers.go index ef7688e..5ff5cdb 100644 --- a/handlers.go +++ b/handlers.go @@ -15,31 +15,30 @@ const TokenFilename = "token_v2.json"  func listHandler(ctx cli.Context) {      args := ctx.Args() - -    newDrive(args).List(drive.ListFilesArgs{ +    err := newDrive(args).List(drive.ListFilesArgs{          MaxFiles: args.Int64("maxFiles"),          NameWidth: args.Int64("nameWidth"),          Query: args.String("query"),          SkipHeader: args.Bool("skipHeader"),          SizeInBytes: args.Bool("sizeInBytes"),      }) +    checkErr(err)  }  func downloadHandler(ctx cli.Context) {      args := ctx.Args() - -    newDrive(args).Download(drive.DownloadFileArgs{ +    err := newDrive(args).Download(drive.DownloadFileArgs{          Id: args.String("id"),          Force: args.Bool("force"),          Stdout: args.Bool("stdout"),          NoProgress: args.Bool("noprogress"),      }) +    checkErr(err)  }  func uploadHandler(ctx cli.Context) {      args := ctx.Args() - -    newDrive(args).Upload(drive.UploadFileArgs{ +    err := newDrive(args).Upload(drive.UploadFileArgs{          Path: args.String("path"),          Name: args.String("name"),          Parent: args.String("parent"), @@ -48,31 +47,31 @@ func uploadHandler(ctx cli.Context) {          Stdin: args.Bool("stdin"),          Share: args.Bool("share"),      }) +    checkErr(err)  }  func infoHandler(ctx cli.Context) {      args := ctx.Args() - -    newDrive(args).Info(drive.FileInfoArgs{ +    err := newDrive(args).Info(drive.FileInfoArgs{          Id: args.String("id"),          SizeInBytes: args.Bool("sizeInBytes"),      }) +    checkErr(err)  }  func mkdirHandler(ctx cli.Context) {      args := ctx.Args() - -    newDrive(args).Mkdir(drive.MkdirArgs{ +    err := newDrive(args).Mkdir(drive.MkdirArgs{          Name: args.String("name"),          Parent: args.String("parent"),          Share: args.Bool("share"),      }) +    checkErr(err)  }  func shareHandler(ctx cli.Context) {      args := ctx.Args() - -    newDrive(args).Share(drive.ShareArgs{ +    err := newDrive(args).Share(drive.ShareArgs{          FileId: args.String("id"),          Role: args.String("role"),          Type: args.String("type"), @@ -80,11 +79,11 @@ func shareHandler(ctx cli.Context) {          Discoverable: args.Bool("discoverable"),          Revoke: args.Bool("revoke"),      }) +    checkErr(err)  }  func urlHandler(ctx cli.Context) {      args := ctx.Args() -      newDrive(args).Url(drive.UrlArgs{          FileId: args.String("id"),          DownloadUrl: args.Bool("download"), @@ -93,20 +92,20 @@ func urlHandler(ctx cli.Context) {  func deleteHandler(ctx cli.Context) {      args := ctx.Args() - -    newDrive(args).Delete(drive.DeleteArgs{ +    err := newDrive(args).Delete(drive.DeleteArgs{          Id: args.String("id"),      }) +    checkErr(err)  }  func aboutHandler(ctx cli.Context) {      args := ctx.Args() - -    newDrive(args).About(drive.AboutArgs{ +    err := newDrive(args).About(drive.AboutArgs{          SizeInBytes: args.Bool("sizeInBytes"),          ImportFormats: args.Bool("importFormats"),          ExportFormats: args.Bool("exportFormats"),      }) +    checkErr(err)  }  func printVersion(ctx cli.Context) { @@ -27,3 +27,10 @@ func ExitF(format string, a ...interface{}) {  	fmt.Println("")  	os.Exit(1)  } + +func checkErr(err error) { +    if err != nil { +        fmt.Println(err) +        os.Exit(1) +    } +} | 
