import Path import Foundation extension Path { static let defaultXcodesApplicationSupport = Path.applicationSupport/"com.robotsandpencils.XcodesApp" static var xcodesApplicationSupport: Path { guard let savedApplicationSupport = Current.defaults.string(forKey: "localPath") else { return defaultXcodesApplicationSupport } guard let path = Path(savedApplicationSupport) else { return defaultXcodesApplicationSupport } return path } static var cacheFile: Path { return xcodesApplicationSupport/"available-xcodes.json" } static let defaultInstallDirectory = Path.root/"Applications" static var installDirectory: Path { guard let savedInstallDirectory = Current.defaults.string(forKey: "installPath") else { return defaultInstallDirectory } guard let path = Path(savedInstallDirectory) else { return defaultInstallDirectory } return path } static var runtimeCacheFile: Path { return xcodesApplicationSupport/"downloadable-runtimes.json" } static var xcodesCaches: Path { return caches/"com.xcodesorg.xcodesapp" } @discardableResult func setCurrentUserAsOwner() -> Path { let user = ProcessInfo.processInfo.environment["SUDO_USER"] ?? NSUserName() try? FileManager.default.setAttributes([.ownerAccountName: user], ofItemAtPath: string) return self } }