36 lines
1.0 KiB
Swift
36 lines
1.0 KiB
Swift
import Foundation
|
|
|
|
public struct WarpSettingsReader: Sendable {
|
|
public static let apiKeyEnvironmentKeys = [
|
|
"WARP_API_KEY",
|
|
"WARP_TOKEN",
|
|
]
|
|
|
|
public static func apiKey(
|
|
environment: [String: String] = ProcessInfo.processInfo.environment) -> String?
|
|
{
|
|
for key in self.apiKeyEnvironmentKeys {
|
|
guard let raw = environment[key]?.trimmingCharacters(in: .whitespacesAndNewlines),
|
|
!raw.isEmpty
|
|
else {
|
|
continue
|
|
}
|
|
let cleaned = Self.cleaned(raw)
|
|
if !cleaned.isEmpty {
|
|
return cleaned
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
private static func cleaned(_ raw: String) -> String {
|
|
var value = raw
|
|
if (value.hasPrefix("\"") && value.hasSuffix("\"")) ||
|
|
(value.hasPrefix("'") && value.hasSuffix("'"))
|
|
{
|
|
value = String(value.dropFirst().dropLast())
|
|
}
|
|
return value.trimmingCharacters(in: .whitespacesAndNewlines)
|
|
}
|
|
}
|