Commit db76c1bf authored by Jake Welton's avatar Jake Welton Committed by GitHub

Merge pull request #2 from marmelroy/swift3.0

Swift3.0
parents 167daeaa 376f3efa
# MacOS
.DS_Store
# Xcode # Xcode
# #
build/ build/
......
osx_image: xcode7.2 osx_image: xcode8
language: objective-c language: objective-c
env: env:
global: global:
...@@ -6,9 +6,7 @@ env: ...@@ -6,9 +6,7 @@ env:
- LANG=en_US.UTF-8 - LANG=en_US.UTF-8
before_install: before_install:
- brew update || brew update - brew update || brew update
- brew outdated xctool || brew upgrade xctool
- gem install cocoapods - gem install cocoapods
- xcrun simctl list
install: echo "<3" install: echo "<3"
env: env:
- MODE=framework - MODE=framework
...@@ -19,3 +17,4 @@ script: ./build.sh $MODE ...@@ -19,3 +17,4 @@ script: ./build.sh $MODE
branches: branches:
only: only:
- master - master
- swift3.0
...@@ -30,7 +30,7 @@ catch { ...@@ -30,7 +30,7 @@ catch {
## Advanced Zip ## Advanced Zip
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 function throw if there is an error but don't return. 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.
```swift ```swift
do { do {
let filePath = NSBundle.mainBundle().URLForResource("file", withExtension: "zip")! let filePath = NSBundle.mainBundle().URLForResource("file", withExtension: "zip")!
...@@ -51,6 +51,13 @@ catch { ...@@ -51,6 +51,13 @@ catch {
} }
``` ```
## Custom File Extensions
Zip supports '.zip' and '.cbz' files out of the box. To support additional zip-derivative file extensions:
```
Zip.addCustomFileExtension("file-extension-here")
```
### Setting up with Carthage ### Setting up with Carthage
......
...@@ -15,11 +15,11 @@ ...@@ -15,11 +15,11 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>FMWK</string> <string>FMWK</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>0.4.1</string> <string>0.4.3</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>6</string> <string>7</string>
<key>NSPrincipalClass</key> <key>NSPrincipalClass</key>
<string></string> <string></string>
</dict> </dict>
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = "Zip" s.name = "Zip"
s.version = "0.4.1" s.version = "0.4.3"
s.summary = "Zip and unzip files in Swift." s.summary = "Zip and unzip files in Swift."
# This description is used to generate tags and improve search results. # This description is used to generate tags and improve search results.
......
...@@ -493,7 +493,7 @@ ...@@ -493,7 +493,7 @@
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
LastSwiftUpdateCheck = 0720; LastSwiftUpdateCheck = 0720;
LastUpgradeCheck = 0720; LastUpgradeCheck = 0800;
ORGANIZATIONNAME = "Roy Marmelstein"; ORGANIZATIONNAME = "Roy Marmelstein";
TargetAttributes = { TargetAttributes = {
343F50FE1C8DAEEC0028C434 = { 343F50FE1C8DAEEC0028C434 = {
...@@ -504,9 +504,11 @@ ...@@ -504,9 +504,11 @@
}; };
347E3A731C1DFFB500A11FD3 = { 347E3A731C1DFFB500A11FD3 = {
CreatedOnToolsVersion = 7.2; CreatedOnToolsVersion = 7.2;
LastSwiftMigration = 0800;
}; };
347E3A7D1C1DFFB500A11FD3 = { 347E3A7D1C1DFFB500A11FD3 = {
CreatedOnToolsVersion = 7.2; CreatedOnToolsVersion = 7.2;
LastSwiftMigration = 0800;
}; };
}; };
}; };
...@@ -677,7 +679,7 @@ ...@@ -677,7 +679,7 @@
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
DEFINES_MODULE = YES; DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 6; DYLIB_CURRENT_VERSION = 7;
DYLIB_INSTALL_NAME_BASE = "@rpath"; DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = "Zip copy-Info.plist"; INFOPLIST_FILE = "Zip copy-Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
...@@ -702,7 +704,7 @@ ...@@ -702,7 +704,7 @@
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
DEFINES_MODULE = YES; DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 6; DYLIB_CURRENT_VERSION = 7;
DYLIB_INSTALL_NAME_BASE = "@rpath"; DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = "Zip copy-Info.plist"; INFOPLIST_FILE = "Zip copy-Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
...@@ -714,6 +716,7 @@ ...@@ -714,6 +716,7 @@
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
SUPPORTED_PLATFORMS = "appletvsimulator appletvos"; SUPPORTED_PLATFORMS = "appletvsimulator appletvos";
SWIFT_INCLUDE_PATHS = "${SRCROOT}/Zip/minizip/**"; SWIFT_INCLUDE_PATHS = "${SRCROOT}/Zip/minizip/**";
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
TARGETED_DEVICE_FAMILY = 3; TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 9.0; TVOS_DEPLOYMENT_TARGET = 9.0;
}; };
...@@ -724,10 +727,10 @@ ...@@ -724,10 +727,10 @@
buildSettings = { buildSettings = {
CODE_SIGN_IDENTITY = "-"; CODE_SIGN_IDENTITY = "-";
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 6; CURRENT_PROJECT_VERSION = 7;
DEFINES_MODULE = YES; DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 6; DYLIB_CURRENT_VERSION = 7;
DYLIB_INSTALL_NAME_BASE = "@rpath"; DYLIB_INSTALL_NAME_BASE = "@rpath";
FRAMEWORK_VERSION = A; FRAMEWORK_VERSION = A;
INFOPLIST_FILE = Zip/Info.plist; INFOPLIST_FILE = Zip/Info.plist;
...@@ -747,10 +750,10 @@ ...@@ -747,10 +750,10 @@
buildSettings = { buildSettings = {
CODE_SIGN_IDENTITY = "-"; CODE_SIGN_IDENTITY = "-";
COMBINE_HIDPI_IMAGES = YES; COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 6; CURRENT_PROJECT_VERSION = 7;
DEFINES_MODULE = YES; DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 6; DYLIB_CURRENT_VERSION = 7;
DYLIB_INSTALL_NAME_BASE = "@rpath"; DYLIB_INSTALL_NAME_BASE = "@rpath";
FRAMEWORK_VERSION = A; FRAMEWORK_VERSION = A;
INFOPLIST_FILE = Zip/Info.plist; INFOPLIST_FILE = Zip/Info.plist;
...@@ -762,6 +765,7 @@ ...@@ -762,6 +765,7 @@
SDKROOT = macosx; SDKROOT = macosx;
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
SWIFT_INCLUDE_PATHS = "${SRCROOT}/Zip/minizip/**"; SWIFT_INCLUDE_PATHS = "${SRCROOT}/Zip/minizip/**";
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
}; };
name = Release; name = Release;
}; };
...@@ -812,7 +816,7 @@ ...@@ -812,7 +816,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 6; CURRENT_PROJECT_VERSION = 7;
DEBUG_INFORMATION_FORMAT = dwarf; DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES; ENABLE_TESTABILITY = YES;
...@@ -860,7 +864,7 @@ ...@@ -860,7 +864,7 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 6; CURRENT_PROJECT_VERSION = 7;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO; ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
...@@ -889,7 +893,7 @@ ...@@ -889,7 +893,7 @@
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
DEFINES_MODULE = YES; DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 6; DYLIB_CURRENT_VERSION = 7;
DYLIB_INSTALL_NAME_BASE = "@rpath"; DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = Zip/Info.plist; INFOPLIST_FILE = Zip/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
...@@ -901,6 +905,7 @@ ...@@ -901,6 +905,7 @@
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
SWIFT_INCLUDE_PATHS = "${SRCROOT}/Zip/minizip/**"; SWIFT_INCLUDE_PATHS = "${SRCROOT}/Zip/minizip/**";
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 3.0;
}; };
name = Debug; name = Debug;
}; };
...@@ -911,7 +916,7 @@ ...@@ -911,7 +916,7 @@
CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_MODULES = YES;
DEFINES_MODULE = YES; DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 6; DYLIB_CURRENT_VERSION = 7;
DYLIB_INSTALL_NAME_BASE = "@rpath"; DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = Zip/Info.plist; INFOPLIST_FILE = Zip/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
...@@ -922,6 +927,8 @@ ...@@ -922,6 +927,8 @@
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES; SKIP_INSTALL = YES;
SWIFT_INCLUDE_PATHS = "${SRCROOT}/Zip/minizip/**"; SWIFT_INCLUDE_PATHS = "${SRCROOT}/Zip/minizip/**";
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 3.0;
}; };
name = Release; name = Release;
}; };
...@@ -932,6 +939,7 @@ ...@@ -932,6 +939,7 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.roymarmelstein.ZipTests; PRODUCT_BUNDLE_IDENTIFIER = com.roymarmelstein.ZipTests;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
}; };
name = Debug; name = Debug;
}; };
...@@ -942,6 +950,8 @@ ...@@ -942,6 +950,8 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.roymarmelstein.ZipTests; PRODUCT_BUNDLE_IDENTIFIER = com.roymarmelstein.ZipTests;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 3.0;
}; };
name = Release; name = Release;
}; };
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
"DVTSourceControlWorkspaceBlueprintIdentifierKey" : "F3707899-72AE-49DA-9BDD-5CB0B64CF03A", "DVTSourceControlWorkspaceBlueprintIdentifierKey" : "F3707899-72AE-49DA-9BDD-5CB0B64CF03A",
"DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : { "DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : {
"8DA5B175D3FDB92A3B3CCBD4109A734F1316A3DD" : "Zip\/Zip\/minizip\/", "8DA5B175D3FDB92A3B3CCBD4109A734F1316A3DD" : "Zip\/Zip\/minizip\/",
"3DD768C8AB2D6A2647C9EF99992D3CC5820E77C4" : "Zip\/" "3DD768C8AB2D6A2647C9EF99992D3CC5820E77C4" : "Zip-swift3\/"
}, },
"DVTSourceControlWorkspaceBlueprintNameKey" : "Zip", "DVTSourceControlWorkspaceBlueprintNameKey" : "Zip",
"DVTSourceControlWorkspaceBlueprintVersion" : 204, "DVTSourceControlWorkspaceBlueprintVersion" : 204,
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Scheme <Scheme
LastUpgradeVersion = "0720" LastUpgradeVersion = "0800"
version = "1.3"> version = "1.3">
<BuildAction <BuildAction
parallelizeBuildables = "YES" parallelizeBuildables = "YES"
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Scheme <Scheme
LastUpgradeVersion = "0730" LastUpgradeVersion = "0800"
version = "1.3"> version = "1.3">
<BuildAction <BuildAction
parallelizeBuildables = "YES" parallelizeBuildables = "YES"
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Scheme <Scheme
LastUpgradeVersion = "0720" LastUpgradeVersion = "0800"
version = "1.3"> version = "1.3">
<BuildAction <BuildAction
parallelizeBuildables = "YES" parallelizeBuildables = "YES"
......
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Scheme <Scheme
LastUpgradeVersion = "0720" LastUpgradeVersion = "0800"
version = "1.3"> version = "1.3">
<BuildAction <BuildAction
parallelizeBuildables = "YES" parallelizeBuildables = "YES"
......
...@@ -15,11 +15,11 @@ ...@@ -15,11 +15,11 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>FMWK</string> <string>FMWK</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>0.4.1</string> <string>0.4.3</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>6</string> <string>7</string>
<key>NSPrincipalClass</key> <key>NSPrincipalClass</key>
<string></string> <string></string>
</dict> </dict>
......
...@@ -21,7 +21,7 @@ extension Zip { ...@@ -21,7 +21,7 @@ extension Zip {
- returns: NSURL of the destination folder. - returns: NSURL of the destination folder.
*/ */
public class func quickUnzipFile(path: NSURL) throws -> NSURL { public class func quickUnzipFile(_ path: URL) throws -> URL {
return try quickUnzipFile(path, progress: nil) return try quickUnzipFile(path, progress: nil)
} }
...@@ -37,16 +37,21 @@ extension Zip { ...@@ -37,16 +37,21 @@ extension Zip {
- returns: NSURL of the destination folder. - returns: NSURL of the destination folder.
*/ */
public class func quickUnzipFile(path: NSURL, progress: ((progress: Double) -> ())?) throws -> NSURL { public class func quickUnzipFile(_ path: URL, progress: ((progress: Double) -> ())?) throws -> URL {
let fileManager = NSFileManager.defaultManager() let fileManager = FileManager.default
guard let fileExtension = path.pathExtension, let fileName = path.lastPathComponent else {
throw ZipError.UnzipFail let fileExtension = path.pathExtension
} let fileName = path.lastPathComponent
let directoryName = fileName.stringByReplacingOccurrencesOfString(".\(fileExtension)", withString: "")
let documentsUrl = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] as NSURL let directoryName = fileName.replacingOccurrences(of: ".\(fileExtension)", with: "")
let destinationUrl = documentsUrl.URLByAppendingPathComponent(directoryName, isDirectory: true) let documentsUrl = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] as URL
do {
let destinationUrl = documentsUrl.appendingPathComponent(directoryName, isDirectory: true)
try self.unzipFile(path, destination: destinationUrl, overwrite: true, password: nil, progress: progress) try self.unzipFile(path, destination: destinationUrl, overwrite: true, password: nil, progress: progress)
return destinationUrl return destinationUrl
}catch{
throw(ZipError.unzipFail)
}
} }
//MARK: Quick Zip //MARK: Quick Zip
...@@ -63,7 +68,7 @@ extension Zip { ...@@ -63,7 +68,7 @@ extension Zip {
- returns: NSURL of the destination folder. - returns: NSURL of the destination folder.
*/ */
public class func quickZipFiles(paths: [NSURL], fileName: String) throws -> NSURL { public class func quickZipFiles(_ paths: [URL], fileName: String) throws -> URL {
return try quickZipFiles(paths, fileName: fileName, progress: nil) return try quickZipFiles(paths, fileName: fileName, progress: nil)
} }
...@@ -80,10 +85,10 @@ extension Zip { ...@@ -80,10 +85,10 @@ extension Zip {
- returns: NSURL of the destination folder. - returns: NSURL of the destination folder.
*/ */
public class func quickZipFiles(paths: [NSURL], fileName: String, progress: ((progress: Double) -> ())?) throws -> NSURL { public class func quickZipFiles(_ paths: [URL], fileName: String, progress: ((progress: Double) -> ())?) throws -> URL {
let fileManager = NSFileManager.defaultManager() let fileManager = FileManager.default
let documentsUrl = fileManager.URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] as NSURL let documentsUrl = fileManager.urls(for: .documentDirectory, in: .userDomainMask)[0] as URL
let destinationUrl = documentsUrl.URLByAppendingPathComponent("\(fileName).zip") let destinationUrl = try! documentsUrl.appendingPathComponent("\(fileName).zip")
try self.zipFiles(paths, zipFilePath: destinationUrl, password: nil, progress: progress) try self.zipFiles(paths, zipFilePath: destinationUrl, password: nil, progress: progress)
return destinationUrl return destinationUrl
} }
......
This diff is collapsed.
...@@ -11,22 +11,17 @@ import Foundation ...@@ -11,22 +11,17 @@ import Foundation
internal class ZipUtilities { internal class ZipUtilities {
// File manager // File manager
let fileManager = NSFileManager.defaultManager() let fileManager = FileManager.default
/** /**
* ProcessedFilePath struct * ProcessedFilePath struct
*/ */
internal struct ProcessedFilePath { internal struct ProcessedFilePath {
let filePathURL: NSURL let filePathURL: URL
let fileName: String? let fileName: String?
func filePath() -> String { func filePath() -> String {
if let filePath = filePathURL.path { return filePathURL.path
return filePath
}
else {
return String()
}
} }
} }
...@@ -39,21 +34,19 @@ internal class ZipUtilities { ...@@ -39,21 +34,19 @@ internal class ZipUtilities {
- returns: Array of ProcessedFilePath structs. - returns: Array of ProcessedFilePath structs.
*/ */
internal func processZipPaths(paths: [NSURL]) -> [ProcessedFilePath]{ internal func processZipPaths(_ paths: [URL]) -> [ProcessedFilePath]{
var processedFilePaths = [ProcessedFilePath]() var processedFilePaths = [ProcessedFilePath]()
for path in paths { for path in paths {
guard let filePath = path.path else { let filePath = path.path
continue
}
var isDirectory: ObjCBool = false var isDirectory: ObjCBool = false
fileManager.fileExistsAtPath(filePath, isDirectory: &isDirectory) fileManager.fileExists(atPath: filePath, isDirectory: &isDirectory)
if !isDirectory { if !isDirectory.boolValue {
let processedPath = ProcessedFilePath(filePathURL: path, fileName: path.lastPathComponent) let processedPath = ProcessedFilePath(filePathURL: path, fileName: path.lastPathComponent)
processedFilePaths.append(processedPath) processedFilePaths.append(processedPath)
} }
else { else {
let directoryContents = expandDirectoryFilePath(path) let directoryContents = expandDirectoryFilePath(path)
processedFilePaths.appendContentsOf(directoryContents) processedFilePaths.append(contentsOf: directoryContents)
} }
} }
return processedFilePaths return processedFilePaths
...@@ -67,24 +60,25 @@ internal class ZipUtilities { ...@@ -67,24 +60,25 @@ internal class ZipUtilities {
- returns: Array of ProcessedFilePath structs. - returns: Array of ProcessedFilePath structs.
*/ */
internal func expandDirectoryFilePath(directory: NSURL) -> [ProcessedFilePath] { internal func expandDirectoryFilePath(_ directory: URL) -> [ProcessedFilePath] {
var processedFilePaths = [ProcessedFilePath]() var processedFilePaths = [ProcessedFilePath]()
if let directoryPath = directory.path, let enumerator = fileManager.enumeratorAtPath(directoryPath) { let directoryPath = directory.path
if let enumerator = fileManager.enumerator(atPath: directoryPath) {
while let filePathComponent = enumerator.nextObject() as? String { while let filePathComponent = enumerator.nextObject() as? String {
let path = directory.URLByAppendingPathComponent(filePathComponent) let path = directory.appendingPathComponent(filePathComponent)
guard let filePath = path.path, let directoryName = directory.lastPathComponent else { let filePath = path.path
continue let directoryName = directory.lastPathComponent
}
var isDirectory: ObjCBool = false var isDirectory: ObjCBool = false
fileManager.fileExistsAtPath(filePath, isDirectory: &isDirectory) fileManager.fileExists(atPath: filePath, isDirectory: &isDirectory)
if !isDirectory { if !isDirectory.boolValue {
let fileName = (directoryName as NSString).stringByAppendingPathComponent(filePathComponent) let fileName = (directoryName as NSString).appendingPathComponent(filePathComponent)
let processedPath = ProcessedFilePath(filePathURL: path, fileName: fileName) let processedPath = ProcessedFilePath(filePathURL: path, fileName: fileName)
processedFilePaths.append(processedPath) processedFilePaths.append(processedPath)
} }
else { else {
let directoryContents = expandDirectoryFilePath(path) let directoryContents = expandDirectoryFilePath(path)
processedFilePaths.appendContentsOf(directoryContents) processedFilePaths.append(contentsOf: directoryContents)
} }
} }
} }
......
...@@ -15,10 +15,10 @@ ...@@ -15,10 +15,10 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>BNDL</string> <string>BNDL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>0.4.1</string> <string>0.4.3</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>6</string> <string>7</string>
</dict> </dict>
</plist> </plist>
This diff is collapsed.
#!/bin/bash #!/bin/bash
# **** Update me when new Xcode versions are released! **** # **** Update me when new Xcode versions are released! ****
PLATFORM="platform=iOS Simulator,OS=9.2,name=iPhone 6" PLATFORM="platform=iOS Simulator,OS=10.0,name=iPhone 6s"
SDK="iphonesimulator9.2" SDK="iphonesimulator10.0"
# It is pitch black. # It is pitch black.
...@@ -19,12 +19,12 @@ MODE="$1" ...@@ -19,12 +19,12 @@ MODE="$1"
if [ "$MODE" = "framework" ]; then if [ "$MODE" = "framework" ]; then
echo "Building and testing Zip." echo "Building and testing Zip."
xctool \ xcodebuild \
-project Zip.xcodeproj \ -project Zip.xcodeproj \
-scheme Zip \ -scheme Zip \
-sdk "$SDK" \ -sdk "$SDK" \
-destination "$PLATFORM" \ -destination "$PLATFORM" \
build test test
trap - EXIT trap - EXIT
exit 0 exit 0
fi fi
...@@ -35,12 +35,11 @@ if [ "$MODE" = "examples" ]; then ...@@ -35,12 +35,11 @@ if [ "$MODE" = "examples" ]; then
for example in examples/*/; do for example in examples/*/; do
echo "Building $example." echo "Building $example."
pod install --project-directory=$example pod install --project-directory=$example
xctool \ xcodebuild \
-workspace "${example}Sample.xcworkspace" \ -workspace "${example}Sample.xcworkspace" \
-scheme Sample \ -scheme Sample \
-sdk "$SDK" \ -sdk "$SDK" \
-destination "$PLATFORM" \ -destination "$PLATFORM"
build
done done
trap - EXIT trap - EXIT
exit 0 exit 0
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment