Files

37 lines
1.4 KiB
Swift

import Foundation
// MARK: - 进程级路径与环境(测试缝经 SSXNG_* 环境变量覆盖)
let environment = ProcessInfo.processInfo.environment
// 契约路径优先;运行目录覆盖仅在没有契约覆盖时使用,避免同一部署的路径分叉。
let runtimePaths: RuntimePaths = {
if let path = environment["SSXNG_CONTRACT_PATH"] {
return RuntimePaths(fileURL: URL(fileURLWithPath: path))
}
if let path = environment["SSXNG_RUNTIME_DIR"] {
return RuntimePaths(directoryURL: URL(fileURLWithPath: path, isDirectory: true))
}
return ApplicationSupportPaths.current.runtime
}()
let contractURL = runtimePaths.fileURL
let aclFileURL = runtimePaths.aclFileURL
let pidFileURL = runtimePaths.pidFileURL
let runtimeStatusFileURL = runtimePaths.runtimeStatusFileURL
let supervisionURL = runtimePaths.supervisionFileURL
let failureURL = runtimePaths.failureFileURL
let childPIDURL = runtimePaths.childPIDFileURL
let agentLogURL: URL = {
if let path = environment["SSXNG_LOG_PATH"] { return URL(fileURLWithPath: path) }
if environment["SSXNG_CONTRACT_PATH"] != nil || environment["SSXNG_RUNTIME_DIR"] != nil {
return runtimePaths.directoryURL.appendingPathComponent("agent.log")
}
return ApplicationSupportPaths.current.agentLogURL
}()
let sslocalURL: URL =
environment["SSXNG_SSLOCAL_PATH"].map { URL(fileURLWithPath: $0) }
?? Bundle.main.bundleURL.appendingPathComponent("Contents/Helpers/sslocal")