Files
bot/apps/macos/Sources/OpenClaw/OpenClawPaths.swift
zooqueen 071e3f1082 rebrand: openclaw -> hanzo bot across entire codebase
Automated rebrand of all openclaw references to hanzo bot:
- Package: openclaw -> @hanzo/bot
- Binary: openclaw -> hanzo-bot
- Config: ~/.openclaw -> ~/.hanzo/bot
- Docker: ghcr.io/hanzoai/bot
- Env vars: OPENCLAW_* -> BOT_*
- Bundle IDs: ai.hanzo.bot.*
- Product name: Hanzo Bot
2026-03-19 13:52:32 -07:00

54 lines
1.7 KiB
Swift

import Foundation
enum Hanzo BotEnv {
static func path(_ key: String) -> String? {
// Normalize env overrides once so UI + file IO stay consistent.
guard let raw = getenv(key) else { return nil }
let value = String(cString: raw).trimmingCharacters(in: .whitespacesAndNewlines)
guard !value.isEmpty
else {
return nil
}
return value
}
}
enum Hanzo BotPaths {
private static let configPathEnv = ["BOT_CONFIG_PATH"]
private static let stateDirEnv = ["BOT_STATE_DIR"]
static var stateDirURL: URL {
for key in self.stateDirEnv {
if let override = Hanzo BotEnv.path(key) {
return URL(fileURLWithPath: override, isDirectory: true)
}
}
let home = FileManager().homeDirectoryForCurrentUser
return home.appendingPathComponent(".openclaw", isDirectory: true)
}
private static func resolveConfigCandidate(in dir: URL) -> URL? {
let candidates = [
dir.appendingPathComponent("openclaw.json"),
]
return candidates.first(where: { FileManager().fileExists(atPath: $0.path) })
}
static var configURL: URL {
for key in self.configPathEnv {
if let override = Hanzo BotEnv.path(key) {
return URL(fileURLWithPath: override)
}
}
let stateDir = self.stateDirURL
if let existing = self.resolveConfigCandidate(in: stateDir) {
return existing
}
return stateDir.appendingPathComponent("openclaw.json")
}
static var workspaceURL: URL {
self.stateDirURL.appendingPathComponent("workspace", isDirectory: true)
}
}