Skip to content

Commit 872337a

Browse files
authored
ci: Fix release workflow (#1782)
1 parent f1311ee commit 872337a

File tree

3 files changed

+88
-39
lines changed

3 files changed

+88
-39
lines changed

Gemfile

+1
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ gem 'jazzy', '~> 0.14.4'
66
# Development
77
gem 'xcpretty'
88
gem 'rake'
9+
gem 'plist'

Gemfile.lock

+11-19
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,25 @@ GEM
33
specs:
44
CFPropertyList (3.0.6)
55
rexml
6-
activesupport (7.1.0)
7-
base64
8-
bigdecimal
6+
activesupport (6.1.7.7)
97
concurrent-ruby (~> 1.0, >= 1.0.2)
10-
connection_pool (>= 2.2.5)
11-
drb
128
i18n (>= 1.6, < 2)
139
minitest (>= 5.1)
14-
mutex_m
1510
tzinfo (~> 2.0)
11+
zeitwerk (~> 2.3)
1612
addressable (2.8.5)
1713
public_suffix (>= 2.0.2, < 6.0)
1814
algoliasearch (1.27.5)
1915
httpclient (~> 2.8, >= 2.8.3)
2016
json (>= 1.5.1)
2117
atomos (0.1.3)
22-
base64 (0.1.1)
23-
bigdecimal (3.1.4)
2418
claide (1.1.0)
25-
cocoapods (1.13.0)
19+
cocoapods (1.15.2)
2620
addressable (~> 2.8)
2721
claide (>= 1.0.2, < 2.0)
28-
cocoapods-core (= 1.13.0)
22+
cocoapods-core (= 1.15.2)
2923
cocoapods-deintegrate (>= 1.0.3, < 2.0)
30-
cocoapods-downloader (>= 1.6.0, < 2.0)
24+
cocoapods-downloader (>= 2.1, < 3.0)
3125
cocoapods-plugins (>= 1.0.0, < 2.0)
3226
cocoapods-search (>= 1.0.0, < 2.0)
3327
cocoapods-trunk (>= 1.6.0, < 2.0)
@@ -40,7 +34,7 @@ GEM
4034
nap (~> 1.0)
4135
ruby-macho (>= 2.3.0, < 3.0)
4236
xcodeproj (>= 1.23.0, < 2.0)
43-
cocoapods-core (1.13.0)
37+
cocoapods-core (1.15.2)
4438
activesupport (>= 5.0, < 8)
4539
addressable (~> 2.8)
4640
algoliasearch (~> 1.0)
@@ -51,7 +45,7 @@ GEM
5145
public_suffix (~> 4.0)
5246
typhoeus (~> 1.0)
5347
cocoapods-deintegrate (1.0.5)
54-
cocoapods-downloader (1.6.3)
48+
cocoapods-downloader (2.1)
5549
cocoapods-plugins (1.0.0)
5650
nap
5751
cocoapods-search (1.0.1)
@@ -61,9 +55,6 @@ GEM
6155
cocoapods-try (1.2.0)
6256
colored2 (3.1.2)
6357
concurrent-ruby (1.2.2)
64-
connection_pool (2.4.1)
65-
drb (2.1.1)
66-
ruby2_keywords
6758
escape (0.0.4)
6859
ethon (0.16.0)
6960
ffi (>= 1.15.0)
@@ -90,18 +81,17 @@ GEM
9081
minitest (5.20.0)
9182
molinillo (0.8.0)
9283
mustache (1.1.1)
93-
mutex_m (0.1.2)
9484
nanaimo (0.3.0)
9585
nap (1.1.0)
9686
netrc (0.11.0)
9787
open4 (1.3.4)
88+
plist (3.7.1)
9889
public_suffix (4.0.7)
9990
rake (13.0.6)
10091
redcarpet (3.6.0)
10192
rexml (3.2.6)
10293
rouge (2.0.7)
10394
ruby-macho (2.5.1)
104-
ruby2_keywords (0.0.5)
10595
sassc (2.4.0)
10696
ffi (~> 1.9)
10797
sqlite3 (1.6.6)
@@ -121,14 +111,16 @@ GEM
121111
rexml (~> 3.2.4)
122112
xcpretty (0.3.0)
123113
rouge (~> 2.0.7)
114+
zeitwerk (2.6.13)
124115

125116
PLATFORMS
126117
ruby
127118

128119
DEPENDENCIES
129120
jazzy (~> 0.14.4)
121+
plist
130122
rake
131123
xcpretty
132124

133125
BUNDLED WITH
134-
2.1.4
126+
2.4.22

Rakefile

+76-20
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,72 @@
99

1010
require_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

1615
ios_simulator = 'platform="iOS Simulator",name="iPhone 14"'
1716
tvos_simulator = 'platform="tvOS Simulator",name="Apple TV"'
1817
watchos_simulator = 'platform="watchOS Simulator",name="Apple Watch Series 8 (45mm)"'
1918

2019
build_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+
2278
namespace :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

Comments
 (0)