feat: Begins work on supporting toml for configuration.
This commit is contained in:
@@ -3,6 +3,8 @@ import DependenciesMacros
|
||||
import Foundation
|
||||
import ShellClient
|
||||
|
||||
// TODO: Drop support for non-json configuration.
|
||||
|
||||
public extension DependencyValues {
|
||||
var cliClient: CliClient {
|
||||
get { self[CliClient.self] }
|
||||
@@ -38,6 +40,7 @@ public struct CliClient: Sendable {
|
||||
|
||||
extension CliClient: DependencyKey {
|
||||
|
||||
// swiftlint:disable function_body_length
|
||||
public static func live(
|
||||
decoder: JSONDecoder = .init(),
|
||||
encoder: JSONEncoder = .init(),
|
||||
@@ -55,9 +58,10 @@ extension CliClient: DependencyKey {
|
||||
var env = env
|
||||
|
||||
logger.trace("Loading configuration from: \(url)")
|
||||
try fileClient.loadFile(url, &env, decoder)
|
||||
|
||||
return try .fromEnv(env)
|
||||
guard let config = try fileClient.loadFile(url, &env, decoder) else {
|
||||
return try .fromEnv(env)
|
||||
}
|
||||
return config
|
||||
|
||||
} runCommand: { args, quiet, shell in
|
||||
@Dependency(\.asyncShellClient) var shellClient
|
||||
@@ -105,6 +109,8 @@ extension CliClient: DependencyKey {
|
||||
}
|
||||
}
|
||||
|
||||
// swiftlint:enable function_body_length
|
||||
|
||||
public static var liveValue: CliClient {
|
||||
.live(env: ProcessInfo.processInfo.environment)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user