fastlane 1.107.0 → 1.108.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9bd9af9625b7943456db4b5c3eb18ba991ad5cb1
4
- data.tar.gz: a3818da10900a45a7c9e385b55d5b0f49eaa6a5e
3
+ metadata.gz: dc2c2b50354833ba4132088197a516c4559402bd
4
+ data.tar.gz: f229785555b1062b0e35326eb78c38d5635043b6
5
5
  SHA512:
6
- metadata.gz: e94876d0287bf33c09016a4e19a1ac00c84ba7d05d9b803b6e2db0d643fef2d1749eebff5db52020fddb431697288887cc8195110c5dc5e51cff6873be73f95a
7
- data.tar.gz: c943660f08ad4ff5c2aa23d37adf67a63c9232156ae96dfec33e4875a7ab471d5c5cc27229e6c8db452768b6c64ed09e3a371c943f2dc9a11ed8565ecc3d8e2d
6
+ metadata.gz: 8449c5ac9309de388ecbe0f7d335e9d7edb55774682700da02e1b89308bd84599f8cc5e079d4b9d6ee93c39b169213dc2e15de6482b082ebdcb40c011a12a7da
7
+ data.tar.gz: 8eb65c0be52f83651570ba2444eedc365bbc82e6fdc7710d03187fcf8987eb60d57117666ff5b2dcfc838b98ca66ac3579fcf10d47049f46bf37735f5d126302
@@ -60,6 +60,7 @@ Key | Description
60
60
  ----|------------
61
61
  <%- (action.available_options || []).each do |config_item| -%>
62
62
  <%- next unless config_item.kind_of?(FastlaneCore::ConfigItem) -%>
63
+ <%- next if config_item.description.to_s.length == 0 -%>
63
64
  `<%= config_item.key %>` | <%= config_item.description %>
64
65
  <%- end %>
65
66
  </details>
@@ -20,6 +20,7 @@ require 'fastlane/command_line_handler'
20
20
  require 'fastlane/documentation/docs_generator'
21
21
  require 'fastlane/other_action'
22
22
  require 'fastlane/plugins/plugins'
23
+ require 'fastlane/fastlane_require'
23
24
 
24
25
  module Fastlane
25
26
  Helper = FastlaneCore::Helper # you gotta love Ruby: Helper.* should use the Helper class contained in FastlaneCore
@@ -118,6 +118,11 @@ module Fastlane
118
118
  UI.user_error!("To call another action from an action use `OtherAction.#{method_sym}` instead")
119
119
  end
120
120
 
121
+ # When shelling out from the actoin, should we use `bundle exec`?
122
+ def self.shell_out_should_use_bundle_exec?
123
+ return File.exist?('Gemfile') && !Helper.contained_fastlane?
124
+ end
125
+
121
126
  # Return a new instance of the OtherAction action
122
127
  # We need to do this, since it has to have access to
123
128
  # the runner object
@@ -14,7 +14,7 @@ module Fastlane
14
14
  cmd << ["cd '#{podfile_folder}' &&"]
15
15
  end
16
16
 
17
- cmd << ['bundle exec'] if File.exist?('Gemfile') && params[:use_bundle_exec]
17
+ cmd << ['bundle exec'] if params[:use_bundle_exec] && shell_out_should_use_bundle_exec?
18
18
  cmd << ['pod install']
19
19
 
20
20
  cmd << '--no-clean' unless params[:clean]
@@ -19,7 +19,7 @@ module Fastlane
19
19
  UI.user_error!("Could not find the specified xcodeproj: #{xcodeproj_path}") unless File.directory?(xcodeproj_path)
20
20
  else
21
21
  # find an xcodeproj (ignoring the Cocoapods one)
22
- xcodeproj_paths = Dir[File.expand_path(File.join(repo_path, '**/*.xcodeproj'))].reject { |path| %r{Pods\/.*.xcodeproj} =~ path }
22
+ xcodeproj_paths = Dir[File.expand_path(File.join(repo_path, '**/*.xcodeproj'))].reject { |path| %r{/Pods/[^/]*.xcodeproj} =~ path }
23
23
 
24
24
  # no projects found: error
