// // Url+Ext.swift // gen_html // // Created by Isaac Paul on 9/25/25. // import Foundation extension URL { enum FileType { case directory case regularFile case other } func fetchFileType() throws -> FileType { let values = try self.resourceValues(forKeys: [.isDirectoryKey, .isRegularFileKey]) if values.isDirectory == true { return .directory } if values.isRegularFile == true { return .regularFile } if self.hasDirectoryPath { return .directory } return .other } func getRelativePathComponents( to toFolder: URL, // URL A ) throws -> [String] { // 1) Get path components of A’s directory let aDirComponents = toFolder.pathComponents // 2) Get path components of B let bComponents = self.pathComponents // Ensure B is actually a prefix of A’s directory guard bComponents.count <= aDirComponents.count, aDirComponents[0.. URL { let relativeComponents = try baseFolder.getRelativePathComponents(to: fromFolder) // 4) Append them one by one onto C var result = self for comp in relativeComponents { result.appendPathComponent(comp) } return result } }