 
 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
 

    
    
    /**
     Recursive function to expand directory contents and parse them into ProcessedFilePath structs.
     
     - parameter directory: Path of folder as NSURL.
     

            while let filePathComponent = enumerator.nextObject() as? String {
                let path = directory.appendingPathComponent(filePathComponent)
                let filePath = path.path

                var isDirectory: ObjCBool = false
                fileManager.fileExists(atPath: filePath, isDirectory: &isDirectory)
                if !isDirectory.boolValue {
                    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)
                }