25
25
  UI.user_error!('Could not find a .xcodeproj in the current repository\'s working directory.') if xcodeproj_paths.count == 0
@@ -8,30 +8,44 @@ module Fastlane
8
8
 
9
9
  class CreateKeychainAction < Action
10
10
  def self.run(params)
11
- escaped_name = params[:name].shellescape
12
11
  escaped_password = params[:password].shellescape
13
12
 
13
+ if params[:name]
14
+ escaped_name = params[:name].shellescape
15
+ keychain_path = "~/Library/Keychains/#{escaped_name}"
16
+ else
17
+ keychain_path = params[:path].shellescape
18
+ end
19
+
20
+ if keychain_path.nil?
21
+ UI.user_error!("You either have to set :name or :path")
22
+ end
23
+
14
24
  commands = []
15
- commands << Fastlane::Actions.sh("security create-keychain -p #{escaped_password} #{escaped_name}", log: false)
25
+ commands << Fastlane::Actions.sh("security create-keychain -p #{escaped_password} #{keychain_path}", log: false)
16
26
 
17
27
  if params[:default_keychain]
18
- Actions.lane_context[Actions::SharedValues::ORIGINAL_DEFAULT_KEYCHAIN] = Fastlane::Actions.sh("security default-keychain", log: false).strip
19
- commands << Fastlane::Actions.sh("security default-keychain -s #{escaped_name}", log: false)
28
+ # if there is no default keychain - setting the original will fail - silent this error
29
+ begin
30
+ Actions.lane_context[Actions::SharedValues::ORIGINAL_DEFAULT_KEYCHAIN] = Fastlane::Actions.sh("security default-keychain", log: false).strip
31
+ rescue
32
+ end
33
+ commands << Fastlane::Actions.sh("security default-keychain -s #{keychain_path}", log: false)
20
34
  end
21
35
 
22
- commands << Fastlane::Actions.sh("security unlock-keychain -p #{escaped_password} #{escaped_name}", log: false) if params[:unlock]
36
+ commands << Fastlane::Actions.sh("security unlock-keychain -p #{escaped_password} #{keychain_path}", log: false) if params[:unlock]
23
37
 
24
38
  command = "security set-keychain-settings"
25
39
  command << " -t #{params[:timeout]}" if params[:timeout]
26
40
  command << " -l" if params[:lock_when_sleeps]
27
41
  command << " -u" if params[:lock_after_timeout]
28
- command << " ~/Library/Keychains/#{escaped_name}"
42
+ command << " #{keychain_path}"
29
43
 
30
44
  commands << Fastlane::Actions.sh(command, log: false)
31
45
 
32
46
  if params[:add_to_search_list]
33
47
  keychains = Action.sh("security list-keychains -d user").shellsplit
34
- keychains << File.expand_path(params[:name], "~/Library/Keychains")
48
+ keychains << File.expand_path(keychain_path)
35
49
  commands << Fastlane::Actions.sh("security list-keychains -s #{keychains.shelljoin}", log: false)
36
50
  end
37
51
 
