99
1010require_relative 'Vendor/xctoolchain/Scripts/xctask/build_task'
1111
12- script_folder = File . expand_path ( File . dirname ( __FILE__ ) )
13- build_folder = File . join ( script_folder , 'build' )
14- starters_folder = File . join ( script_folder , 'ParseStarterProject' )
12+ SCRIPT_PATH = File . expand_path ( File . dirname ( __FILE__ ) )
13+ starters_path = File . join ( SCRIPT_PATH , 'ParseStarterProject' )
1514
1615ios_simulator = 'platform="iOS Simulator",name="iPhone 14"'
1716tvos_simulator = 'platform="tvOS Simulator",name="Apple TV"'
1817watchos_simulator = 'platform="watchOS Simulator",name="Apple Watch Series 8 (45mm)"'
1918
2019build_action = [ XCTask ::BuildAction ::CLEAN , XCTask ::BuildAction ::BUILD ] ;
2120
21+ module Constants
22+ require 'plist'
23+
24+ PARSE_CONSTANT_PATH = File . join ( SCRIPT_PATH , 'Parse' , 'Parse' , 'Source/PFConstants.h' )
25+ PLISTS = [
26+ File . join ( SCRIPT_PATH , 'Parse' , 'Parse' , 'Resources' , 'Parse-iOS.Info.plist' ) ,
27+ File . join ( SCRIPT_PATH , 'Parse' , 'Parse' , 'Resources' , 'Parse-OSX.Info.plist' ) ,
28+ File . join ( SCRIPT_PATH , 'Parse' , 'Parse' , 'Resources' , 'Parse-watchOS.Info.plist' ) ,
29+ File . join ( SCRIPT_PATH , 'Parse' , 'Parse' , 'Resources' , 'Parse-tvOS.Info.plist' ) ,
30+ File . join ( SCRIPT_PATH , 'ParseUI' , 'ParseUI' , 'Resources' , 'Info-iOS.plist' ) ,
31+ File . join ( SCRIPT_PATH , 'ParseLiveQuery' , 'ParseLiveQuery' , 'Resources' , 'Info.plist' ) ,
32+ File . join ( SCRIPT_PATH , 'ParseLiveQuery' , 'ParseLiveQuery-tvOS' , 'Info.plist' ) ,
33+ File . join ( SCRIPT_PATH , 'ParseLiveQuery' , 'ParseLiveQuery-watchOS' , 'Info.plist' ) ,
34+ File . join ( SCRIPT_PATH , 'ParseStarterProject' , 'iOS' , 'ParseStarterProject' , 'Resources' , 'Info.plist' ) ,
35+ File . join ( SCRIPT_PATH , 'ParseStarterProject' , 'iOS' , 'ParseStarterProject-Swift' , 'Resources' , 'Info.plist' ) ,
36+ File . join ( SCRIPT_PATH , 'ParseStarterProject' , 'OSX' , 'ParseOSXStarterProject' , 'Resources' , 'Info.plist' ) ,
37+ File . join ( SCRIPT_PATH , 'ParseStarterProject' , 'OSX' , 'ParseOSXStarterProject-Swift' , 'Resources' , 'Info.plist' ) ,
38+ File . join ( SCRIPT_PATH , 'ParseStarterProject' , 'tvOS' , 'ParseStarterProject-Swift' , 'ParseStarter' , 'Info.plist' ) ,
39+ File . join ( SCRIPT_PATH , 'ParseStarterProject' , 'watchOS' , 'ParseStarterProject-Swift' , 'ParseStarter' , 'Info.plist' ) ,
40+ File . join ( SCRIPT_PATH , 'ParseStarterProject' , 'watchOS' , 'ParseStarterProject-Swift' , 'ParseStarter Extension' , 'Info.plist' ) ,
41+ File . join ( SCRIPT_PATH , 'ParseStarterProject' , 'watchOS' , 'ParseStarterProject-Swift' , 'Resources' , 'Info.plist' ) ,
42+ ]
43+
44+ def self . current_version
45+ constants_file = File . open ( PARSE_CONSTANT_PATH , 'r' ) . read
46+ matches = constants_file . match ( /(.*PARSE_VERSION\s *@")(.*)(")/ )
47+ matches [ 2 ] # Return the second match, which is the version itself
48+ end
49+
50+ def self . update_version ( version )
51+ constants_file = File . open ( PARSE_CONSTANT_PATH , 'r+' )
52+ constants = constants_file . read
53+ constants . gsub! ( /(.*PARSE_VERSION\s *@")(.*)(")/ , "\\ 1#{ version } \\ 3" )
54+
55+ constants_file . seek ( 0 )
56+ constants_file . write ( constants )
57+
58+ PLISTS . each do |plist |
59+ update_info_plist_version ( plist , version )
60+ end
61+ end
62+
63+ def self . update_info_plist_version ( plist_path , version )
64+ info_plist = Plist . parse_xml ( plist_path )
65+ info_plist [ 'CFBundleShortVersionString' ] = version
66+ info_plist [ 'CFBundleVersion' ] = version
67+ File . open ( plist_path , 'w' ) { |f | f . write ( info_plist . to_plist ) }
68+ end
69+ end
70+
71+ namespace :package do
72+ task :set_version , [ :version ] do |_ , args |
73+ version = args [ :version ] || Constants . current_version
74+ Constants . update_version ( version )
75+ end
76+ end
77+
2278namespace :build do
2379 namespace :ios_starters do
2480 task :all do
@@ -28,9 +84,9 @@ namespace :build do
2884
2985 task :objc do
3086 project = 'ParseStarterProject'
31- ios_starters_folder = File . join ( starters_folder , 'iOS' , project )
87+ ios_starters_path = File . join ( starters_path , 'iOS' , project )
3288 task = XCTask ::BuildTask . new do |t |
33- t . directory = ios_starters_folder
89+ t . directory = ios_starters_path
3490 t . project = "#{ project } .xcodeproj"
3591 t . scheme = project
3692 t . configuration = 'Debug'
@@ -47,9 +103,9 @@ namespace :build do
47103
48104 task :swift do
49105 project = 'ParseStarterProject-Swift'
50- ios_starters_folder = File . join ( starters_folder , 'iOS' , project )
106+ ios_starters_path = File . join ( starters_path , 'iOS' , project )
51107 task = XCTask ::BuildTask . new do |t |
52- t . directory = ios_starters_folder
108+ t . directory = ios_starters_path
53109 t . project = "#{ project } .xcodeproj"
54110 t . scheme = project
55111 t . configuration = 'Debug'
@@ -72,7 +128,7 @@ namespace :build do
72128 end
73129
74130 task :objc do
75- macos_starter_folder = File . join ( starters_folder , 'OSX' , 'ParseOSXStarterProject' )
131+ macos_starter_folder = File . join ( starters_path , 'OSX' , 'ParseOSXStarterProject' )
76132 task = XCTask ::BuildTask . new do |t |
77133 t . directory = macos_starter_folder
78134 t . project = 'ParseOSXStarterProject.xcodeproj'
@@ -89,7 +145,7 @@ namespace :build do
89145 end
90146
91147 task :swift do
92- macos_starter_folder = File . join ( starters_folder , 'OSX' , 'ParseOSXStarterProject-Swift' )
148+ macos_starter_folder = File . join ( starters_path , 'OSX' , 'ParseOSXStarterProject-Swift' )
93149 task = XCTask ::BuildTask . new do |t |
94150 t . directory = macos_starter_folder
95151 t . project = 'ParseOSXStarterProject-Swift.xcodeproj'
@@ -114,7 +170,7 @@ namespace :build do
114170 end
115171
116172 task :swift do
117- tvos_starter_folder = File . join ( starters_folder , 'tvOS' , 'ParseStarterProject-Swift' )
173+ tvos_starter_folder = File . join ( starters_path , 'tvOS' , 'ParseStarterProject-Swift' )
118174 task = XCTask ::BuildTask . new do |t |
119175 t . directory = tvos_starter_folder
120176 t . project = 'ParseStarter-Swift.xcodeproj'
@@ -139,7 +195,7 @@ namespace :build do
139195 end
140196
141197 task :swift do
142- watchos_starter_folder = File . join ( starters_folder , 'watchOS' , 'ParseStarterProject-Swift' )
198+ watchos_starter_folder = File . join ( starters_path , 'watchOS' , 'ParseStarterProject-Swift' )
143199 task = XCTask ::BuildTask . new do |t |
144200 t . directory = watchos_starter_folder
145201 t . project = 'ParseStarter-Swift.xcodeproj'
@@ -169,7 +225,7 @@ namespace :test do
169225 desc 'Run iOS Tests'
170226 task :ios do |_ , args |
171227 task = XCTask ::BuildTask . new do |t |
172- t . directory = script_folder
228+ t . directory = SCRIPT_PATH
173229 t . workspace = 'Parse.xcworkspace'
174230 t . scheme = 'Parse-iOS'
175231 t . sdk = 'iphonesimulator'
@@ -187,7 +243,7 @@ namespace :test do
187243 desc 'Run macOS Tests'
188244 task :macos do |_ , args |
189245 task = XCTask ::BuildTask . new do |t |
190- t . directory = script_folder
246+ t . directory = SCRIPT_PATH
191247 t . workspace = 'Parse.xcworkspace'
192248 t . scheme = 'Parse-macOS'
193249 t . sdk = 'macosx'
@@ -210,7 +266,7 @@ namespace :test do
210266
211267 task :framework do
212268 task = XCTask ::BuildTask . new do |t |
213- t . directory = script_folder
269+ t . directory = SCRIPT_PATH
214270 t . workspace = 'Parse.xcworkspace'
215271 t . scheme = 'ParseUI'
216272 t . sdk = 'iphonesimulator'
@@ -227,7 +283,7 @@ namespace :test do
227283
228284 task :demo_objc do
229285 task = XCTask ::BuildTask . new do |t |
230- t . directory = script_folder
286+ t . directory = SCRIPT_PATH
231287 t . workspace = 'Parse.xcworkspace'
232288 t . scheme = 'ParseUIDemo'
233289 t . sdk = 'iphonesimulator'
@@ -244,7 +300,7 @@ namespace :test do
244300
245301 task :demo_swift do
246302 task = XCTask ::BuildTask . new do |t |
247- t . directory = script_folder
303+ t . directory = SCRIPT_PATH
248304 t . workspace = 'Parse.xcworkspace'
249305 t . scheme = 'ParseUIDemo-Swift'
250306 t . sdk = 'iphonesimulator'
@@ -270,7 +326,7 @@ namespace :test do
270326
271327 task :ios do
272328 task = XCTask ::BuildTask . new do |t |
273- t . directory = script_folder
329+ t . directory = SCRIPT_PATH
274330 t . workspace = 'Parse.xcworkspace'
275331 t . scheme = 'ParseLiveQuery-iOS'
276332 t . sdk = 'iphonesimulator'
@@ -287,7 +343,7 @@ namespace :test do
287343
288344 task :tvos do
289345 task = XCTask ::BuildTask . new do |t |
290- t . directory = script_folder
346+ t . directory = SCRIPT_PATH
291347 t . workspace = 'Parse.xcworkspace'
292348 t . scheme = 'ParseLiveQuery-tvOS'
293349 t . destinations = [ tvos_simulator ]
@@ -303,7 +359,7 @@ namespace :test do
303359
304360 task :watchos do
305361 task = XCTask ::BuildTask . new do |t |
306- t . directory = script_folder
362+ t . directory = SCRIPT_PATH
307363 t . workspace = 'Parse.xcworkspace'
308364 t . scheme = 'ParseLiveQuery-watchOS'
309365 t . destinations = [ watchos_simulator ]
@@ -319,7 +375,7 @@ namespace :test do
319375
320376 task :osx do
321377 task = XCTask ::BuildTask . new do |t |
322- t . directory = script_folder
378+ t . directory = SCRIPT_PATH
323379 t . workspace = 'Parse.xcworkspace'
324380 t . scheme = 'ParseLiveQuery-OSX'
325381 t . configuration = 'Debug'
0 commit comments