@@ -24,6 +24,13 @@ public func selectXcode(shouldPrint: Bool, pathOrVersion: String, directory: Pat
24
24
25
25
let versionToSelect = pathOrVersion. isEmpty ? Version . fromXcodeVersionFile ( ) : Version ( xcodeVersion: pathOrVersion)
26
26
let installedXcodes = Current . files. installedXcodes ( directory)
27
+
28
+ if installedXcodes. isEmpty {
29
+ Current . logging. log ( " No Xcode version installed. Please run 'xcodes install' and try again " . red)
30
+ Current . shell. exit ( 1 )
31
+ return Promise ( error: XcodeSelectError . noInstalledXcodes)
32
+ }
33
+
27
34
if let version = versionToSelect,
28
35
let installedXcode = installedXcodes. first ( withVersion: version) {
29
36
let selectedInstalledXcodeVersion = installedXcodes. first { output. out. hasPrefix ( $0. path. string) } . map { $0. version }
@@ -153,13 +160,16 @@ public func selectXcodeAtPath(_ pathString: String) -> Promise<ProcessOutput> {
153
160
public enum XcodeSelectError : LocalizedError {
154
161
case invalidPath( String )
155
162
case invalidIndex( min: Int , max: Int , given: String ? )
163
+ case noInstalledXcodes
156
164
157
165
public var errorDescription : String ? {
158
166
switch self {
159
167
case . invalidPath( let pathString) :
160
- return " Not a valid Xcode path: \( pathString) "
168
+ " Not a valid Xcode path: \( pathString) "
161
169
case . invalidIndex( let min, let max, let given) :
162
- return " Not a valid number. Expecting a whole number between \( min) - \( max) , but given \( given ?? " nothing " ) . "
170
+ " Not a valid number. Expecting a whole number between \( min) - \( max) , but given \( given ?? " nothing " ) . "
171
+ case . noInstalledXcodes:
172
+ " No Xcode version installed. Please run 'xcodes install' and try again. "
163
173
}
164
174
}
165
175
}
0 commit comments