@@ -47,7 +61,15 @@ module Fastlane
47
61
  FastlaneCore::ConfigItem.new(key: :name,
48
62
  env_name: "KEYCHAIN_NAME",
49
63
  description: "Keychain name",
50
- optional: false),
64
+ conflicting_options: [:path],
65
+ is_string: true,
66
+ optional: true),
67
+ FastlaneCore::ConfigItem.new(key: :path,
68
+ env_name: "KEYCHAIN_PATH",
69
+ description: "Path to Keychain",
70
+ is_string: true,
71
+ conflicting_options: [:name],
72
+ optional: true),
51
73
  FastlaneCore::ConfigItem.new(key: :password,
52
74
  env_name: "KEYCHAIN_PASSWORD",
53
75
  description: "Password for the keychain",
@@ -5,7 +5,7 @@ module Fastlane
5
5
  Actions.verify_gem!('danger')
6
6
  cmd = []
7
7
 
8
- cmd << 'bundle exec' if File.exist?('Gemfile') && params[:use_bundle_exec]
8
+ cmd << 'bundle exec' if params[:use_bundle_exec] && shell_out_should_use_bundle_exec?
9
9
  cmd << 'danger'
10
10
  cmd << '--verbose' if params[:verbose]
11
11
 
@@ -24,8 +24,9 @@ module Fastlane
24
24
  UI.user_error!("Could not find the specified xcodeproj: #{xcodeproj_path}") unless File.directory?(xcodeproj_path)
25
25
  end
26
26
  else
27
+ all_xcodeproj_paths = Dir[File.expand_path(File.join(repo_path, '**/*.xcodeproj'))]
27
28
  # find an xcodeproj (ignoring the Cocoapods one)
28
- xcodeproj_paths = Dir[File.expand_path(File.join(repo_path, '**/*.xcodeproj'))].reject { |path| %r{Pods\/.*.xcodeproj} =~ path }
29
+ xcodeproj_paths = ignore_cocoapods_path(all_xcodeproj_paths)
29
30
 
30
31
  # no projects found: error
31
32
  UI.user_error!('Could not find a .xcodeproj in the current repository\'s working directory.') if xcodeproj_paths.count == 0
@@ -106,6 +107,10 @@ module Fastlane
106
107
  end
107
108
  end
108
109
 
110
+ def self.ignore_cocoapods_path(all_xcodeproj_paths)
111
+ all_xcodeproj_paths.reject { |path| %r{/Pods/[^/]*.xcodeproj} =~ path }
112
+ end
113
+
109
114
  def self.description
110
115
  "This will commit a version bump to the hg repo"
111
116
  end
@@ -4,12 +4,9 @@ module Fastlane
4
4
  module Actions
5
5
  class ImportCertificateAction < Action
6
6
  def self.run(params)
7
- command = "security import #{params[:certificate_path].shellescape} -k ~/Library/Keychains/#{params[:keychain_name].shellescape}"
8
- command << " -P #{params[:certificate_password].shellescape}" if params[:certificate_password]
9
- command << " -T /usr/bin/codesign"
10
- command << " -T /usr/bin/security"
7
+ keychain_path = File.expand_path(File.join("~", "Library", "Keychains", params[:keychain_name]))
11
8
 
12
- Fastlane::Actions.sh(command, log: params[:log_output])
9
+ FastlaneCore::KeychainImporter.import_file(params[:certificate_path], keychain_path, keychain_password: params[:keychain_password], certificate_password: params[:certificate_password], output: params[:log_output])
13
10
  end
14
11
 
15
12
  def self.description
@@ -22,11 +19,16 @@ module Fastlane
22
19
  env_name: "KEYCHAIN_NAME",
23
20
  description: "Keychain the items should be imported to",
24
21
  optional: false),
22
+ FastlaneCore::ConfigItem.new(key: :keychain_password,
23
+ env_name: "FL_IMPORT_CERT_KEYCHAIN_PASSWORD",
24
+ description: "The password for the keychain. Note that for the login keychain this is your user's password",
25
+ optional: true),
25
26
  FastlaneCore::ConfigItem.new(key: :certificate_path,
26
27
  description: "Path to certificate",
27
28
  optional: false),
28
29
  FastlaneCore::ConfigItem.new(key: :certificate_password,
29
30
  description: "Certificate password",
31
+ default_value: "",
30
32
  optional: true),
