Sapling/Sources/SaplingApp/AppDependencies.swift

44 lines
1.4 KiB
Swift
Raw Normal View History

2026-05-29 15:34:15 +02:00
import Foundation
import SaplingLogging
import SaplingStorage
import SaplingWorkspace
struct AppDependencies {
let configurationStore: any ConfigurationStore
let workspaceManager: any WorkspaceManaging
let logger: SaplingLogger
static func live() -> AppDependencies {
let configurationStore = JSONConfigurationStore(
fileURL: supportDirectory().appendingPathComponent("Configuration.json")
)
let workspaceManager = LocalWorkspaceManager()
2026-05-29 15:34:15 +02:00
return AppDependencies(
configurationStore: configurationStore,
workspaceManager: workspaceManager,
logger: SaplingLogger()
)
}
static func preview() -> AppDependencies {
let configurationStore = InMemoryConfigurationStore()
let workspaceManager = LocalWorkspaceManager()
2026-05-29 15:34:15 +02:00
return AppDependencies(
configurationStore: configurationStore,
workspaceManager: workspaceManager,
logger: SaplingLogger(subsystem: "app.sapling.Sapling.preview")
)
}
private static func supportDirectory() -> URL {
let baseURL = FileManager.default.urls(
for: .applicationSupportDirectory,
in: .userDomainMask
).first ?? FileManager.default.temporaryDirectory
return baseURL.appendingPathComponent("Sapling", isDirectory: true)
}
}