fastlane 2.130.0.beta.20190822200101 → 2.130.0.beta.20190823200017
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/fastlane/lib/fastlane.rb +4 -1
- data/fastlane/lib/fastlane/actions/actions_helper.rb +4 -0
- data/fastlane/lib/fastlane/actions/carthage.rb +4 -3
- data/fastlane/lib/fastlane/actions/danger.rb +7 -0
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +36 -15
- data/fastlane/lib/fastlane/actions/slather.rb +1 -0
- data/fastlane/lib/fastlane/commands_generator.rb +16 -0
- data/fastlane/lib/fastlane/plugins/plugin_manager.rb +2 -0
- data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +3 -0
- data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +113 -32
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Actions.swift +11 -0
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj +9 -0
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- data/fastlane/swift/Plugins.swift +11 -0
- data/fastlane_core/lib/fastlane_core/command_executor.rb +1 -1
- data/gym/lib/gym/options.rb +11 -16
- data/snapshot/lib/snapshot/commands_generator.rb +2 -2
- data/snapshot/lib/snapshot/update.rb +4 -2
- data/spaceship/lib/spaceship/client.rb +1 -1
- metadata +16 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ff060b30323e069111aa4ad4f61b7459df5cbe94
|
4
|
+
data.tar.gz: cfe862be0e4ddbed410b9d47829fbf3a6e6ea107
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f59a608b40668e023029490fa883f564e42e92c6c9c21b7c96e28b35f24b7d0a389debc9e9b67ed87464f40341a753669fc2e409c73c3326862a53c99b452561
|
7
|
+
data.tar.gz: 15c74553ddabcb36be92aa8a6dfbefd03c853d57f92eda287f3738246925333459762ad909223124ba42321a816ee0d8ebac8fbe4055bfcabcc048b96be91c5a
|
data/fastlane/lib/fastlane.rb
CHANGED
@@ -26,6 +26,7 @@ require 'fastlane/documentation/docs_generator'
|
|
26
26
|
require 'fastlane/other_action'
|
27
27
|
require 'fastlane/plugins/plugins'
|
28
28
|
require 'fastlane/fastlane_require'
|
29
|
+
require "fastlane/swift_fastlane_api_generator.rb"
|
29
30
|
|
30
31
|
module Fastlane
|
31
32
|
Helper = FastlaneCore::Helper # you gotta love Ruby: Helper.* should use the Helper class contained in FastlaneCore
|
@@ -39,10 +40,12 @@ module Fastlane
|
|
39
40
|
|
40
41
|
if FastlaneCore::FastlaneFolder.path
|
41
42
|
actions_path = File.join(FastlaneCore::FastlaneFolder.path, 'actions')
|
42
|
-
Fastlane::Actions.load_external_actions(actions_path) if File.directory?(actions_path)
|
43
|
+
@external_actions = Fastlane::Actions.load_external_actions(actions_path) if File.directory?(actions_path)
|
43
44
|
end
|
44
45
|
end
|
45
46
|
|
47
|
+
attr_reader :external_actions
|
48
|
+
|
46
49
|
def plugin_manager
|
47
50
|
@plugin_manager ||= Fastlane::PluginManager.new
|
48
51
|
end
|
@@ -105,6 +105,7 @@ module Fastlane
|
|
105
105
|
def self.load_external_actions(path)
|
106
106
|
UI.user_error!("You need to pass a valid path") unless File.exist?(path)
|
107
107
|
|
108
|
+
class_refs = []
|
108
109
|
Dir[File.expand_path('*.rb', path)].each do |file|
|
109
110
|
begin
|
110
111
|
require file
|
@@ -123,6 +124,7 @@ module Fastlane
|
|
123
124
|
class_name = file_name.fastlane_class + 'Action'
|
124
125
|
begin
|
125
126
|
class_ref = Fastlane::Actions.const_get(class_name)
|
127
|
+
class_refs << class_ref
|
126
128
|
|
127
129
|
if class_ref.respond_to?(:run)
|
128
130
|
UI.success("Successfully loaded custom action '#{file}'.") if FastlaneCore::Globals.verbose?
|
@@ -139,6 +141,8 @@ module Fastlane
|
|
139
141
|
end
|
140
142
|
end
|
141
143
|
Actions.reset_aliases
|
144
|
+
|
145
|
+
return class_refs
|
142
146
|
end
|
143
147
|
|
144
148
|
def self.formerly_bundled_actions
|
@@ -11,8 +11,10 @@ module Fastlane
|
|
11
11
|
|
12
12
|
if command_name == "archive" && params[:frameworks].count > 0
|
13
13
|
cmd.concat(params[:frameworks])
|
14
|
-
|
15
|
-
|
14
|
+
# "update", "build" and "bootstrap" are the only commands that support "--derived-data" parameter
|
15
|
+
elsif ["update", "build", "bootstrap"].include?(command_name)
|
16
|
+
cmd.concat(params[:dependencies]) if params[:dependencies].count > 0
|
17
|
+
cmd << "--derived-data #{params[:derived_data].shellescape}" if params[:derived_data]
|
16
18
|
end
|
17
19
|
|
18
20
|
cmd << "--output #{params[:output]}" if params[:output]
|
@@ -24,7 +26,6 @@ module Fastlane
|
|
24
26
|
cmd << "--verbose" if params[:verbose] == true
|
25
27
|
cmd << "--platform #{params[:platform]}" if params[:platform]
|
26
28
|
cmd << "--configuration #{params[:configuration]}" if params[:configuration]
|
27
|
-
cmd << "--derived-data #{params[:derived_data].shellescape}" if params[:derived_data]
|
28
29
|
cmd << "--toolchain #{params[:toolchain]}" if params[:toolchain]
|
29
30
|
cmd << "--project-directory #{params[:project_directory]}" if params[:project_directory]
|
30
31
|
cmd << "--cache-builds" if params[:cache_builds]
|
@@ -18,6 +18,7 @@ module Fastlane
|
|
18
18
|
cmd << "--dangerfile=#{dangerfile}" if dangerfile
|
19
19
|
cmd << "--fail-on-errors=true" if params[:fail_on_errors]
|
20
20
|
cmd << "--new-comment" if params[:new_comment]
|
21
|
+
cmd << "--remove-previous-comments" if params[:remove_previous_comments]
|
21
22
|
cmd << "--base=#{base}" if base
|
22
23
|
cmd << "--head=#{head}" if head
|
23
24
|
cmd << "pr #{pr}" if pr
|
@@ -78,6 +79,12 @@ module Fastlane
|
|
78
79
|
is_string: false,
|
79
80
|
optional: true,
|
80
81
|
default_value: false),
|
82
|
+
FastlaneCore::ConfigItem.new(key: :remove_previous_comments,
|
83
|
+
env_name: "FL_DANGER_REMOVE_PREVIOUS_COMMENT",
|
84
|
+
description: "Makes Danger remove all previous comment and create a new one in the end of the list",
|
85
|
+
is_string: false,
|
86
|
+
optional: true,
|
87
|
+
default_value: false),
|
81
88
|
FastlaneCore::ConfigItem.new(key: :base,
|
82
89
|
env_name: "FL_DANGER_BASE",
|
83
90
|
description: "A branch/tag/commit to use as the base of the diff. [master|dev|stable]",
|
@@ -25,6 +25,7 @@ module Fastlane
|
|
25
25
|
build_number = params[:build_number]
|
26
26
|
platform = params[:platform]
|
27
27
|
output_directory = params[:output_directory]
|
28
|
+
wait_for_dsym_processing = params[:wait_for_dsym_processing]
|
28
29
|
min_version = Gem::Version.new(params[:min_version]) if params[:min_version]
|
29
30
|
|
30
31
|
# Set version if it is latest
|
@@ -85,22 +86,35 @@ module Fastlane
|
|
85
86
|
next
|
86
87
|
end
|
87
88
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
89
|
+
UI.verbose("Build_version: #{build.build_version} matches #{build_number}, grabbing dsym_url") if build_number
|
90
|
+
|
91
|
+
start = Time.now
|
92
|
+
download_url = nil
|
93
|
+
|
94
|
+
loop do
|
95
|
+
begin
|
96
|
+
build_details = app.tunes_build_details(train: train.version_string, build_number: build.build_version, platform: platform)
|
97
|
+
download_url = build_details.dsym_url
|
98
|
+
UI.verbose("dsym_url: #{download_url}")
|
99
|
+
rescue Spaceship::TunesClient::ITunesConnectError => ex
|
100
|
+
UI.error("Error accessing dSYM file for build\n\n#{build}\n\nException: #{ex}")
|
101
|
+
end
|
102
|
+
|
103
|
+
unless download_url
|
104
|
+
if !wait_for_dsym_processing || (Time.now - start) > (60 * 5)
|
105
|
+
UI.error("Could not find any dSYM for #{build.build_version} (#{train.version_string})")
|
106
|
+
else
|
107
|
+
UI.message("Waiting for dSYM file to appear...")
|
108
|
+
sleep(30)
|
109
|
+
next
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
break
|
96
114
|
end
|
97
115
|
|
98
|
-
|
99
|
-
|
100
|
-
break if build_number
|
101
|
-
else
|
102
|
-
UI.message("No dSYM URL for #{build.build_version} (#{train.version_string})")
|
103
|
-
end
|
116
|
+
self.download(download_url, app.bundle_id, train.version_string, build.build_version, output_directory)
|
117
|
+
break if build_number
|
104
118
|
end
|
105
119
|
end
|
106
120
|
|
@@ -228,7 +242,14 @@ module Fastlane
|
|
228
242
|
short_option: "-s",
|
229
243
|
env_name: "DOWNLOAD_DSYMS_OUTPUT_DIRECTORY",
|
230
244
|
description: "Where to save the download dSYMs, defaults to the current path",
|
231
|
-
optional: true)
|
245
|
+
optional: true),
|
246
|
+
FastlaneCore::ConfigItem.new(key: :wait_for_dsym_processing,
|
247
|
+
short_option: "-w",
|
248
|
+
env_name: "DOWNLOAD_DSYMS_WAIT_FOR_DSYM_PROCESSING",
|
249
|
+
description: "Wait for dSYMs to process",
|
250
|
+
optional: true,
|
251
|
+
default_value: false,
|
252
|
+
type: Boolean)
|
232
253
|
]
|
233
254
|
end
|
234
255
|
|
@@ -263,6 +263,7 @@ module Fastlane
|
|
263
263
|
FastlaneCore::ConfigItem.new(key: :binary_file,
|
264
264
|
env_name: "FL_SLATHER_BINARY_FILE",
|
265
265
|
description: "Binary file name to be used for code coverage",
|
266
|
+
type: Array,
|
266
267
|
skip_type_validation: true, # skipping validation for backwards compatibility with Boolean type
|
267
268
|
optional: true),
|
268
269
|
FastlaneCore::ConfigItem.new(key: :arch,
|
@@ -329,6 +329,22 @@ module Fastlane
|
|
329
329
|
end
|
330
330
|
end
|
331
331
|
|
332
|
+
#####################################################
|
333
|
+
# @!group Swift
|
334
|
+
#####################################################
|
335
|
+
|
336
|
+
if FastlaneCore::FastlaneFolder.swift?
|
337
|
+
command :generate_swift do |c|
|
338
|
+
c.syntax = 'fastlane generate_swift'
|
339
|
+
c.description = 'Generates additional Swift APIs for plugins and local actions'
|
340
|
+
|
341
|
+
c.action do |args, options|
|
342
|
+
SwiftActionsAPIGenerator.new(target_output_path: FastlaneCore::FastlaneFolder.swift_folder_path).generate_swift
|
343
|
+
SwiftPluginsAPIGenerator.new(target_output_path: FastlaneCore::FastlaneFolder.swift_folder_path).generate_swift
|
344
|
+
end
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
332
348
|
default_command(:trigger)
|
333
349
|
run!
|
334
350
|
end
|
@@ -178,6 +178,7 @@ module Fastlane
|
|
178
178
|
with_clean_bundler_env do
|
179
179
|
cmd = "bundle install"
|
180
180
|
cmd << " --quiet" unless FastlaneCore::Globals.verbose?
|
181
|
+
cmd << " && bundle exec fastlane generate_swift" if FastlaneCore::FastlaneFolder.swift?
|
181
182
|
cmd << " && echo 'Successfully installed plugins'"
|
182
183
|
UI.command(cmd) if FastlaneCore::Globals.verbose?
|
183
184
|
exec(cmd)
|
@@ -197,6 +198,7 @@ module Fastlane
|
|
197
198
|
cmd = "bundle update"
|
198
199
|
cmd << " #{plugins.join(' ')}"
|
199
200
|
cmd << " --quiet" unless FastlaneCore::Globals.verbose?
|
201
|
+
cmd << " && bundle exec fastlane generate_swift" if FastlaneCore::FastlaneFolder.swift?
|
200
202
|
cmd << " && echo 'Successfully updated plugins'"
|
201
203
|
UI.command(cmd) if FastlaneCore::Globals.verbose?
|
202
204
|
exec(cmd)
|
@@ -13,28 +13,18 @@ module Fastlane
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
class
|
17
|
-
|
18
|
-
attr_accessor :tools_option_files
|
19
|
-
attr_accessor :actions_not_supported
|
20
|
-
attr_accessor :action_options_to_ignore
|
21
|
-
attr_accessor :target_output_path
|
22
|
-
attr_accessor :generated_paths # stores all file names of generated files (as they are generated)
|
16
|
+
class SwiftAPIGenerator
|
17
|
+
end
|
23
18
|
|
19
|
+
class SwiftFastlaneAPIGenerator < SwiftAPIGenerator
|
24
20
|
def initialize(target_output_path: "swift")
|
21
|
+
@target_filename = "Fastlane.swift"
|
25
22
|
@target_output_path = File.expand_path(target_output_path)
|
26
23
|
@generated_paths = []
|
27
|
-
require 'fastlane'
|
28
|
-
require 'fastlane/documentation/actions_list'
|
29
|
-
Fastlane.load_actions
|
30
|
-
# Tools that can be used with <Toolname>file, like Deliverfile, Screengrabfile
|
31
|
-
# this is important because we need to generate the proper api for these by creating a protocol
|
32
|
-
# with default implementation we can use in the Fastlane.swift API if people want to use
|
33
|
-
# <Toolname>file.swift files.
|
34
|
-
self.tools_option_files = TOOL_CONFIG_FILES.map { |config_file| config_file.downcase.chomp("file") }.to_set
|
35
24
|
|
36
|
-
|
25
|
+
super()
|
37
26
|
|
27
|
+
self.actions_not_supported = ["import", "import_from_git"].to_set
|
38
28
|
self.action_options_to_ignore = {
|
39
29
|
|
40
30
|
"precheck" => [
|
@@ -51,6 +41,110 @@ module Fastlane
|
|
51
41
|
}
|
52
42
|
end
|
53
43
|
|
44
|
+
def extend_content(file_content, tool_details)
|
45
|
+
file_content << "" # newline because we're adding an extension
|
46
|
+
file_content << "// These are all the parsing functions needed to transform our data into the expected types"
|
47
|
+
file_content << generate_lanefile_parsing_functions
|
48
|
+
|
49
|
+
tool_objects = generate_lanefile_tool_objects(classes: tool_details.map(&:swift_class))
|
50
|
+
file_content << tool_objects
|
51
|
+
|
52
|
+
old_file_content = File.read(fastlane_swift_api_path)
|
53
|
+
new_file_content = file_content.join("\n")
|
54
|
+
|
55
|
+
# compare old file content to potential new file content
|
56
|
+
api_version = determine_api_version(new_file_content: new_file_content, old_file_content: old_file_content)
|
57
|
+
old_api_version = find_api_version_string(content: old_file_content)
|
58
|
+
|
59
|
+
# if there is a change, we need to write out the new file
|
60
|
+
puts("#{api_version} vs #{old_api_version}")
|
61
|
+
if api_version != old_api_version
|
62
|
+
file_content << autogen_version_warning_text(api_version: api_version)
|
63
|
+
else
|
64
|
+
file_content = nil
|
65
|
+
end
|
66
|
+
|
67
|
+
return file_content
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
class SwiftActionsAPIGenerator < SwiftAPIGenerator
|
72
|
+
def initialize(target_output_path: "swift")
|
73
|
+
@target_filename = "Actions.swift"
|
74
|
+
@target_output_path = File.expand_path(target_output_path)
|
75
|
+
@generated_paths = []
|
76
|
+
|
77
|
+
super()
|
78
|
+
|
79
|
+
# Excludes all actions that aren't external actions (including plugins)
|
80
|
+
available_external_actions = Fastlane.external_actions || []
|
81
|
+
available_actions = []
|
82
|
+
ActionsList.all_actions do |action|
|
83
|
+
available_actions << action.action_name unless available_external_actions.include?(action)
|
84
|
+
end
|
85
|
+
|
86
|
+
self.actions_not_supported = (["import", "import_from_git"] + available_actions).to_set
|
87
|
+
self.action_options_to_ignore = {}
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
class SwiftPluginsAPIGenerator < SwiftAPIGenerator
|
92
|
+
def initialize(target_output_path: "swift")
|
93
|
+
@target_filename = "Plugins.swift"
|
94
|
+
@target_output_path = File.expand_path(target_output_path)
|
95
|
+
@generated_paths = []
|
96
|
+
|
97
|
+
super()
|
98
|
+
|
99
|
+
# Gets list of plugin actions
|
100
|
+
plugin_actions = Fastlane.plugin_manager.plugin_references.values.flat_map do |info|
|
101
|
+
info[:actions]
|
102
|
+
end
|
103
|
+
|
104
|
+
# Action references from plugins
|
105
|
+
available_plugins = plugin_actions.map do |plugin_action|
|
106
|
+
Fastlane::Runner.new.class_reference_from_action_name(plugin_action)
|
107
|
+
end
|
108
|
+
|
109
|
+
# Excludes all actions that aren't pluign actions (including external actions)
|
110
|
+
available_actions = []
|
111
|
+
ActionsList.all_actions do |action|
|
112
|
+
available_actions << action.action_name unless available_plugins.include?(action)
|
113
|
+
end
|
114
|
+
|
115
|
+
self.actions_not_supported = (["import", "import_from_git"] + available_actions).to_set
|
116
|
+
self.action_options_to_ignore = {}
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
class SwiftAPIGenerator
|
121
|
+
DEFAULT_API_VERSION_STRING = "0.9.1"
|
122
|
+
attr_accessor :tools_option_files
|
123
|
+
attr_accessor :actions_not_supported
|
124
|
+
attr_accessor :action_options_to_ignore
|
125
|
+
attr_accessor :target_output_path
|
126
|
+
attr_accessor :target_filename
|
127
|
+
attr_accessor :generated_paths # stores all file names of generated files (as they are generated)
|
128
|
+
|
129
|
+
attr_accessor :fastlane_swift_api_path
|
130
|
+
|
131
|
+
def initialize
|
132
|
+
require 'fastlane'
|
133
|
+
require 'fastlane/documentation/actions_list'
|
134
|
+
Fastlane.load_actions
|
135
|
+
# Tools that can be used with <Toolname>file, like Deliverfile, Screengrabfile
|
136
|
+
# this is important because we need to generate the proper api for these by creating a protocol
|
137
|
+
# with default implementation we can use in the Fastlane.swift API if people want to use
|
138
|
+
# <Toolname>file.swift files.
|
139
|
+
self.tools_option_files = TOOL_CONFIG_FILES.map { |config_file| config_file.downcase.chomp("file") }.to_set
|
140
|
+
|
141
|
+
@fastlane_swift_api_path = File.join(@target_output_path, @target_filename)
|
142
|
+
end
|
143
|
+
|
144
|
+
def extend_content(content, tool_details)
|
145
|
+
return content
|
146
|
+
end
|
147
|
+
|
54
148
|
def generate_swift
|
55
149
|
self.generated_paths = [] # reset generated paths in case we're called multiple times
|
56
150
|
file_content = []
|
@@ -74,24 +168,11 @@ module Fastlane
|
|
74
168
|
|
75
169
|
file_content << swift_function.swift_code
|
76
170
|
end
|
77
|
-
file_content << "" # newline because we're adding an extension
|
78
|
-
file_content << "// These are all the parsing functions needed to transform our data into the expected types"
|
79
|
-
file_content << generate_lanefile_parsing_functions
|
80
|
-
|
81
|
-
tool_objects = generate_lanefile_tool_objects(classes: tool_details.map(&:swift_class))
|
82
|
-
file_content << tool_objects
|
83
|
-
new_file_content = file_content.join("\n")
|
84
|
-
|
85
|
-
fastlane_swift_api_path = File.join(@target_output_path, "Fastlane.swift")
|
86
|
-
old_file_content = File.read(fastlane_swift_api_path)
|
87
171
|
|
88
|
-
|
89
|
-
api_version = determine_api_version(new_file_content: new_file_content, old_file_content: old_file_content)
|
90
|
-
old_api_version = find_api_version_string(content: old_file_content)
|
172
|
+
file_content = extend_content(file_content, tool_details)
|
91
173
|
|
92
|
-
|
93
|
-
|
94
|
-
new_file_content.concat(autogen_version_warning_text(api_version: api_version))
|
174
|
+
if file_content
|
175
|
+
new_file_content = file_content.join("\n")
|
95
176
|
|
96
177
|
File.write(fastlane_swift_api_path, new_file_content)
|
97
178
|
UI.success(fastlane_swift_api_path)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Fastlane
|
2
|
-
VERSION = '2.130.0.beta.
|
2
|
+
VERSION = '2.130.0.beta.20190823200017'.freeze
|
3
3
|
DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
|
4
4
|
MINIMUM_XCODE_RELEASE = "7.0".freeze
|
5
5
|
RUBOCOP_REQUIREMENT = '0.49.1'.freeze
|
@@ -0,0 +1,11 @@
|
|
1
|
+
// This class is automatically included in FastlaneRunner during build
|
2
|
+
|
3
|
+
// This autogenerated file will be overwritten or replaced when running "fastlane generate_swift"
|
4
|
+
//
|
5
|
+
// ** NOTE **
|
6
|
+
// This file is provided by fastlane and WILL be overwritten in future updates
|
7
|
+
// If you want to add extra functionality to this project, create a new file in a
|
8
|
+
// new group so that it won't be marked for upgrade
|
9
|
+
//
|
10
|
+
|
11
|
+
import Foundation
|
@@ -7,6 +7,8 @@
|
|
7
7
|
objects = {
|
8
8
|
|
9
9
|
/* Begin PBXBuildFile section */
|
10
|
+
0311E387230AC1B20060BB5C /* Plugins.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0311E386230AC1B20060BB5C /* Plugins.swift */; };
|
11
|
+
0311E38B230AC9490060BB5C /* Actions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0311E38A230AC9490060BB5C /* Actions.swift */; };
|
10
12
|
B302067B1F5E3E9000DE6EBD /* SnapshotfileProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B30206741F5E3E9000DE6EBD /* SnapshotfileProtocol.swift */; };
|
11
13
|
B302067C1F5E3E9000DE6EBD /* GymfileProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B30206751F5E3E9000DE6EBD /* GymfileProtocol.swift */; };
|
12
14
|
B302067D1F5E3E9000DE6EBD /* MatchfileProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = B30206761F5E3E9000DE6EBD /* MatchfileProtocol.swift */; };
|
@@ -38,6 +40,8 @@
|
|
38
40
|
/* End PBXBuildFile section */
|
39
41
|
|
40
42
|
/* Begin PBXFileReference section */
|
43
|
+
0311E386230AC1B20060BB5C /* Plugins.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Plugins.swift; path = ../Plugins.swift; sourceTree = "<group>"; };
|
44
|
+
0311E38A230AC9490060BB5C /* Actions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Actions.swift; path = ../Actions.swift; sourceTree = "<group>"; };
|
41
45
|
B30206741F5E3E9000DE6EBD /* SnapshotfileProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SnapshotfileProtocol.swift; path = ../SnapshotfileProtocol.swift; sourceTree = "<group>"; };
|
42
46
|
B30206751F5E3E9000DE6EBD /* GymfileProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = GymfileProtocol.swift; path = ../GymfileProtocol.swift; sourceTree = "<group>"; };
|
43
47
|
B30206761F5E3E9000DE6EBD /* MatchfileProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MatchfileProtocol.swift; path = ../MatchfileProtocol.swift; sourceTree = "<group>"; };
|
@@ -131,10 +135,12 @@
|
|
131
135
|
isa = PBXGroup;
|
132
136
|
children = (
|
133
137
|
B3144C09200553D400470AFE /* README.txt */,
|
138
|
+
0311E38A230AC9490060BB5C /* Actions.swift */,
|
134
139
|
B3BA659D1F5A269100B34850 /* Fastlane.swift */,
|
135
140
|
B302067A1F5E3E9000DE6EBD /* DeliverfileProtocol.swift */,
|
136
141
|
B30206751F5E3E9000DE6EBD /* GymfileProtocol.swift */,
|
137
142
|
B30206761F5E3E9000DE6EBD /* MatchfileProtocol.swift */,
|
143
|
+
0311E386230AC1B20060BB5C /* Plugins.swift */,
|
138
144
|
B30206771F5E3E9000DE6EBD /* PrecheckfileProtocol.swift */,
|
139
145
|
B30206781F5E3E9000DE6EBD /* ScanfileProtocol.swift */,
|
140
146
|
B30206791F5E3E9000DE6EBD /* ScreengrabfileProtocol.swift */,
|
@@ -205,6 +211,7 @@
|
|
205
211
|
developmentRegion = English;
|
206
212
|
hasScannedForEncodings = 0;
|
207
213
|
knownRegions = (
|
214
|
+
English,
|
208
215
|
en,
|
209
216
|
);
|
210
217
|
mainGroup = B33BAF4E1F51F8D90001A751;
|
@@ -253,6 +260,7 @@
|
|
253
260
|
B302067B1F5E3E9000DE6EBD /* SnapshotfileProtocol.swift in Sources */,
|
254
261
|
D55B28C31F6C588300DC42C5 /* Deliverfile.swift in Sources */,
|
255
262
|
D5A7C4901F7C4DAF00A91DE6 /* Fastfile.swift in Sources */,
|
263
|
+
0311E38B230AC9490060BB5C /* Actions.swift in Sources */,
|
256
264
|
D5A7C48F1F7C4DAF00A91DE6 /* Appfile.swift in Sources */,
|
257
265
|
B3BA65AB1F5A269100B34850 /* SocketClient.swift in Sources */,
|
258
266
|
B30206811F5E3E9000DE6EBD /* DeliverfileProtocol.swift in Sources */,
|
@@ -263,6 +271,7 @@
|
|
263
271
|
B3BA65AD1F5A269100B34850 /* SocketResponse.swift in Sources */,
|
264
272
|
B3BA65A81F5A269100B34850 /* main.swift in Sources */,
|
265
273
|
D55B28C71F6C588300DC42C5 /* Scanfile.swift in Sources */,
|
274
|
+
0311E387230AC1B20060BB5C /* Plugins.swift in Sources */,
|
266
275
|
D55B28C91F6C588300DC42C5 /* Snapshotfile.swift in Sources */,
|
267
276
|
B3BA65A61F5A269100B34850 /* Fastlane.swift in Sources */,
|
268
277
|
D55B28C81F6C588300DC42C5 /* Screengrabfile.swift in Sources */,
|
@@ -0,0 +1,11 @@
|
|
1
|
+
// This class is automatically included in FastlaneRunner during build
|
2
|
+
|
3
|
+
// This autogenerated file will be overwritten or replaced when installing/updating plugins or running "fastlane generate_swift"
|
4
|
+
//
|
5
|
+
// ** NOTE **
|
6
|
+
// This file is provided by fastlane and WILL be overwritten in future updates
|
7
|
+
// If you want to add extra functionality to this project, create a new file in a
|
8
|
+
// new group so that it won't be marked for upgrade
|
9
|
+
//
|
10
|
+
|
11
|
+
import Foundation
|
@@ -51,7 +51,7 @@ module FastlaneCore
|
|
51
51
|
begin
|
52
52
|
status = FastlaneCore::FastlanePty.spawn(command) do |command_stdout, command_stdin, pid|
|
53
53
|
command_stdout.each do |l|
|
54
|
-
line = l.
|
54
|
+
line = l.chomp
|
55
55
|
output << line
|
56
56
|
|
57
57
|
next unless print_all
|
data/gym/lib/gym/options.rb
CHANGED
@@ -51,7 +51,7 @@ module Gym
|
|
51
51
|
short_option: "-c",
|
52
52
|
env_name: "GYM_CLEAN",
|
53
53
|
description: "Should the project be cleaned before building it?",
|
54
|
-
|
54
|
+
type: Boolean,
|
55
55
|
default_value: false),
|
56
56
|
FastlaneCore::ConfigItem.new(key: :output_directory,
|
57
57
|
short_option: "-o",
|
@@ -74,7 +74,7 @@ module Gym
|
|
74
74
|
env_name: "GYM_SILENT",
|
75
75
|
description: "Hide all information that's not necessary while building",
|
76
76
|
default_value: false,
|
77
|
-
|
77
|
+
type: Boolean),
|
78
78
|
FastlaneCore::ConfigItem.new(key: :codesigning_identity,
|
79
79
|
short_option: "-i",
|
80
80
|
env_name: "GYM_CODE_SIGNING_IDENTITY",
|
@@ -83,27 +83,25 @@ module Gym
|
|
83
83
|
FastlaneCore::ConfigItem.new(key: :skip_package_ipa,
|
84
84
|
env_name: "GYM_SKIP_PACKAGE_IPA",
|
85
85
|
description: "Should we skip packaging the ipa?",
|
86
|
-
|
86
|
+
type: Boolean,
|
87
87
|
default_value: false),
|
88
88
|
FastlaneCore::ConfigItem.new(key: :include_symbols,
|
89
89
|
short_option: "-m",
|
90
90
|
env_name: "GYM_INCLUDE_SYMBOLS",
|
91
91
|
description: "Should the ipa file include symbols?",
|
92
|
-
is_string: false,
|
93
92
|
type: Boolean,
|
94
93
|
optional: true),
|
95
94
|
FastlaneCore::ConfigItem.new(key: :include_bitcode,
|
96
95
|
short_option: "-z",
|
97
96
|
env_name: "GYM_INCLUDE_BITCODE",
|
98
97
|
description: "Should the ipa file include bitcode?",
|
99
|
-
is_string: false,
|
100
98
|
type: Boolean,
|
101
99
|
optional: true),
|
102
100
|
FastlaneCore::ConfigItem.new(key: :export_method,
|
103
101
|
short_option: "-j",
|
104
102
|
env_name: "GYM_EXPORT_METHOD",
|
105
103
|
description: "Method used to export the archive. Valid values are: app-store, ad-hoc, package, enterprise, development, developer-id",
|
106
|
-
|
104
|
+
type: String,
|
107
105
|
optional: true,
|
108
106
|
verify_block: proc do |value|
|
109
107
|
av = %w(app-store ad-hoc package enterprise development developer-id)
|
@@ -112,7 +110,6 @@ module Gym
|
|
112
110
|
FastlaneCore::ConfigItem.new(key: :export_options,
|
113
111
|
env_name: "GYM_EXPORT_OPTIONS",
|
114
112
|
description: "Path to an export options plist or a hash with export options. Use 'xcodebuild -help' to print the full set of available options",
|
115
|
-
is_string: false,
|
116
113
|
optional: true,
|
117
114
|
type: Hash,
|
118
115
|
skip_type_validation: true,
|
@@ -130,13 +127,11 @@ module Gym
|
|
130
127
|
FastlaneCore::ConfigItem.new(key: :skip_build_archive,
|
131
128
|
env_name: "GYM_SKIP_BUILD_ARCHIVE",
|
132
129
|
description: "Export ipa from previously built xcarchive. Uses archive_path as source",
|
133
|
-
is_string: false,
|
134
130
|
type: Boolean,
|
135
131
|
optional: true),
|
136
132
|
FastlaneCore::ConfigItem.new(key: :skip_archive,
|
137
133
|
env_name: "GYM_SKIP_ARCHIVE",
|
138
134
|
description: "After building, don't archive, effectively not including -archivePath param",
|
139
|
-
is_string: false,
|
140
135
|
type: Boolean,
|
141
136
|
optional: true),
|
142
137
|
# Very optional
|
@@ -157,7 +152,7 @@ module Gym
|
|
157
152
|
FastlaneCore::ConfigItem.new(key: :result_bundle,
|
158
153
|
short_option: "-u",
|
159
154
|
env_name: "GYM_RESULT_BUNDLE",
|
160
|
-
|
155
|
+
type: Boolean,
|
161
156
|
description: "Should an Xcode result bundle be generated in the output directory",
|
162
157
|
default_value: false,
|
163
158
|
optional: true),
|
@@ -180,7 +175,7 @@ module Gym
|
|
180
175
|
env_name: "GYM_TOOLCHAIN",
|
181
176
|
description: "The toolchain that should be used for building the application (e.g. com.apple.dt.toolchain.Swift_2_3, org.swift.30p620160816a)",
|
182
177
|
optional: true,
|
183
|
-
|
178
|
+
type: String),
|
184
179
|
FastlaneCore::ConfigItem.new(key: :destination,
|
185
180
|
short_option: "-d",
|
186
181
|
env_name: "GYM_DESTINATION",
|
@@ -215,12 +210,12 @@ module Gym
|
|
215
210
|
env_name: "DISABLE_XCPRETTY",
|
216
211
|
description: "Disable xcpretty formatting of build output",
|
217
212
|
optional: true,
|
218
|
-
|
213
|
+
type: Boolean),
|
219
214
|
FastlaneCore::ConfigItem.new(key: :xcpretty_test_format,
|
220
215
|
env_name: "XCPRETTY_TEST_FORMAT",
|
221
216
|
description: "Use the test (RSpec style) format for build output",
|
222
217
|
optional: true,
|
223
|
-
|
218
|
+
type: Boolean),
|
224
219
|
FastlaneCore::ConfigItem.new(key: :xcpretty_formatter,
|
225
220
|
env_name: "XCPRETTY_FORMATTER",
|
226
221
|
description: "A custom xcpretty formatter to use",
|
@@ -244,17 +239,17 @@ module Gym
|
|
244
239
|
env_name: "GYM_ANALYZE_BUILD_TIME",
|
245
240
|
description: "Analyze the project build time and store the output in 'culprits.txt' file",
|
246
241
|
optional: true,
|
247
|
-
|
242
|
+
type: Boolean),
|
248
243
|
FastlaneCore::ConfigItem.new(key: :xcpretty_utf,
|
249
244
|
env_name: "XCPRETTY_UTF",
|
250
245
|
description: "Have xcpretty use unicode encoding when reporting builds",
|
251
246
|
optional: true,
|
252
|
-
|
247
|
+
type: Boolean),
|
253
248
|
FastlaneCore::ConfigItem.new(key: :skip_profile_detection,
|
254
249
|
env_name: "GYM_SKIP_PROFILE_DETECTION",
|
255
250
|
description: "Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used",
|
256
251
|
optional: true,
|
257
|
-
|
252
|
+
type: Boolean,
|
258
253
|
default_value: false)
|
259
254
|
]
|
260
255
|
end
|
@@ -56,10 +56,10 @@ module Snapshot
|
|
56
56
|
command :update do |c|
|
57
57
|
c.syntax = 'fastlane snapshot update'
|
58
58
|
c.description = "Updates your SnapshotHelper.swift to the latest version"
|
59
|
-
|
59
|
+
c.option('--force', 'Disables confirmation prompts')
|
60
60
|
c.action do |args, options|
|
61
61
|
require 'snapshot/update'
|
62
|
-
Snapshot::Update.new.update
|
62
|
+
Snapshot::Update.new.update(force: options.force)
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
@@ -11,7 +11,7 @@ module Snapshot
|
|
11
11
|
paths.reject { |p| p.include?("snapshot/lib/assets/") }
|
12
12
|
end
|
13
13
|
|
14
|
-
def update
|
14
|
+
def update(force: false)
|
15
15
|
paths = self.class.find_helper
|
16
16
|
UI.user_error!("Couldn't find any SnapshotHelper files in current directory") if paths.count == 0
|
17
17
|
|
@@ -22,7 +22,9 @@ module Snapshot
|
|
22
22
|
UI.message("The underlying API will not change. You can always migrate manually by looking at")
|
23
23
|
UI.message("https://github.com/fastlane/fastlane/blob/master/snapshot/lib/assets/SnapshotHelper.swift")
|
24
24
|
|
25
|
-
|
25
|
+
if !force && !UI.confirm("Overwrite configuration files?")
|
26
|
+
return 1
|
27
|
+
end
|
26
28
|
|
27
29
|
paths.each do |path|
|
28
30
|
UI.message("Updating '#{path}'...")
|
@@ -738,7 +738,7 @@ module Spaceship
|
|
738
738
|
raise InternalServerError, "Received an internal server error from App Store Connect / Developer Portal, please try again later"
|
739
739
|
elsif body.to_s.include?("Gateway Timeout - In read")
|
740
740
|
raise GatewayTimeoutError, "Received a gateway timeout error from App Store Connect / Developer Portal, please try again later"
|
741
|
-
elsif (body["
|
741
|
+
elsif (body["userString"] || "").include?("Program License Agreement")
|
742
742
|
raise ProgramLicenseAgreementUpdated, "#{body['userString']} Please manually log into your Apple Developer account to review and accept the updated agreement."
|
743
743
|
end
|
744
744
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.130.0.beta.
|
4
|
+
version: 2.130.0.beta.20190823200017
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jorge Revuelta H
|
@@ -27,7 +27,7 @@ authors:
|
|
27
27
|
autorequire:
|
28
28
|
bindir: bin
|
29
29
|
cert_chain: []
|
30
|
-
date: 2019-08-
|
30
|
+
date: 2019-08-23 00:00:00.000000000 Z
|
31
31
|
dependencies:
|
32
32
|
- !ruby/object:Gem::Dependency
|
33
33
|
name: slack-notifier
|
@@ -1301,6 +1301,7 @@ files:
|
|
1301
1301
|
- fastlane/lib/fastlane/swift_runner_upgrader.rb
|
1302
1302
|
- fastlane/lib/fastlane/tools.rb
|
1303
1303
|
- fastlane/lib/fastlane/version.rb
|
1304
|
+
- fastlane/swift/Actions.swift
|
1304
1305
|
- fastlane/swift/Appfile.swift
|
1305
1306
|
- fastlane/swift/ArgumentProcessor.swift
|
1306
1307
|
- fastlane/swift/ControlCommand.swift
|
@@ -1310,6 +1311,7 @@ files:
|
|
1310
1311
|
- fastlane/swift/Fastlane.swift
|
1311
1312
|
- fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj
|
1312
1313
|
- fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
|
1314
|
+
- fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
|
1313
1315
|
- fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme
|
1314
1316
|
- fastlane/swift/FastlaneSwiftRunner/README.txt
|
1315
1317
|
- fastlane/swift/Gymfile.swift
|
@@ -1317,6 +1319,7 @@ files:
|
|
1317
1319
|
- fastlane/swift/LaneFileProtocol.swift
|
1318
1320
|
- fastlane/swift/Matchfile.swift
|
1319
1321
|
- fastlane/swift/MatchfileProtocol.swift
|
1322
|
+
- fastlane/swift/Plugins.swift
|
1320
1323
|
- fastlane/swift/Precheckfile.swift
|
1321
1324
|
- fastlane/swift/PrecheckfileProtocol.swift
|
1322
1325
|
- fastlane/swift/RubyCommand.swift
|
@@ -1742,24 +1745,24 @@ metadata:
|
|
1742
1745
|
post_install_message:
|
1743
1746
|
rdoc_options: []
|
1744
1747
|
require_paths:
|
1745
|
-
-
|
1746
|
-
- supply/lib
|
1747
|
-
- snapshot/lib
|
1748
|
+
- pem/lib
|
1748
1749
|
- sigh/lib
|
1749
|
-
- cert/lib
|
1750
|
-
- credentials_manager/lib
|
1751
|
-
- fastlane_core/lib
|
1752
1750
|
- gym/lib
|
1751
|
+
- supply/lib
|
1753
1752
|
- frameit/lib
|
1754
|
-
- produce/lib
|
1755
|
-
- spaceship/lib
|
1756
1753
|
- pilot/lib
|
1757
|
-
- scan/lib
|
1758
1754
|
- fastlane/lib
|
1759
|
-
-
|
1760
|
-
-
|
1755
|
+
- produce/lib
|
1756
|
+
- spaceship/lib
|
1761
1757
|
- deliver/lib
|
1758
|
+
- cert/lib
|
1762
1759
|
- screengrab/lib
|
1760
|
+
- fastlane_core/lib
|
1761
|
+
- precheck/lib
|
1762
|
+
- snapshot/lib
|
1763
|
+
- match/lib
|
1764
|
+
- scan/lib
|
1765
|
+
- credentials_manager/lib
|
1763
1766
|
required_ruby_version: !ruby/object:Gem::Requirement
|
1764
1767
|
requirements:
|
1765
1768
|
- - ">="
|