核心功能: - ✅ Categories/Series双视图管理(category_view.rs + import_markdown.rs) - ✅ FUSE Multi-Volume支持(tree_type参数) - ✅ SSH/SFTP/SCP/rsync协议完整实现(4042行) - ✅ NFS/SMB Module Phase 1-3完成 - ✅ Archive Module Phase 1-4完成(2916行) - ✅ Download Center API完整实现 - ✅ S3兼容API实现(560行) Git配置修正: - ✅ 删除错误origin(gitea.momentry.ddns.net) - ✅ 删除m5max128(指向机器名) - ✅ 设置origin = m5max128gitea.momentry.ddns.net/admin/markbase - ✅ 设置m4minigitea = m4minigitea.momentry.ddns.net/warren/markbase 数据清理: - ✅ 删除38个临时SQLite(保留accusys.sqlite、demo.sqlite) - ✅ 删除.bak、test_*.bin、调试脚本等临时文件 - ✅ 删除临时目录(build/、download files/、raid_test/等) - ✅ 更新.gitignore排除临时文件 架构优化: - 52个文件修改,2434行新增,4739行删除 - Workspace成员整合(16个crate) - 数据库状态:accusys.sqlite保留(主demo测试) 远程同步: - ✅ 准备推送到m5max128gitea(远程Gitea) - ✅ 准备推送到m4minigitea(本地Gitea)
82 lines
2.5 KiB
Swift
82 lines
2.5 KiB
Swift
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<Void, MountError> {
|
|
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<Void, MountError> {
|
|
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"
|
|
}
|
|
}
|
|
} |