9
9
10
10
require_relative 'Vendor/xctoolchain/Scripts/xctask/build_task'
11
11
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' )
15
14
16
15
ios_simulator = 'platform="iOS Simulator",name="iPhone 14"'
17
16
tvos_simulator = 'platform="tvOS Simulator",name="Apple TV"'
18
17
watchos_simulator = 'platform="watchOS Simulator",name="Apple Watch Series 8 (45mm)"'
19
18
20
19
build_action = [ XCTask ::BuildAction ::CLEAN , XCTask ::BuildAction ::BUILD ] ;
21
20
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
+
22
78
namespace :build do
23
79
namespace :ios_starters do
24
80
task :all do
@@ -28,9 +84,9 @@ namespace :build do
28
84
29
85
task :objc do
30
86
project = 'ParseStarterProject'
31
- ios_starters_folder = File . join ( starters_folder , 'iOS' , project )
87
+ ios_starters_path = File . join ( starters_path , 'iOS' , project )
32
88
task = XCTask ::BuildTask . new do |t |
33
- t . directory = ios_starters_folder
89
+ t . directory = ios_starters_path
34
90
t . project = "#{ project } .xcodeproj"
35
91
t . scheme = project
36
92
t . configuration = 'Debug'
@@ -47,9 +103,9 @@ namespace :build do
47
103
48
104
task :swift do
49
105
project = 'ParseStarterProject-Swift'
50
- ios_starters_folder = File . join ( starters_folder , 'iOS' , project )
106
+ ios_starters_path = File . join ( starters_path , 'iOS' , project )
51
107
task = XCTask ::BuildTask . new do |t |
52
- t . directory = ios_starters_folder
108
+ t . directory = ios_starters_path
53
109
t . project = "#{ project } .xcodeproj"
54
110
t . scheme = project
55
111
t . configuration = 'Debug'
@@ -72,7 +128,7 @@ namespace :build do
72
128
end
73
129
74
130
task :objc do
75
- macos_starter_folder = File . join ( starters_folder , 'OSX' , 'ParseOSXStarterProject' )
131
+ macos_starter_folder = File . join ( starters_path , 'OSX' , 'ParseOSXStarterProject' )
76
132
task = XCTask ::BuildTask . new do |t |
77
133
t . directory = macos_starter_folder
78
134
t . project = 'ParseOSXStarterProject.xcodeproj'
@@ -89,7 +145,7 @@ namespace :build do
89
145
end
90
146
91
147
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' )
93
149
task = XCTask ::BuildTask . new do |t |
94
150
t . directory = macos_starter_folder
95
151
t . project = 'ParseOSXStarterProject-Swift.xcodeproj'
@@ -114,7 +170,7 @@ namespace :build do
114
170
end
115
171
116
172
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' )
118
174
task = XCTask ::BuildTask . new do |t |
119
175
t . directory = tvos_starter_folder
120
176
t . project = 'ParseStarter-Swift.xcodeproj'
@@ -139,7 +195,7 @@ namespace :build do
139
195
end
140
196
141
197
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' )
143
199
task = XCTask ::BuildTask . new do |t |
144
200
t . directory = watchos_starter_folder
145
201
t . project = 'ParseStarter-Swift.xcodeproj'
@@ -169,7 +225,7 @@ namespace :test do
169
225
desc 'Run iOS Tests'
170
226
task :ios do |_ , args |
171
227
task = XCTask ::BuildTask . new do |t |
172
- t . directory = script_folder
228
+ t . directory = SCRIPT_PATH
173
229
t . workspace = 'Parse.xcworkspace'
174
230
t . scheme = 'Parse-iOS'
175
231
t . sdk = 'iphonesimulator'
@@ -187,7 +243,7 @@ namespace :test do
187
243
desc 'Run macOS Tests'
188
244
task :macos do |_ , args |
189
245
task = XCTask ::BuildTask . new do |t |
190
- t . directory = script_folder
246
+ t . directory = SCRIPT_PATH
191
247
t . workspace = 'Parse.xcworkspace'
192
248
t . scheme = 'Parse-macOS'
193
249
t . sdk = 'macosx'
@@ -210,7 +266,7 @@ namespace :test do
210
266
211
267
task :framework do
212
268
task = XCTask ::BuildTask . new do |t |
213
- t . directory = script_folder
269
+ t . directory = SCRIPT_PATH
214
270
t . workspace = 'Parse.xcworkspace'
215
271
t . scheme = 'ParseUI'
216
272
t . sdk = 'iphonesimulator'
@@ -227,7 +283,7 @@ namespace :test do
227
283
228
284
task :demo_objc do
229
285
task = XCTask ::BuildTask . new do |t |
230
- t . directory = script_folder
286
+ t . directory = SCRIPT_PATH
231
287
t . workspace = 'Parse.xcworkspace'
232
288
t . scheme = 'ParseUIDemo'
233
289
t . sdk = 'iphonesimulator'
@@ -244,7 +300,7 @@ namespace :test do
244
300
245
301
task :demo_swift do
246
302
task = XCTask ::BuildTask . new do |t |
247
- t . directory = script_folder
303
+ t . directory = SCRIPT_PATH
248
304
t . workspace = 'Parse.xcworkspace'
249
305
t . scheme = 'ParseUIDemo-Swift'
250
306
t . sdk = 'iphonesimulator'
@@ -270,7 +326,7 @@ namespace :test do
270
326
271
327
task :ios do
272
328
task = XCTask ::BuildTask . new do |t |
273
- t . directory = script_folder
329
+ t . directory = SCRIPT_PATH
274
330
t . workspace = 'Parse.xcworkspace'
275
331
t . scheme = 'ParseLiveQuery-iOS'
276
332
t . sdk = 'iphonesimulator'
@@ -287,7 +343,7 @@ namespace :test do
287
343
288
344
task :tvos do
289
345
task = XCTask ::BuildTask . new do |t |
290
- t . directory = script_folder
346
+ t . directory = SCRIPT_PATH
291
347
t . workspace = 'Parse.xcworkspace'
292
348
t . scheme = 'ParseLiveQuery-tvOS'
293
349
t . destinations = [ tvos_simulator ]
@@ -303,7 +359,7 @@ namespace :test do
303
359
304
360
task :watchos do
305
361
task = XCTask ::BuildTask . new do |t |
306
- t . directory = script_folder
362
+ t . directory = SCRIPT_PATH
307
363
t . workspace = 'Parse.xcworkspace'
308
364
t . scheme = 'ParseLiveQuery-watchOS'
309
365
t . destinations = [ watchos_simulator ]
@@ -319,7 +375,7 @@ namespace :test do
319
375
320
376
task :osx do
321
377
task = XCTask ::BuildTask . new do |t |
322
- t . directory = script_folder
378
+ t . directory = SCRIPT_PATH
323
379
t . workspace = 'Parse.xcworkspace'
324
380
t . scheme = 'ParseLiveQuery-OSX'
325
381
t . configuration = 'Debug'
0 commit comments