Skip to content

Commit 7a9d9d8

Browse files
committed
Update to sync source
1 parent 539fd59 commit 7a9d9d8

1 file changed

Lines changed: 58 additions & 33 deletions

File tree

Package.swift

Lines changed: 58 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -3,42 +3,69 @@
33
import Foundation
44
import PackageDescription
55

6+
/* GENERATED BY SPMManifestTool BEGIN */
7+
/* DO NOT EDIT */
8+
9+
public protocol EnvironmentProvider {
10+
func value(forKey key: String) -> String?
11+
}
12+
13+
import PackageDescription
14+
public struct PackageContextEnvironmentProvider: EnvironmentProvider {
15+
public init() {}
16+
17+
public func value(forKey key: String) -> String? {
18+
Context.environment[key]
19+
}
20+
}
21+
622
// MARK: - Env Manager
723

8-
@MainActor
9-
final class EnvManager {
10-
static let shared = EnvManager()
24+
public final class EnvManager {
25+
nonisolated(unsafe) public static let shared = EnvManager()
1126

1227
private var domains: [String] = []
28+
private var environmentProvider: EnvironmentProvider
29+
30+
/// When true, append raw key as fallback when searching in domains
31+
public var includeFallbackToRawKey: Bool = false
1332

14-
func register(domain: String) {
33+
private init() {
34+
self.environmentProvider = PackageContextEnvironmentProvider()
35+
}
36+
37+
/// Set a custom environment provider (useful for testing)
38+
public func setEnvironmentProvider(_ provider: EnvironmentProvider) {
39+
self.environmentProvider = provider
40+
}
41+
42+
/// Reset domains and environment provider (useful for testing)
43+
public func reset() {
44+
domains.removeAll()
45+
includeFallbackToRawKey = false
46+
self.environmentProvider = PackageContextEnvironmentProvider()
47+
}
48+
49+
public func register(domain: String) {
1550
domains.append(domain)
1651
}
1752

18-
func withDomain<T>(_ domain: String, perform: () throws -> T) rethrows -> T {
53+
public func withDomain<T>(_ domain: String, perform: () throws -> T) rethrows -> T {
1954
domains.append(domain)
2055
defer { domains.removeAll { $0 == domain } }
2156
return try perform()
2257
}
2358

24-
private func envValue<T>(
25-
rawKey: String,
26-
default defaultValue: T?,
27-
searchInDomain: Bool,
28-
parser: (String) -> T?
29-
) -> T? {
59+
private func envValue<T>(rawKey: String, default defaultValue: T?, searchInDomain: Bool, parser: (String) -> T?) -> T? {
3060
func parseEnvValue(_ key: String) -> (String, T)? {
31-
guard let value = Context.environment[key] else {
32-
return nil
33-
}
34-
guard let result = parser(value) else {
35-
return nil
36-
}
61+
guard let value = environmentProvider.value(forKey: key),
62+
let result = parser(value) else { return nil }
3763
return (value, result)
3864
}
39-
let keys: [String] = searchInDomain
40-
? domains.map { "\($0.uppercased())_\(rawKey)" }
41-
: [rawKey]
65+
var keys: [String] = searchInDomain ? domains.map { "\($0.uppercased())_\(rawKey)" } : []
66+
if !searchInDomain || includeFallbackToRawKey {
67+
keys.append(rawKey)
68+
}
4269
for key in keys {
4370
if let (value, result) = parseEnvValue(key) {
4471
print("[Env] \(key)=\(value) -> \(result)")
@@ -52,7 +79,7 @@ final class EnvManager {
5279
return defaultValue
5380
}
5481

55-
func envBoolValue(rawKey: String, default defaultValue: Bool? = nil, searchInDomain: Bool) -> Bool? {
82+
public func envBoolValue(rawKey: String, default defaultValue: Bool? = nil, searchInDomain: Bool) -> Bool? {
5683
envValue(rawKey: rawKey, default: defaultValue, searchInDomain: searchInDomain) { value in
5784
switch value {
5885
case "1": true
@@ -62,37 +89,35 @@ final class EnvManager {
6289
}
6390
}
6491

65-
func envIntValue(rawKey: String, default defaultValue: Int? = nil, searchInDomain: Bool) -> Int? {
92+
public func envIntValue(rawKey: String, default defaultValue: Int? = nil, searchInDomain: Bool) -> Int? {
6693
envValue(rawKey: rawKey, default: defaultValue, searchInDomain: searchInDomain) { Int($0) }
6794
}
6895

69-
func envStringValue(rawKey: String, default defaultValue: String? = nil, searchInDomain: Bool) -> String? {
96+
public func envStringValue(rawKey: String, default defaultValue: String? = nil, searchInDomain: Bool) -> String? {
7097
envValue(rawKey: rawKey, default: defaultValue, searchInDomain: searchInDomain) { $0 }
7198
}
7299
}
73-
EnvManager.shared.register(domain: "OpenAttributeGraph")
74-
EnvManager.shared.register(domain: "OpenSwiftUI")
75100

76-
@MainActor
77-
func envBoolValue(_ key: String, default defaultValue: Bool = false, searchInDomain: Bool = true) -> Bool {
101+
public func envBoolValue(_ key: String, default defaultValue: Bool = false, searchInDomain: Bool = true) -> Bool {
78102
EnvManager.shared.envBoolValue(rawKey: key, default: defaultValue, searchInDomain: searchInDomain)!
79103
}
80104

81-
@MainActor
82-
func envIntValue(_ key: String, default defaultValue: Int = 0, searchInDomain: Bool = true) -> Int {
105+
public func envIntValue(_ key: String, default defaultValue: Int = 0, searchInDomain: Bool = true) -> Int {
83106
EnvManager.shared.envIntValue(rawKey: key, default: defaultValue, searchInDomain: searchInDomain)!
84107
}
85108

86-
@MainActor
87-
func envStringValue(_ key: String, default defaultValue: String, searchInDomain: Bool = true) -> String {
109+
public func envStringValue(_ key: String, default defaultValue: String, searchInDomain: Bool = true) -> String {
88110
EnvManager.shared.envStringValue(rawKey: key, default: defaultValue, searchInDomain: searchInDomain)!
89111
}
90112

91-
@MainActor
92-
func envStringValue(_ key: String, searchInDomain: Bool = true) -> String? {
113+
public func envStringValue(_ key: String, searchInDomain: Bool = true) -> String? {
93114
EnvManager.shared.envStringValue(rawKey: key, searchInDomain: searchInDomain)
94115
}
95116

117+
/* GENERATED BY SPMManifestTool END */
118+
EnvManager.shared.register(domain: "OpenAttributeGraph")
119+
EnvManager.shared.register(domain: "OpenSwiftUI")
120+
96121
// MARK: - Env and config
97122

98123
#if os(macOS)

0 commit comments

Comments
 (0)