import Foundation import FSKit enum MountError: Error { case extensionNotAvailable case mountFailed(String) case unmountFailed(String) case invalidPath } class MountService { private var currentMountPoint: URL? private let defaultMountPoint = URL(fileURLWithPath: "/Volumes/MarkBase_warren") private let fsClient = FSClient.shared func mount() -> Result { print("Attempting to mount MarkBaseFS...") fsClient.fetchInstalledExtensions { extensions, error in if let error = error { print("ERROR fetching extensions: \(error)") return } guard let extensions = extensions else { print("ERROR: No extensions returned") return } print("Found \(extensions.count) FSKit Extensions") let markbaseExtension = extensions.filter { $0.bundleIdentifier.contains("markbase") } if markbaseExtension.isEmpty { print("ERROR: MarkBaseFS Extension not found") return } print("MarkBaseFS Extension found: \(markbaseExtension.first!.bundleIdentifier)") } let mountPoint = defaultMountPoint if !FileManager.default.fileExists(atPath: mountPoint.path) { do { try FileManager.default.createDirectory(at: mountPoint, withIntermediateDirectories: true) print("Created mount point: \(mountPoint.path)") } catch { print("ERROR creating mount point: \(error)") return .failure(.invalidPath) } } currentMountPoint = mountPoint print("Mount successful (placeholder - will use FSKit API)") return .success(()) } func unmount() -> Result { print("Attempting to unmount MarkBaseFS...") guard let mountPoint = currentMountPoint else { print("No active mount") return .failure(.unmountFailed("No active mount")) } print("Unmounting: \(mountPoint.path)") currentMountPoint = nil print("Unmount successful (placeholder - will use FSKit API)") return .success(()) } func getMountStatus() -> String { if currentMountPoint != nil { return "Mounted at \(currentMountPoint!.path)" } else { return "Unmounted" } } }