@@ -6,12 +6,17 @@ class Xcode
6
6
attr_reader :version , :intended_path , :download_url
7
7
8
8
def initialize ( semantic_version , intended_path , download_url = '' )
9
- @semantic_version = semantic_version
9
+ @semantic_version = normalize_version ( semantic_version )
10
10
@intended_path = intended_path
11
11
@download_url = download_url
12
12
@version = -> { determine_version }
13
13
end
14
14
15
+ def normalize_version ( version )
16
+ # Convert underscores to dots for Gem::Dependency compatibility
17
+ version . to_s . gsub ( '_' , '.' )
18
+ end
19
+
15
20
def determine_version
16
21
if @download_url . empty?
17
22
latest_xcode_revision ( Xcode ::Version . new ( @semantic_version ) )
@@ -67,7 +72,15 @@ def minimum_required_os
67
72
return '>= 10.15.4' if Gem ::Dependency . new ( 'Xcode' , '>= 12.0' , '<= 12.4' ) . match? ( 'Xcode' , @semantic_version )
68
73
return '>= 11.0' if Gem ::Dependency . new ( 'Xcode' , '>= 12.5' , '<= 12.5.1' ) . match? ( 'Xcode' , @semantic_version )
69
74
return '>= 11.3' if Gem ::Dependency . new ( 'Xcode' , '>= 13.0' , '<= 13.2.1' ) . match? ( 'Xcode' , @semantic_version )
70
- return '>= 12.0' if Gem ::Dependency . new ( 'Xcode' , '>= 13.3' ) . match? ( 'Xcode' , @semantic_version )
75
+ return '>= 12.0' if Gem ::Dependency . new ( 'Xcode' , '>= 13.3' , '<= 13.4.1' ) . match? ( 'Xcode' , @semantic_version )
76
+ return '>= 12.5' if Gem ::Dependency . new ( 'Xcode' , '>= 14.0' , '<= 14.2' ) . match? ( 'Xcode' , @semantic_version )
77
+ return '>= 13.0' if Gem ::Dependency . new ( 'Xcode' , '>= 14.3' , '<= 14.3.1' ) . match? ( 'Xcode' , @semantic_version )
78
+ return '>= 13.5' if Gem ::Dependency . new ( 'Xcode' , '>= 15.0' , '<= 15.2' ) . match? ( 'Xcode' , @semantic_version )
79
+ return '>= 14.0' if Gem ::Dependency . new ( 'Xcode' , '>= 15.3' , '<= 15.4' ) . match? ( 'Xcode' , @semantic_version )
80
+ return '>= 14.5' if Gem ::Dependency . new ( 'Xcode' , '>= 16.0' , '<= 16.2' ) . match? ( 'Xcode' , @semantic_version )
81
+ return '>= 15.2' if Gem ::Dependency . new ( 'Xcode' , '== 16.3' ) . match? ( 'Xcode' , @semantic_version )
82
+ return '>= 15.3' if Gem ::Dependency . new ( 'Xcode' , '== 16.4' ) . match? ( 'Xcode' , @semantic_version )
83
+ return '>= 15.5' if Gem ::Dependency . new ( 'Xcode' , '~> 26.beta' ) . match? ( 'Xcode' , @semantic_version )
71
84
end
72
85
73
86
class Simulator
0 commit comments