// // DirectoryCleaner.swift // shortcut // // Created by Bailey Townsend on 7/17/25. // import Foundation class DirectoryCleaner { // Get the total size of all files in a directory static func getTotalSize(of directory: URL) -> Int64 { let fileManager = FileManager.default var totalSize: Int64 = 0 do { let contents = try fileManager.contentsOfDirectory( at: directory, includingPropertiesForKeys: [.fileSizeKey, .isDirectoryKey]) for fileURL in contents { let resourceValues = try fileURL.resourceValues(forKeys: [ .fileSizeKey, .isDirectoryKey, ]) // Skip directories if resourceValues.isDirectory == true { continue } let fileSize = Int64(resourceValues.fileSize ?? 0) totalSize += fileSize } } catch { print("Error reading directory: \(error)") } return totalSize } // Clear all files in a directory static func clearDirectory(_ directory: URL) throws { let fileManager = FileManager.default do { let contents = try fileManager.contentsOfDirectory( at: directory, includingPropertiesForKeys: [.isDirectoryKey]) for fileURL in contents { let resourceValues = try fileURL.resourceValues(forKeys: [.isDirectoryKey]) // Only remove files, not subdirectories if resourceValues.isDirectory != true { try fileManager.removeItem(at: fileURL) } } print("Directory cleared successfully") } catch { print("Error clearing directory: \(error)") throw error } } // Clear all files and subdirectories in a directory static func clearDirectoryCompletely(_ directory: URL) throws { let fileManager = FileManager.default do { let contents = try fileManager.contentsOfDirectory( at: directory, includingPropertiesForKeys: nil) for fileURL in contents { try fileManager.removeItem(at: fileURL) } print("Directory cleared completely") } catch { print("Error clearing directory: \(error)") throw error } } }