31
33
  FastlaneCore::ConfigItem.new(key: :log_output,
32
34
  description: "If output should be logged to the console",
@@ -4,9 +4,7 @@ module Fastlane
4
4
  def self.run(params)
5
5
  command = []
6
6
 
7
- if File.exist?("Gemfile") && params[:use_bundle_exec]
8
- command << "bundle exec"
9
- end
7
+ command << "bundle exec" if params[:use_bundle_exec] && shell_out_should_use_bundle_exec?
10
8
 
11
9
  command << "pod lib lint"
12
10
 
@@ -5,7 +5,7 @@ module Fastlane
5
5
  Actions.verify_gem!('cocoapods-keys')
6
6
  cmd = []
7
7
 
8
- cmd << ['bundle exec'] if File.exist?('Gemfile') && params[:use_bundle_exec]
8
+ cmd << ['bundle exec'] if params[:use_bundle_exec] && shell_out_should_use_bundle_exec?
9
9
  cmd << ['pod keys set']
10
10
 
11
11
  cmd << ["\"#{params[:key].shellescape}\""]
@@ -62,7 +62,7 @@ module Fastlane
62
62
 
63
63
  def self.build_command(params)
64
64
  command = []
65
- command.push("bundle exec") if params[:use_bundle_exec]
65
+ command.push("bundle exec") if params[:use_bundle_exec] && shell_out_should_use_bundle_exec?
66
66
  command << "slather coverage"
67
67
 
68
68
  ARGS_MAP.each do |key, cli_param|
@@ -61,7 +61,7 @@ module Fastlane
61
61
 
62
62
  def print_slow_fastlane_warning
63
63
  # `BUNDLE_BIN_PATH` is used when the user uses `bundle exec`
64
- return if ENV['BUNDLE_BIN_PATH'] || ENV['SKIP_SLOW_FASTLANE_WARNING']
64
+ return if ENV['BUNDLE_BIN_PATH'] || ENV['SKIP_SLOW_FASTLANE_WARNING'] || FastlaneCore::Helper.contained_fastlane?
65
65
 
66
66
  gemfile_path = PluginManager.new.gemfile_path
67
67
  if gemfile_path
@@ -188,6 +188,24 @@ module Fastlane
188
188
  end
189
189
  end
190
190
 
191
+ command :env do |c|
192
+ c.syntax = 'fastlane env'
193
+ c.description = 'Print your fastlane environment, use this when you submit an issue on GitHub'
194
+ c.action do |args, options|
195
+ require "fastlane/environment_printer"
196
+ Fastlane::EnvironmentPrinter.output
197
+ end
198
+ end
199
+
200
+ command :update_fastlane do |c|
201
+ c.syntax = 'fastlane update_fastlane'
202
+ c.description = 'Update fastlane to the latest release'
203
+ c.action do |args, options|
204
+ require 'fastlane/one_off'
205
+ Fastlane::OneOff.run(action: "update_fastlane", parameters: {})
206
+ end
207
+ end
208
+
191
209
  #####################################################
192
210
  # @!group Plugins
193
211
  #####################################################
@@ -244,15 +262,6 @@ module Fastlane
244
262
  end
245
263
  end
246
264
 
247
- command :env do |c|
248
- c.syntax = 'fastlane env'
249
- c.description = 'Print your fastlane environment, use this when you submit an issue on GitHub'
250
- c.action do |args, options|
251
- require "fastlane/environment_printer"
252
- Fastlane::EnvironmentPrinter.output
253
- end
254
- end
255
-
256
265
  default_command :trigger
257
266
  run!
258
267
  end
@@ -15,6 +15,7 @@ module Fastlane
15
15
  require "fastlane/markdown_table_formatter"
16
16
  env_output = ""
17
17
  env_output << print_system_environment
18
+ env_output << print_system_locale
18
19
  env_output << print_fastlane_files
19
20
  env_output << print_loaded_fastlane_gems
20
21
  env_output << print_loaded_plugins
@@ -128,6 +129,35 @@ module Fastlane
128
129
  return env_output
129
130
  end
130
131
 
132
+ def self.print_system_locale
133
+ env_output = "### System Locale\n\n"
134
+ found_one = false
135
+ env_table = ""
136
+ ["LANG", "LC_ALL", "LANGUAGE"].each do |e|
137
+ env_icon = "🚫"
138
+ if ENV[e] && ENV[e].end_with?("UTF-8")
139
+ env_icon = "✅"
140
+ found_one = true
141
+ end
142
+ if ENV[e].nil?
143
+ env_icon = ""
144
+ end
145
+ env_table << "| #{e} | #{ENV[e]} | #{env_icon} |\n"
146
+ end
147
+ if !found_one
148
+ table = "| Error |\n"
149
+ table << "|-----|\n"
150
+ table << "| No Locale with UTF8 found 🚫|\n"
151
+ else
152
+ table = "| Variable | Value | |\n"
153
+ table << "|-----|---------|----|\n"
154
+ table << env_table
155
+ end
156
+ rendered_table = MarkdownTableFormatter.new table
157
+ env_output << rendered_table.to_md
158
+ env_output << "\n\n"
159
+ end
160
+
131
161
  def self.print_system_environment
132
162
  require "openssl"
133
163
 
@@ -201,11 +231,8 @@ module Fastlane
201
231
  # Make sure to ask the user first, as some people don't
202
232
  # use a clipboard manager, so they might lose something important
203
233
  def self.copy_to_clipboard(string)
204
- require 'tempfile'
205
- Tempfile.create('environment_printer') do |tmp_file|
206
- File.write(tmp_file, string)
207
- `cat '#{tmp_file.path}' | pbcopy`
208
- end
234
+ require 'open3'
235
+ Open3.popen3('pbcopy') { |input, _, _| input << string }
209
236
  end
210
237
  end
211
238
  end
@@ -24,6 +24,12 @@ module Fastlane
24
24
  'you should turn off smart quotes in your editor of choice.'
25
25
  end
26
26
 
27
+ content.scan(/^\s*require (.*)/).each do |current|
28
+ gem_name = current.last
29
+ next if gem_name.include?(".") # these are local gems
30
+ UI.important("You require a gem, please call `fastlane_require #{gem_name}` before to ensure the gem is installed")
31
+ end
32
+
27
33
  parse(content, @path)
28
34
  end
29
35
 
@@ -179,6 +185,10 @@ module Fastlane
179
185
  @desc_collection ||= []
180
186
  end
181
187
 
188
+ def fastlane_require(gem_name)
189
+ FastlaneRequire.install_gem_if_needed(gem_name: gem_name, require_gem: true)
190
+ end
191
+
182
192
  def import(path = nil)
183
193
  UI.user_error!("Please pass a path to the `import` action") unless path
184
194
 
@@ -0,0 +1,33 @@
1
+ module Fastlane
2
+ class FastlaneRequire
3
+ class << self
4
+ def install_gem_if_needed(gem_name: nil, require_gem: true)
5
+ gem_require_name = gem_name.tr("-", "/") # from "fastlane-plugin-xcversion" to "fastlane/plugin/xcversion"
6
+ bundle_path = "~/.fastlane/bin/"
7
+
8
+ # check if it's installed
9
+ if gem_installed?(gem_name)
10
+ UI.success("gem '#{gem_name}' is already installed") if $verbose
11
+ require gem_require_name if require_gem
12
+ return true
13
+ end
14
+
15
+ require "rubygems/command_manager"
16
+ installer = Gem::CommandManager.instance[:install]
17
+
18
+ UI.important "Installing Ruby gem '#{gem_name}'..."
19
+ return if Helper.test?
20
+
21
+ # We install the gem like this because we also want to gem to be available to be required
22
+ # at this point. If we were to shell out, this wouldn't be the case
23
+ installer.install_gem(gem_name, Gem::Requirement.default)
24
+ UI.success("Successfully installed '#{gem_name}' to '#{bundle_path}'")
25
+ require gem_require_name if require_gem
26
+ end
27
+
28
+ def gem_installed?(name, req = Gem::Requirement.default)
29
+ Gem::Specification.any? { |s| s.name == name and req =~ s.version }
30
+ end
31
+ end
32
+ end
33
+ end
@@ -4,7 +4,7 @@ module Fastlane
4
4
  # this will *not* 'require' the gem
5
5
  def self.verify_gem!(gem_name)
6
6
  begin
7
- Gem::Specification.find_by_name(gem_name)
7
+ FastlaneRequire.install_gem_if_needed(gem_name: gem_name, require_gem: false)
8
8
  # We don't import this by default, as it's not always the same
9
9
  # also e.g. cocoapods is just required and not imported
10
10
  rescue Gem::LoadError
@@ -74,6 +74,7 @@ module Fastlane
74
74
  search_plugins
75
75
  help
76
76
  env
77
+ update_fastlane
77
78
  )
