fastlane 2.157.2 → 2.160.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +80 -80
- data/deliver/lib/deliver/options.rb +17 -1
- data/deliver/lib/deliver/runner.rb +36 -6
- data/deliver/lib/deliver/upload_metadata.rb +36 -6
- data/deliver/lib/deliver/upload_price_tier.rb +7 -2
- data/fastlane/lib/fastlane/actions/app_store_build_number.rb +12 -8
- data/fastlane/lib/fastlane/actions/clean_build_artifacts.rb +1 -0
- data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +1 -0
- data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +1 -1
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +116 -71
- data/fastlane/lib/fastlane/actions/set_changelog.rb +2 -1
- data/fastlane/lib/fastlane/helper/git_helper.rb +2 -0
- data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +6 -4
- data/fastlane/lib/fastlane/swift_fastlane_function.rb +1 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Actions.swift +2 -1
- data/fastlane/swift/Appfile.swift +2 -4
- data/fastlane/swift/ArgumentProcessor.swift +2 -6
- data/fastlane/swift/ControlCommand.swift +2 -5
- data/fastlane/swift/Deliverfile.swift +5 -2
- data/fastlane/swift/DeliverfileProtocol.swift +15 -4
- data/fastlane/swift/Fastfile.swift +5 -1
- data/fastlane/swift/Fastlane.swift +2279 -2237
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +5 -5
- data/fastlane/swift/Gymfile.swift +5 -2
- data/fastlane/swift/GymfileProtocol.swift +6 -3
- data/fastlane/swift/LaneFileProtocol.swift +36 -19
- data/fastlane/swift/MainProcess.swift +77 -0
- data/fastlane/swift/Matchfile.swift +5 -2
- data/fastlane/swift/MatchfileProtocol.swift +6 -3
- data/fastlane/swift/Plugins.swift +2 -1
- data/fastlane/swift/Precheckfile.swift +5 -2
- data/fastlane/swift/PrecheckfileProtocol.swift +18 -3
- data/fastlane/swift/RubyCommand.swift +2 -6
- data/fastlane/swift/RubyCommandable.swift +2 -6
- data/fastlane/swift/Runner.swift +5 -9
- data/fastlane/swift/RunnerArgument.swift +2 -6
- data/fastlane/swift/Scanfile.swift +5 -2
- data/fastlane/swift/ScanfileProtocol.swift +6 -3
- data/fastlane/swift/Screengrabfile.swift +5 -2
- data/fastlane/swift/ScreengrabfileProtocol.swift +6 -3
- data/fastlane/swift/Snapshotfile.swift +5 -2
- data/fastlane/swift/SnapshotfileProtocol.swift +6 -3
- data/fastlane/swift/SocketClient.swift +3 -7
- data/fastlane/swift/SocketClientDelegateProtocol.swift +2 -6
- data/fastlane/swift/SocketResponse.swift +2 -6
- data/fastlane/swift/formatting/Brewfile.lock.json +18 -10
- data/fastlane/swift/main.swift +4 -8
- data/fastlane/swift/upgrade_manifest.json +1 -1
- data/frameit/lib/frameit/editor.rb +1 -0
- data/match/lib/match/importer.rb +5 -2
- data/match/lib/match/spaceship_ensure.rb +5 -5
- data/pilot/lib/pilot/build_manager.rb +0 -3
- data/pilot/lib/pilot/manager.rb +1 -2
- data/pilot/lib/pilot/options.rb +2 -2
- data/precheck/lib/precheck/options.rb +25 -0
- data/precheck/lib/precheck/rule_processor.rb +94 -60
- data/precheck/lib/precheck/runner.rb +26 -5
- data/produce/lib/produce/itunes_connect.rb +2 -1
- data/sigh/lib/assets/resign.sh +9 -6
- data/sigh/lib/sigh/runner.rb +2 -1
- data/snapshot/lib/assets/SnapshotHelper.swift +17 -2
- data/spaceship/lib/spaceship/client.rb +1 -0
- data/spaceship/lib/spaceship/connect_api.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/client.rb +34 -7
- data/spaceship/lib/spaceship/connect_api/file_uploader.rb +2 -0
- data/spaceship/lib/spaceship/connect_api/models/.app_store_version_submission.rb.swp +0 -0
- data/spaceship/lib/spaceship/connect_api/models/app.rb +22 -14
- data/spaceship/lib/spaceship/connect_api/models/app_info.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/models/app_price_point.rb +26 -0
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +2 -2
- data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +10 -6
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_localization.rb +3 -5
- data/spaceship/lib/spaceship/connect_api/models/app_store_version_phased_release.rb +21 -0
- data/spaceship/lib/spaceship/connect_api/spaceship.rb +3 -2
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +50 -50
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +31 -6
- metadata +21 -18
@@ -23,6 +23,7 @@ module Fastlane
|
|
23
23
|
|
24
24
|
Actions.lane_context[Actions::SharedValues::SIGH_PROFILE_PATHS] = nil
|
25
25
|
Actions.lane_context[Actions::SharedValues::DSYM_PATHS] = nil
|
26
|
+
Actions.lane_context[Actions::SharedValues::DSYM_LATEST_UPLOADED_DATE] = nil
|
26
27
|
|
27
28
|
UI.success('Cleaned up build artifacts 🐙')
|
28
29
|
end
|
@@ -164,6 +164,7 @@ The `keyword` and `title` parameters are both used in `default` and `data`. They
|
|
164
164
|
| `color` | The font color for the text. Specify a hex/html color code. | `#000000` (black) |
|
165
165
|
| `font` | The font family for the text. Specify the (relative) path to the font file (e.g. an OpenType Font). | The default `imagemagick` font, which is system dependent. |
|
166
166
|
| `font_size` | The font size for the text specified in points. If not specified or `0`, font will be scaled automatically to fit the available space. _frameit_ still shrinks the text, if it would not fit. | NA |
|
167
|
+
| `font_weight` | The [font weight for the text](https://imagemagick.org/script/command-line-options.php#weight). Specify an integer value (e.g. 900). | NA |
|
167
168
|
| `text` | The text that should be used for the `keyword` or `title`. <p> Note: If you want to use localised text, use [`.strings` files](#strings-files). | NA |
|
168
169
|
|
169
170
|
### Example
|
@@ -32,7 +32,7 @@ For all commands, you can either use an [API Key](#app-store-connect-api-key) or
|
|
32
32
|
|
33
33
|
The App Store Connect API Key is the preferred authentication method (if you are able to use it).
|
34
34
|
|
35
|
-
- Uses
|
35
|
+
- Uses official App Store Connect API
|
36
36
|
- No need for 2FA
|
37
37
|
- Better performance over Apple ID
|
38
38
|
|
@@ -2,20 +2,24 @@ module Fastlane
|
|
2
2
|
module Actions
|
3
3
|
module SharedValues
|
4
4
|
DSYM_PATHS = :DSYM_PATHS
|
5
|
+
DSYM_LATEST_UPLOADED_DATE = :DSYM_LATEST_UPLOADED_DATE
|
5
6
|
end
|
6
7
|
class DownloadDsymsAction < Action
|
7
8
|
# rubocop:disable Metrics/PerceivedComplexity
|
8
9
|
def self.run(params)
|
10
|
+
require 'openssl'
|
9
11
|
require 'spaceship'
|
10
12
|
require 'net/http'
|
13
|
+
require 'date'
|
11
14
|
|
15
|
+
# Team selection passed though FASTLANE_ITC_TEAM_ID and FASTLANE_ITC_TEAM_NAME environment variables
|
16
|
+
# Prompts select team if multiple teams and none specified
|
12
17
|
UI.message("Login to App Store Connect (#{params[:username]})")
|
13
|
-
Spaceship::
|
14
|
-
Spaceship::Tunes.select_team
|
18
|
+
Spaceship::ConnectAPI.login(params[:username], use_portal: false, use_tunes: true)
|
15
19
|
UI.message("Login successful")
|
16
20
|
|
17
21
|
# Get App
|
18
|
-
app = Spaceship::
|
22
|
+
app = Spaceship::ConnectAPI::App.find(params[:app_identifier])
|
19
23
|
unless app
|
20
24
|
UI.user_error!("Could not find app with bundle identifier '#{params[:app_identifier]}' on account #{params[:username]}")
|
21
25
|
end
|
@@ -23,38 +27,36 @@ module Fastlane
|
|
23
27
|
# Process options
|
24
28
|
version = params[:version]
|
25
29
|
build_number = params[:build_number].to_s unless params[:build_number].nil?
|
26
|
-
|
30
|
+
itc_platform = params[:platform]
|
27
31
|
output_directory = params[:output_directory]
|
28
32
|
wait_for_dsym_processing = params[:wait_for_dsym_processing]
|
29
33
|
wait_timeout = params[:wait_timeout]
|
30
34
|
min_version = Gem::Version.new(params[:min_version]) if params[:min_version]
|
35
|
+
after_uploaded_date = DateTime.parse(params[:after_uploaded_date]) unless params[:after_uploaded_date].nil?
|
36
|
+
|
37
|
+
platform = Spaceship::ConnectAPI::Platform.map(itc_platform)
|
31
38
|
|
32
39
|
# Set version if it is latest
|
33
40
|
if version == 'latest'
|
34
41
|
# Try to grab the edit version first, else fallback to live version
|
35
42
|
UI.message("Looking for latest version...")
|
36
|
-
latest_version = app.
|
37
|
-
|
38
|
-
UI.user_error!("Could not find latest version for your app, please try setting a specific version") if latest_version.
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
else
|
45
|
-
# The build_version of a candidate build does not always match the one in latest_version so get the version and build number from the same place.
|
46
|
-
version = latest_candidate_build.train_version
|
47
|
-
build_number = latest_candidate_build.build_version
|
48
|
-
end
|
43
|
+
latest_version = app.get_edit_app_store_version(platform: platform) || app.get_live_app_store_version(platform: platform)
|
44
|
+
|
45
|
+
UI.user_error!("Could not find latest version for your app, please try setting a specific version") if latest_version.nil?
|
46
|
+
|
47
|
+
latest_build = get_latest_build!(app_id: app.id, version: latest_version.version_string, platform: platform)
|
48
|
+
|
49
|
+
version = latest_build.app_version
|
50
|
+
build_number = latest_build.version
|
49
51
|
elsif version == 'live'
|
50
52
|
UI.message("Looking for live version...")
|
51
|
-
live_version = app.
|
53
|
+
live_version = app.get_live_app_store_version(platform: platform)
|
52
54
|
|
53
55
|
UI.user_error!("Could not find live version for your app, please try setting 'latest' or a specific version") if live_version.nil?
|
54
56
|
|
55
57
|
# No need to search for candidates, because released App Store version should only have one build
|
56
|
-
version = live_version.
|
57
|
-
build_number = live_version.
|
58
|
+
version = live_version.version_string
|
59
|
+
build_number = live_version.build.version
|
58
60
|
end
|
59
61
|
|
60
62
|
# Remove leading zeros from version string (eg. 1.02 -> 1.2)
|
@@ -74,83 +76,118 @@ module Fastlane
|
|
74
76
|
message << "(#{build_number})" if build_number
|
75
77
|
UI.message(message.join(" "))
|
76
78
|
|
77
|
-
app
|
79
|
+
filter = { app: app.id }
|
80
|
+
filter["preReleaseVersion.platform"] = platform
|
81
|
+
build_resps = Spaceship::ConnectAPI.get_builds(filter: filter, sort: "-uploadedDate", includes: "preReleaseVersion").all_pages
|
82
|
+
builds = build_resps.flat_map(&:to_models)
|
83
|
+
|
84
|
+
builds.each do |build|
|
85
|
+
asc_app_version = build.app_version
|
86
|
+
asc_build_number = build.version
|
87
|
+
uploaded_date = DateTime.parse(build.uploaded_date)
|
88
|
+
|
78
89
|
message = []
|
79
|
-
message << "Found train (version): #{
|
90
|
+
message << "Found train (version): #{asc_app_version}"
|
80
91
|
message << ", comparing to supplied version: #{version}" if version
|
81
92
|
UI.verbose(message.join(" "))
|
82
93
|
|
83
|
-
if version && version !=
|
84
|
-
UI.verbose("Version #{version} doesn't match: #{
|
94
|
+
if version && version != asc_app_version
|
95
|
+
UI.verbose("Version #{version} doesn't match: #{asc_app_version}")
|
85
96
|
next
|
86
97
|
end
|
87
98
|
|
88
|
-
if min_version && min_version > Gem::Version.new(
|
89
|
-
UI.verbose("Min version #{min_version} not reached: #{
|
99
|
+
if min_version && min_version > Gem::Version.new(asc_app_version)
|
100
|
+
UI.verbose("Min version #{min_version} not reached: #{asc_app_version}")
|
90
101
|
next
|
91
102
|
end
|
92
103
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
UI.verbose(message.join(" "))
|
104
|
+
if after_uploaded_date && after_uploaded_date >= uploaded_date
|
105
|
+
UI.verbose("Upload date #{after_uploaded_date} not reached: #{uploaded_date}")
|
106
|
+
next
|
107
|
+
end
|
98
108
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
109
|
+
message = []
|
110
|
+
message << "Found build version: #{asc_build_number}"
|
111
|
+
message << ", comparing to supplied build_number: #{build_number}" if build_number
|
112
|
+
UI.verbose(message.join(" "))
|
103
113
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
loop do
|
110
|
-
begin
|
111
|
-
build_details = app.tunes_build_details(train: train.version_string, build_number: build.build_version, platform: platform)
|
112
|
-
download_url = build_details.dsym_url
|
113
|
-
UI.verbose("dsym_url: #{download_url}")
|
114
|
-
rescue Spaceship::TunesClient::ITunesConnectError => ex
|
115
|
-
UI.error("Error accessing dSYM file for build\n\n#{build}\n\nException: #{ex}")
|
116
|
-
end
|
117
|
-
|
118
|
-
unless download_url
|
119
|
-
if !wait_for_dsym_processing || (Time.now - start) > wait_timeout
|
120
|
-
# In some cases, AppStoreConnect does not process the dSYMs, thus no error should be thrown.
|
121
|
-
UI.message("Could not find any dSYM for #{build.build_version} (#{train.version_string})")
|
122
|
-
else
|
123
|
-
UI.message("Waiting for dSYM file to appear...")
|
124
|
-
sleep(30)
|
125
|
-
next
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
break
|
130
|
-
end
|
114
|
+
if build_number && asc_build_number != build_number
|
115
|
+
UI.verbose("build_version: #{asc_build_number} doesn't match: #{build_number}")
|
116
|
+
next
|
117
|
+
end
|
131
118
|
|
132
|
-
|
133
|
-
|
134
|
-
|
119
|
+
UI.verbose("Build_version: #{asc_build_number} matches #{build_number}, grabbing dsym_url") if build_number
|
120
|
+
get_details_and_download_dsym(app: app, train: asc_app_version, build_number: asc_build_number, uploaded_date: uploaded_date, platform: itc_platform, wait_for_dsym_processing: wait_for_dsym_processing, wait_timeout: wait_timeout, output_directory: output_directory)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
def self.get_details_and_download_dsym(app: nil, train: nil, build_number: nil, uploaded_date: nil, platform: nil, wait_for_dsym_processing: nil, wait_timeout: nil, output_directory: nil)
|
125
|
+
start = Time.now
|
126
|
+
download_url = nil
|
127
|
+
|
128
|
+
loop do
|
129
|
+
begin
|
130
|
+
resp = Spaceship::Tunes.client.build_details(app_id: app.id, train: train, build_number: build_number, platform: platform)
|
131
|
+
|
132
|
+
resp['apple_id'] = app.id
|
133
|
+
build_details = Spaceship::Tunes::BuildDetails.factory(resp)
|
134
|
+
|
135
|
+
download_url = build_details.dsym_url
|
136
|
+
UI.verbose("dsym_url: #{download_url}")
|
137
|
+
rescue Spaceship::TunesClient::ITunesConnectError => ex
|
138
|
+
UI.error("Error accessing dSYM file for build\n\n#{build}\n\nException: #{ex}")
|
139
|
+
end
|
140
|
+
|
141
|
+
unless download_url
|
142
|
+
if !wait_for_dsym_processing || (Time.now - start) > wait_timeout
|
143
|
+
# In some cases, AppStoreConnect does not process the dSYMs, thus no error should be thrown.
|
144
|
+
UI.message("Could not find any dSYM for #{build_number} (#{train})")
|
135
145
|
else
|
136
|
-
UI.message("
|
146
|
+
UI.message("Waiting for dSYM file to appear...")
|
147
|
+
sleep(30)
|
148
|
+
next
|
137
149
|
end
|
138
150
|
end
|
151
|
+
|
152
|
+
break
|
139
153
|
end
|
140
154
|
|
141
|
-
if
|
142
|
-
|
155
|
+
if download_url
|
156
|
+
self.download(download_url, app.bundle_id, train, build_number, uploaded_date, output_directory)
|
157
|
+
return if build_number
|
158
|
+
else
|
159
|
+
UI.message("No dSYM URL for #{build_number} (#{train})")
|
143
160
|
end
|
144
161
|
end
|
145
162
|
# rubocop:enable Metrics/PerceivedComplexity
|
146
163
|
|
147
|
-
def self.
|
164
|
+
def self.get_latest_build!(app_id: nil, version: nil, platform: nil)
|
165
|
+
filter = { app: app_id }
|
166
|
+
filter["preReleaseVersion.version"] = version
|
167
|
+
filter["preReleaseVersion.platform"] = platform
|
168
|
+
latest_build = Spaceship::ConnectAPI.get_builds(filter: filter, sort: "-uploadedDate", includes: "preReleaseVersion").first
|
169
|
+
|
170
|
+
if latest_build.nil?
|
171
|
+
UI.user_error!("Could not find latest build for version #{version}")
|
172
|
+
end
|
173
|
+
|
174
|
+
return latest_build
|
175
|
+
end
|
176
|
+
|
177
|
+
def self.download(download_url, bundle_id, train_number, build_version, uploaded_date, output_directory)
|
148
178
|
result = self.download_file(download_url)
|
149
179
|
path = write_dsym(result, bundle_id, train_number, build_version, output_directory)
|
150
180
|
UI.success("🔑 Successfully downloaded dSYM file for #{train_number} - #{build_version} to '#{path}'")
|
151
181
|
|
152
182
|
Actions.lane_context[SharedValues::DSYM_PATHS] ||= []
|
153
183
|
Actions.lane_context[SharedValues::DSYM_PATHS] << File.expand_path(path)
|
184
|
+
|
185
|
+
unless uploaded_date.nil?
|
186
|
+
Actions.lane_context[SharedValues::DSYM_LATEST_UPLOADED_DATE] ||= uploaded_date
|
187
|
+
current_latest = Actions.lane_context[SharedValues::DSYM_LATEST_UPLOADED_DATE]
|
188
|
+
Actions.lane_context[SharedValues::DSYM_LATEST_UPLOADED_DATE] = [current_latest, uploaded_date].max
|
189
|
+
UI.verbose("Most recent build uploaded_date #{Actions.lane_context[SharedValues::DSYM_LATEST_UPLOADED_DATE]}")
|
190
|
+
end
|
154
191
|
end
|
155
192
|
|
156
193
|
def self.write_dsym(data, bundle_id, train_number, build_number, output_directory)
|
@@ -265,6 +302,12 @@ module Fastlane
|
|
265
302
|
env_name: "DOWNLOAD_DSYMS_MIN_VERSION",
|
266
303
|
description: "The minimum app version for dSYMs you wish to download",
|
267
304
|
optional: true),
|
305
|
+
FastlaneCore::ConfigItem.new(key: :after_uploaded_date,
|
306
|
+
short_option: "-d",
|
307
|
+
env_name: "DOWNLOAD_DSYMS_AFTER_UPLOADED_DATE",
|
308
|
+
description: "The uploaded date after which you wish to download dSYMs",
|
309
|
+
optional: true,
|
310
|
+
is_string: true),
|
268
311
|
FastlaneCore::ConfigItem.new(key: :output_directory,
|
269
312
|
short_option: "-s",
|
270
313
|
env_name: "DOWNLOAD_DSYMS_OUTPUT_DIRECTORY",
|
@@ -289,7 +332,8 @@ module Fastlane
|
|
289
332
|
|
290
333
|
def self.output
|
291
334
|
[
|
292
|
-
['DSYM_PATHS', 'An array to all the zipped dSYM files']
|
335
|
+
['DSYM_PATHS', 'An array to all the zipped dSYM files'],
|
336
|
+
['DSYM_LATEST_UPLOADED_DATE', 'Date of the most recent uploaded time of successfully downloaded dSYM files']
|
293
337
|
]
|
294
338
|
end
|
295
339
|
|
@@ -311,7 +355,8 @@ module Fastlane
|
|
311
355
|
'download_dsyms(version: "1.0.0", build_number: "345")',
|
312
356
|
'download_dsyms(version: "1.0.1", build_number: 42)',
|
313
357
|
'download_dsyms(version: "live")',
|
314
|
-
'download_dsyms(min_version: "1.2.3")'
|
358
|
+
'download_dsyms(min_version: "1.2.3")',
|
359
|
+
'download_dsyms(after_uploaded_date: "2020-09-11T19:00:00+01:00")'
|
315
360
|
]
|
316
361
|
end
|
317
362
|
|
@@ -4,9 +4,10 @@ module Fastlane
|
|
4
4
|
def self.run(params)
|
5
5
|
require 'spaceship'
|
6
6
|
|
7
|
+
# Team selection passed though FASTLANE_ITC_TEAM_ID and FASTLANE_ITC_TEAM_NAME environment variables
|
8
|
+
# Prompts select team if multiple teams and none specified
|
7
9
|
UI.message("Login to App Store Connect (#{params[:username]})")
|
8
10
|
Spaceship::ConnectAPI.login(params[:username], use_portal: false, use_tunes: true)
|
9
|
-
Spaceship::ConnectAPI.select_team
|
10
11
|
UI.message("Login successful")
|
11
12
|
|
12
13
|
app = Spaceship::ConnectAPI::App.find(params[:app_identifier])
|
@@ -45,6 +45,8 @@ module Fastlane
|
|
45
45
|
command = %w(git describe)
|
46
46
|
command << '--tags' if match_lightweight
|
47
47
|
command << hash
|
48
|
+
command << '--match' if tag_match_pattern
|
49
|
+
command << tag_match_pattern if tag_match_pattern
|
48
50
|
Actions.sh(*command.compact, log: false).chomp
|
49
51
|
rescue
|
50
52
|
nil
|
@@ -188,6 +188,8 @@ module Fastlane
|
|
188
188
|
|
189
189
|
def write_lanefile(lanefile_implementation_opening: nil, class_name: nil, tool_name: nil)
|
190
190
|
disclaimer = []
|
191
|
+
disclaimer << "// *bait*" # As we are using a custom common header, we have to bait with a random comment so it does not remove important text.
|
192
|
+
disclaimer << ""
|
191
193
|
disclaimer << "// This class is automatically included in FastlaneRunner during build"
|
192
194
|
disclaimer << ""
|
193
195
|
disclaimer << "// This autogenerated file will be overwritten or replaced during build time, or when you initialize `#{tool_name}`"
|
@@ -223,7 +225,7 @@ module Fastlane
|
|
223
225
|
header << "// new group so that it won't be marked for upgrade"
|
224
226
|
header << "//"
|
225
227
|
header << ""
|
226
|
-
header << "class #{tool_detail.swift_class}: #{tool_detail.swift_protocol} {"
|
228
|
+
header << "public class #{tool_detail.swift_class}: #{tool_detail.swift_protocol} {"
|
227
229
|
lanefile_implementation_opening = header.join("\n")
|
228
230
|
|
229
231
|
files_generated << write_lanefile(
|
@@ -284,7 +286,7 @@ func parseInt(fromString: String, function: String = #function) -> Int {
|
|
284
286
|
|
285
287
|
def generate_lanefile_tool_objects(classes: nil)
|
286
288
|
objects = classes.map do |filename|
|
287
|
-
"let #{filename.downcase}: #{filename} = #{filename}()"
|
289
|
+
"public let #{filename.downcase}: #{filename} = #{filename}()"
|
288
290
|
end
|
289
291
|
return objects
|
290
292
|
end
|
@@ -362,12 +364,12 @@ func parseInt(fromString: String, function: String = #function) -> Int {
|
|
362
364
|
protocol_content_array = []
|
363
365
|
protocol_name = tool_swift_function.protocol_name
|
364
366
|
|
365
|
-
protocol_content_array << "protocol #{protocol_name}: class {"
|
367
|
+
protocol_content_array << "public protocol #{protocol_name}: class {"
|
366
368
|
protocol_content_array += tool_swift_function.swift_vars
|
367
369
|
protocol_content_array << "}"
|
368
370
|
protocol_content_array << ""
|
369
371
|
|
370
|
-
protocol_content_array << "extension #{protocol_name} {"
|
372
|
+
protocol_content_array << "public extension #{protocol_name} {"
|
371
373
|
protocol_content_array += tool_swift_function.swift_default_implementations
|
372
374
|
protocol_content_array << "}"
|
373
375
|
protocol_content_array << ""
|
@@ -206,7 +206,7 @@ module Fastlane
|
|
206
206
|
# This just creates a string with as many spaces are necessary given whether or not
|
207
207
|
# the function has a 'discardableResult' annotation, the 'func' keyword, function name
|
208
208
|
# and the opening paren.
|
209
|
-
function_keyword_definition = 'func '
|
209
|
+
function_keyword_definition = 'public func '
|
210
210
|
open_paren = '('
|
211
211
|
closed_paren = ')'
|
212
212
|
indent = ' ' * (discardable_result.length + function_name.length + function_keyword_definition.length + open_paren.length)
|
@@ -1,7 +1,5 @@
|
|
1
|
-
//
|
2
|
-
//
|
3
|
-
// Don't modify this file unless you are familiar with how fastlane's swift code generation works
|
4
|
-
// *** This file will be overwritten or replaced during build time ***
|
1
|
+
// Appfile.swift
|
2
|
+
// Copyright (c) 2020 FastlaneTools
|
5
3
|
|
6
4
|
var appIdentifier: String { return "" } // The bundle identifier of your app
|
7
5
|
var appleID: String { return "" } // Your Apple email address
|
@@ -1,3 +1,6 @@
|
|
1
|
+
// Deliverfile.swift
|
2
|
+
// Copyright (c) 2020 FastlaneTools
|
3
|
+
|
1
4
|
// This class is automatically included in FastlaneRunner during build
|
2
5
|
|
3
6
|
// This autogenerated file will be overwritten or replaced during build time, or when you initialize `deliver`
|
@@ -8,10 +11,10 @@
|
|
8
11
|
// new group so that it won't be marked for upgrade
|
9
12
|
//
|
10
13
|
|
11
|
-
class Deliverfile: DeliverfileProtocol {
|
14
|
+
public class Deliverfile: DeliverfileProtocol {
|
12
15
|
// If you want to enable `deliver`, run `fastlane deliver init`
|
13
16
|
// After, this file will be replaced with a custom implementation that contains values you supplied
|
14
17
|
// during the `init` process, and you won't see this message
|
15
18
|
}
|
16
19
|
|
17
|
-
// Generated with fastlane 2.
|
20
|
+
// Generated with fastlane 2.160.0
|