func zipWithBetterErrors(uploadDir string, zipFile *os.File) error { zipper := app_files.ApplicationZipper{} zipError := zipper.Zip(uploadDir, zipFile) switch err := zipError.(type) { case nil: return nil case *errors.EmptyDirError: zipFile = nil return zipError default: return fmt.Errorf("%s: %s", "Error zipping application", err.Error()) } }