fastlane 2.157.2 → 2.160.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|