README.md 2.8 KB
Newer Older
Roy Marmelstein's avatar
Roy Marmelstein committed
1 2 3
![Zip - Zip and unzip files in Swift](https://cloud.githubusercontent.com/assets/889949/12374908/252373d0-bcac-11e5-8ece-6933aeae8222.png)

[![Build Status](https://travis-ci.org/marmelroy/Zip.svg?branch=master)](https://travis-ci.org/marmelroy/Zip) [![Version](http://img.shields.io/cocoapods/v/Zip.svg)](http://cocoapods.org/?q=Zip)
Roy Marmelstein's avatar
Roy Marmelstein committed
4
[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
Roy Marmelstein's avatar
Roy Marmelstein committed
5

Roy Marmelstein's avatar
Roy Marmelstein committed
6
# Zip
Roy Marmelstein's avatar
Roy Marmelstein committed
7
A Swift 4.0 framework for zipping and unzipping files. Simple and quick to use. Built on top of [minizip](https://github.com/nmoinvaz/minizip).
Roy Marmelstein's avatar
Roy Marmelstein committed
8 9 10 11 12 13 14 15 16

## Usage

Import Zip at the top of the Swift file.

```swift
import Zip
```

Roy Marmelstein's avatar
Roy Marmelstein committed
17 18
## Quick functions

Roy Marmelstein's avatar
Roy Marmelstein committed
19
The easiest way to use Zip is through quick functions. Both take local file paths as NSURLs, throw if an error is encountered and return an NSURL to the destination if successful.
Roy Marmelstein's avatar
Roy Marmelstein committed
20 21
```swift
do {
Roy Marmelstein's avatar
Roy Marmelstein committed
22
    let filePath = Bundle.main.url(forResource: "file", withExtension: "zip")!
23 24
    let unzipDirectory = try Zip.quickUnzipFile(filePath) // Unzip
    let zipFilePath = try Zip.quickZipFiles([filePath], fileName: "archive") // Zip
Roy Marmelstein's avatar
Roy Marmelstein committed
25
}
Roy Marmelstein's avatar
Roy Marmelstein committed
26 27 28 29 30 31 32
catch {
  print("Something went wrong")
}
```

## Advanced Zip

Jake Welton's avatar
Jake Welton committed
33
For more advanced usage, Zip has functions that let you set custom  destination paths, work with password protected zips and use a progress handling closure. These functions throw if there is an error but don't return.
Roy Marmelstein's avatar
Roy Marmelstein committed
34 35
```swift
do {
Roy Marmelstein's avatar
Roy Marmelstein committed
36 37
    let filePath = Bundle.main.url(forResource: "file", withExtension: "zip")!
    let documentsDirectory = FileManager.default.urls(for:.documentDirectory, in: .userDomainMask)[0]
38
    try Zip.unzipFile(filePath, destination: documentsDirectory, overwrite: true, password: "password", progress: { (progress) -> () in
Roy Marmelstein's avatar
Roy Marmelstein committed
39 40 41
        print(progress)
    }) // Unzip

Roy Marmelstein's avatar
Roy Marmelstein committed
42
    let zipFilePath = documentsFolder.appendingPathComponent("archive.zip")
43
    try Zip.zipFiles([filePath], zipFilePath: zipFilePath, password: "password", progress: { (progress) -> () in
Roy Marmelstein's avatar
Roy Marmelstein committed
44 45 46 47 48
        print(progress)
    }) //Zip

}
catch {
Roy Marmelstein's avatar
Roy Marmelstein committed
49 50 51 52
  print("Something went wrong")
}
```

53 54
## Custom File Extensions

Antoine Cœur's avatar
Antoine Cœur committed
55
Zip supports '.zip' and '.cbz' files out of the box. To support additional zip-derivative file extensions:
56 57 58 59
```
Zip.addCustomFileExtension("file-extension-here")
```

Roy Marmelstein's avatar
Roy Marmelstein committed
60 61 62
### Setting up with [CocoaPods](http://cocoapods.org/?q=Zip)
```ruby
source 'https://github.com/CocoaPods/Specs.git'
Roy Marmelstein's avatar
Roy Marmelstein committed
63
pod 'Zip', '~> 1.1'
Roy Marmelstein's avatar
Roy Marmelstein committed
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
```

### Setting up with Carthage

[Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager that automates the process of adding frameworks to your Cocoa application.

You can install Carthage with [Homebrew](http://brew.sh/) using the following command:

```bash
$ brew update
$ brew install carthage
```

To integrate Zip into your Xcode project using Carthage, specify it in your `Cartfile`:

```ogdl
github "marmelroy/Zip"
Roy Marmelstein's avatar
Roy Marmelstein committed
81
```