diff --git a/Zip/ZipUtilities.swift b/Zip/ZipUtilities.swift index 4759336f395a59661a059ea4b023b70d9883100a..d2394b6f2e8ea7ca62a447b68acf49dbc50eca36 100644 --- a/Zip/ZipUtilities.swift +++ b/Zip/ZipUtilities.swift @@ -10,6 +10,27 @@ import Foundation internal class ZipUtilities { + /* + Include root directory. + Default is true. + + e.g. The Test directory contains two files A.txt and B.txt. + + As true: + $ zip -r Test.zip Test/ + $ unzip -l Test.zip + Test/ + Test/A.txt + Test/B.txt + + As false: + $ zip -r Test.zip Test/ + $ unzip -l Test.zip + A.txt + B.txt + */ + let includeRootDirectory = true + // File manager let fileManager = FileManager.default @@ -54,7 +75,7 @@ internal class ZipUtilities { /** - Recursive function to expand directory contents and parse them into ProcessedFilePath structs. + Expand directory contents and parse them into ProcessedFilePath structs. - parameter directory: Path of folder as NSURL. @@ -67,12 +88,15 @@ internal class ZipUtilities { while let filePathComponent = enumerator.nextObject() as? String { let path = directory.appendingPathComponent(filePathComponent) let filePath = path.path - let directoryName = directory.lastPathComponent var isDirectory: ObjCBool = false fileManager.fileExists(atPath: filePath, isDirectory: &isDirectory) if !isDirectory.boolValue { - let fileName = (directoryName as NSString).appendingPathComponent(filePathComponent) + var fileName = filePathComponent + if includeRootDirectory { + let directoryName = directory.lastPathComponent + fileName = (directoryName as NSString).appendingPathComponent(filePathComponent) + } let processedPath = ProcessedFilePath(filePathURL: path, fileName: fileName) processedFilePaths.append(processedPath) }