78
79
  end
79
80
 
@@ -273,7 +273,8 @@ module Fastlane
273
273
  # any actions were overwritten
274
274
  self.loaded_fastlane_actions.concat(Fastlane::Actions.constants)
275
275
 
276
- require gem_name.tr("-", "/") # from "fastlane-plugin-xcversion" to "fastlane/plugin/xcversion"
276
+ FastlaneRequire.install_gem_if_needed(gem_name: gem_name, require_gem: true)
277
+
277
278
  store_plugin_reference(gem_name)
278
279
  loaded_plugins = true
279
280
  rescue => ex
@@ -1,4 +1,4 @@
1
1
  module Fastlane
2
- VERSION = '1.107.0'.freeze
2
+ VERSION = '1.108.0'.freeze
3
3
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps"
4
4
  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: 1.107.0
4
+ version: 1.108.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Krause
@@ -15,7 +15,7 @@ authors:
15
15
  autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
- date: 2016-11-03 00:00:00.000000000 Z
18
+ date: 2016-11-10 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: krausefx-shenzhen
@@ -23,7 +23,7 @@ dependencies:
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.14.10
26
+ version: 0.14.11
27
27
  - - "<"
28
28
  - !ruby/object:Gem::Version
29
29
  version: 1.0.0
@@ -33,7 +33,7 @@ dependencies:
33
33
  requirements:
