/
DotEnvFile+load.swift
69 lines (65 loc) 路 2.74 KB
/
DotEnvFile+load.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import Logging
import NIOCore
import NIOPosix
extension DotEnvFile {
/// Reads the dotenv files relevant to the environment and loads them into the process.
///
/// let environment: Environment
/// let elgp: EventLoopGroupProvider
/// let logger: Logger
/// try DotEnvFile.load(for: .development, on: elgp, logger: logger)
/// print(Environment.process.FOO) // BAR
///
/// - parameters:
/// - environment: current environment, selects which .env file to use.
/// - eventLoopGroupProvider: Either provides an EventLoopGroup or tells the function to create a new one.
/// - logger: Optionally provide an existing logger.
@available(*, deprecated, message: "use `load(for:on:fileio:logger)`")
public static func load(
for environment: Environment = .development,
on eventLoopGroupProvider: Application.EventLoopGroupProvider = .singleton,
logger: Logger = Logger(label: "dot-env-logger")
) {
let threadPool = NIOThreadPool(numberOfThreads: 1)
threadPool.start()
defer {
do {
try threadPool.syncShutdownGracefully()
} catch {
logger.warning("Shutting down threadPool failed: \(error)")
}
}
let fileio = NonBlockingFileIO(threadPool: threadPool)
self.load(for: environment, on: eventLoopGroupProvider, fileio: fileio, logger: logger)
}
/// Reads the dotenv files relevant to the environment and loads them into the process.
///
/// let path: String
/// let elgp: EventLoopGroupProvider
/// let logger: Logger
/// try DotEnvFile.load(path: path, on: elgp, logger: logger)
/// print(Environment.process.FOO) // BAR
///
/// - parameters:
/// - path: Absolute or relative path of the dotenv file.
/// - eventLoopGroupProvider: Either provides an EventLoopGroup or tells the function to create a new one.
/// - logger: Optionally provide an existing logger.
@available(*, deprecated, message: "use `load(path:on:fileio:logger)`")
public static func load(
path: String,
on eventLoopGroupProvider: Application.EventLoopGroupProvider = .singleton,
logger: Logger = Logger(label: "dot-env-logger")
) {
let threadPool = NIOThreadPool(numberOfThreads: 1)
threadPool.start()
defer {
do {
try threadPool.syncShutdownGracefully()
} catch {
logger.warning("Shutting down threadPool failed: \(error)")
}
}
let fileio = NonBlockingFileIO(threadPool: threadPool)
self.load(path: path, on: eventLoopGroupProvider, fileio: fileio, logger: logger)
}
}