Skip to content

Commit 913e6a0

Browse files
authored
Use Foundation.ProcessInfo for environment parsing (#573)
1 parent 71bb4a4 commit 913e6a0

File tree

2 files changed

+5
-18
lines changed

2 files changed

+5
-18
lines changed

Sources/Hummingbird/Environment.swift

+3-16
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import Darwin.C
2121
#else
2222
#error("Unsupported platform")
2323
#endif
24+
import Foundation
2425
import HummingbirdCore
2526
import NIOCore
2627

@@ -111,22 +112,8 @@ public struct Environment: Sendable, Decodable, ExpressibleByDictionaryLiteral {
111112
/// Construct environment variable map
112113
static func getEnvironment() -> [String: String] {
113114
var values: [String: String] = [:]
114-
let equalSign = Character("=")
115-
#if canImport(Musl)
116-
guard let envp = environ else { return [:] }
117-
#else
118-
let envp = environ
119-
#endif
120-
var idx = 0
121-
122-
while let entry = envp.advanced(by: idx).pointee {
123-
let entry = String(cString: entry)
124-
if let i = entry.firstIndex(of: equalSign) {
125-
let key = String(entry.prefix(upTo: i))
126-
let value = String(entry.suffix(from: i).dropFirst())
127-
values[key.lowercased()] = value
128-
}
129-
idx += 1
115+
for item in ProcessInfo.processInfo.environment {
116+
values[item.key.lowercased()] = item.value
130117
}
131118
return values
132119
}

Tests/HummingbirdTests/EnvironmentTests.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ final class EnvironmentTests: XCTestCase {
4343

4444
func testSetForAllEnvironments() {
4545
var env = Environment()
46-
env.set("TEST_VAR", value: "testSet")
46+
env.set("TEST_VAR_E1", value: "testSet")
4747
let env2 = Environment()
48-
XCTAssertEqual(env2.get("TEST_VAR"), "testSet")
48+
XCTAssertEqual(env2.get("TEST_VAR_E1"), "testSet")
4949
}
5050

5151
func testLogLevel() {

0 commit comments

Comments
 (0)