58 lines
2.0 KiB
Swift
58 lines
2.0 KiB
Swift
import Foundation
|
|
|
|
enum AppSupportPaths {
|
|
private static let bundleIdentifier = Bundle.main.bundleIdentifier ?? "app.blitztext.mac"
|
|
|
|
static var appSupportDirectoryURL: URL {
|
|
FileManager.default.urls(for: .applicationSupportDirectory, in: .userDomainMask)
|
|
.first!
|
|
.appendingPathComponent("Blitztext", isDirectory: true)
|
|
}
|
|
|
|
static var settingsURL: URL {
|
|
appSupportDirectoryURL.appendingPathComponent("settings.json")
|
|
}
|
|
|
|
static var localModelsDirectoryURL: URL {
|
|
appSupportDirectoryURL.appendingPathComponent("models", isDirectory: true)
|
|
}
|
|
|
|
static var whisperKitModelsDirectoryURL: URL {
|
|
localModelsDirectoryURL.appendingPathComponent("whisperkit", isDirectory: true)
|
|
}
|
|
|
|
static var defaultWhisperKitModelURL: URL {
|
|
whisperKitModelsDirectoryURL.appendingPathComponent(
|
|
"openai_whisper-large-v3-v20240930_626MB",
|
|
isDirectory: true
|
|
)
|
|
}
|
|
|
|
static var cachesDirectoryURL: URL {
|
|
FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask)
|
|
.first!
|
|
.appendingPathComponent(bundleIdentifier, isDirectory: true)
|
|
}
|
|
|
|
static var preferencesURL: URL {
|
|
FileManager.default.homeDirectoryForCurrentUser
|
|
.appendingPathComponent("Library", isDirectory: true)
|
|
.appendingPathComponent("Preferences", isDirectory: true)
|
|
.appendingPathComponent("\(bundleIdentifier).plist")
|
|
}
|
|
|
|
static var savedApplicationStateDirectoryURL: URL {
|
|
FileManager.default.homeDirectoryForCurrentUser
|
|
.appendingPathComponent("Library", isDirectory: true)
|
|
.appendingPathComponent("Saved Application State", isDirectory: true)
|
|
.appendingPathComponent("\(bundleIdentifier).savedState", isDirectory: true)
|
|
}
|
|
|
|
static func ensureAppSupportDirectoryExists() throws {
|
|
try FileManager.default.createDirectory(
|
|
at: appSupportDirectoryURL,
|
|
withIntermediateDirectories: true
|
|
)
|
|
}
|
|
}
|