34
34
  - - ">="
35
35
  - !ruby/object:Gem::Version
36
- version: 0.14.10
36
+ version: 0.14.11
37
37
  - - "<"
38
38
  - !ruby/object:Gem::Version
39
39
  version: 1.0.0
@@ -225,7 +225,7 @@ dependencies:
225
225
  requirements:
226
226
  - - ">="
227
227
  - !ruby/object:Gem::Version
228
- version: 0.53.0
228
+ version: 0.55.0
229
229
  - - "<"
230
230
  - !ruby/object:Gem::Version
231
231
  version: 1.0.0
@@ -235,7 +235,7 @@ dependencies:
235
235
  requirements:
236
236
  - - ">="
237
237
  - !ruby/object:Gem::Version
238
- version: 0.53.0
238
+ version: 0.55.0
239
239
  - - "<"
240
240
  - !ruby/object:Gem::Version
241
241
  version: 1.0.0
@@ -379,7 +379,7 @@ dependencies:
379
379
  requirements:
380
380
  - - ">="
381
381
  - !ruby/object:Gem::Version
382
- version: 1.4.3
382
+ version: 1.4.4
383
383
  - - "<"
384
384
  - !ruby/object:Gem::Version
385
385
  version: 2.0.0
@@ -389,7 +389,7 @@ dependencies:
389
389
  requirements:
390
390
  - - ">="
391
391
  - !ruby/object:Gem::Version
392
- version: 1.4.3
392
+ version: 1.4.4
393
393
  - - "<"
394
394
  - !ruby/object:Gem::Version
395
395
  version: 2.0.0
@@ -479,7 +479,7 @@ dependencies:
479
479
  requirements:
480
480
  - - ">="
481
481
  - !ruby/object:Gem::Version
482
- version: 0.14.0
482
+ version: 0.14.1
483
483
  - - "<"
484
484
  - !ruby/object:Gem::Version
485
485
  version: 1.0.0
@@ -489,7 +489,7 @@ dependencies:
489
489
  requirements:
490
490
  - - ">="
491
491
  - !ruby/object:Gem::Version
492
- version: 0.14.0
492
+ version: 0.14.1
493
493
  - - "<"
494
494
  - !ruby/object:Gem::Version
495
495
  version: 1.0.0
@@ -519,7 +519,7 @@ dependencies:
519
519
  requirements:
520
520
  - - ">="
521
521
  - !ruby/object:Gem::Version
522
- version: 0.10.0
522
+ version: 0.11.0
523
523
  - - "<"
524
524
  - !ruby/object:Gem::Version
525
525
  version: 1.0.0
@@ -529,7 +529,7 @@ dependencies:
529
529
  requirements:
530
530
  - - ">="
531
531
  - !ruby/object:Gem::Version
532
- version: 0.10.0
532
+ version: 0.11.0
533
533
  - - "<"
534
534
  - !ruby/object:Gem::Version
535
535
  version: 1.0.0
@@ -940,6 +940,7 @@ files:
940
940
  - lib/fastlane/erb_template_helper.rb
941
941
  - lib/fastlane/fast_file.rb
942
942
  - lib/fastlane/fastlane_folder.rb
943
+ - lib/fastlane/fastlane_require.rb
943
944
  - lib/fastlane/features.rb
944
945
  - lib/fastlane/helper/README.md
945
946
  - lib/fastlane/helper/adb_helper.rb