Stop version lookup at root
This commit is contained in:
parent
f50f70dc41
commit
f41a831778
1 changed files with 20 additions and 6 deletions
|
|
@ -8172,7 +8172,7 @@ struct CMUXCLI {
|
|||
}
|
||||
|
||||
let fileManager = FileManager.default
|
||||
var current = executableURL.deletingLastPathComponent()
|
||||
var current = executableURL.deletingLastPathComponent().standardizedFileURL
|
||||
|
||||
while true {
|
||||
let projectFile = current.appendingPathComponent("GhosttyTabs.xcodeproj/project.pbxproj")
|
||||
|
|
@ -8193,8 +8193,7 @@ struct CMUXCLI {
|
|||
}
|
||||
}
|
||||
|
||||
let parent = current.deletingLastPathComponent()
|
||||
if parent.path == current.path {
|
||||
guard let parent = parentSearchURL(for: current) else {
|
||||
break
|
||||
}
|
||||
current = parent
|
||||
|
|
@ -8263,6 +8262,22 @@ struct CMUXCLI {
|
|||
return String(normalized.prefix(12))
|
||||
}
|
||||
|
||||
// Foundation can walk past "/" into "/.." when repeatedly deleting path
|
||||
// components, so stop once the canonical root is reached.
|
||||
private func parentSearchURL(for url: URL) -> URL? {
|
||||
let standardized = url.standardizedFileURL
|
||||
let path = standardized.path
|
||||
guard !path.isEmpty, path != "/" else {
|
||||
return nil
|
||||
}
|
||||
|
||||
let parent = standardized.deletingLastPathComponent().standardizedFileURL
|
||||
guard parent.path != path else {
|
||||
return nil
|
||||
}
|
||||
return parent
|
||||
}
|
||||
|
||||
private func candidateInfoPlistURLs() -> [URL] {
|
||||
guard let executableURL = resolvedExecutableURL() else {
|
||||
return []
|
||||
|
|
@ -8280,7 +8295,7 @@ struct CMUXCLI {
|
|||
candidates.append(url)
|
||||
}
|
||||
|
||||
var current = executableURL.deletingLastPathComponent()
|
||||
var current = executableURL.deletingLastPathComponent().standardizedFileURL
|
||||
while true {
|
||||
if current.pathExtension == "app" {
|
||||
appendIfExisting(current.appendingPathComponent("Contents/Info.plist"))
|
||||
|
|
@ -8299,8 +8314,7 @@ struct CMUXCLI {
|
|||
break
|
||||
}
|
||||
|
||||
let parent = current.deletingLastPathComponent()
|
||||
if parent.path == current.path {
|
||||
guard let parent = parentSearchURL(for: current) else {
|
||||
break
|
||||
}
|
||||
current = parent
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue