fastlane 1.97.2 → 1.98.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 69d51cfc3b555585339e94d8352924b7bdc33b81
4
- data.tar.gz: ede49f2e297c9ebd7c7dfd28a943e8b6ffbdd262
3
+ metadata.gz: 1f16378edbabcd69c5f903140420acfe44d166c7
4
+ data.tar.gz: 90af73d800d00489162497032aebb4d9de19e248
5
5
  SHA512:
6
- metadata.gz: 5715ad6f20ca53143bcd2ccf94b5ef8c12ddd4e840868107cb84b024af3532187fab94bdee41b6da6d38e718f63962564c1dc9ba871e2f40fe337ae4fdf50e06
7
- data.tar.gz: 3e55d48458fc84a7bb9cfd21954da963152080723e2bb4583c1f047f40f48dc18045150dee2508786327e98942137ffb94be0a868eec2066149bf6dfcb0bed07
6
+ metadata.gz: 5f7c8aa76a5b2afe13d06a363e0c2f1dbedebf0b759d3e58df24c62930724be515f3e561f9a522023b5beef08a1eb47405ab1b352402c2b3a2f98e8c4716888a
7
+ data.tar.gz: acfa0f72deaf2f82735844cc9a0e124e0c36c20cd9d71a2e1231980f90a8e424fdf5f9abc0e5812352bfb3cdd3b4df7fc47270bcf7204ae7157067067e2d56c8
data/README.md CHANGED
@@ -89,7 +89,7 @@ fastlane appstore
89
89
  :mountain_cableway: | Implement a fully working Continuous Delivery process
90
90
  :ghost: | [Jenkins Integration](https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Jenkins.md): Show the output directly in the Jenkins test results
91
91
  :book: | Automatically generate a markdown documentation of your lane config
92
- :hatching_chick: | Over 150 built-in integrations available
92
+ :hatching_chick: | Over 170 built-in integrations available
93
93
  :computer: | Support for both iOS, Mac OS and Android apps
94
94
  :octocat: | Full git and mercurial support
95
95
 
@@ -114,7 +114,7 @@ If you experience slow launch times of fastlane, try running
114
114
 
115
115
  to clean up outdated gems.
116
116
 
117
- System Requirements: `fastlane` requires Mac OS X or Linux with Ruby 2.0.0 or above.
117
+ System Requirements: `fastlane` requires macOS or Linux with Ruby 2.0.0 or above.
118
118
 
119
119
 
120
120
  If you want to take a look at a project, already using `fastlane`, check out the [fastlane-examples](https://github.com/fastlane/examples) with `fastlane` setups by Wikipedia, Product Hunt, MindNode and more.
Binary file
Binary file
@@ -61,6 +61,19 @@ module Fastlane
61
61
  end
62
62
  # rubocop:enable Style/AccessorMethodName
63
63
 
64
+ # Returns the class ref to the action based on the action name
65
+ # Returns nil if the action is not aailable
66
+ def self.action_class_ref(action_name)
67
+ class_name = action_name.to_s.fastlane_class + 'Action'
68
+ class_ref = nil
69
+ begin
70
+ class_ref = Fastlane::Actions.const_get(class_name)
71
+ rescue NameError
72
+ return nil
73
+ end
74
+ return class_ref
75
+ end
76
+
64
77
  def self.load_default_actions
65
78
  Dir[File.expand_path('*.rb', File.dirname(__FILE__))].each do |file|
66
79
  require file
@@ -8,8 +8,14 @@ module Fastlane
8
8
  tag = options[:tag] || "#{options[:grouping]}/#{lane_name}/#{options[:prefix]}#{options[:build_number]}"
9
9
  message = options[:message] || "#{tag} (fastlane)"
10
10
 
11
+ cmd = ['git tag']
12
+
13
+ cmd << ["-am #{message.shellescape}"]
14
+ cmd << '--force' if options[:force]
15
+ cmd << "'#{tag}'"
16
+
11
17
  UI.message "Adding git tag '#{tag}' 🎯."
12
- Actions.sh("git tag -am #{message.shellescape} '#{tag}'")
18
+ Actions.sh(cmd.join(' '))
13
19
  end
14
20
 
15
21
  def self.description
@@ -38,12 +44,18 @@ module Fastlane
38
44
  FastlaneCore::ConfigItem.new(key: :message,
39
45
  env_name: "FL_GIT_TAG_MESSAGE",
40
46
  description: "The tag message. Defaults to the tag's name",
41
- optional: true)
47
+ optional: true),
48
+ FastlaneCore::ConfigItem.new(key: :force,
49
+ env_name: "FL_GIT_TAG_FORCE",
50
+ description: "Force adding the tag",
51
+ optional: true,
52
+ is_string: false,
53
+ default_value: false)
42
54
  ]
43
55
  end
44
56
 
45
- def self.author
46
- "lmirosevic"
57
+ def self.authors
58
+ ["lmirosevic", "maschall"]
47
59
  end
48
60
 
49
61
  def self.is_supported?(platform)
@@ -12,7 +12,7 @@ module Fastlane
12
12
  #####################################################
13
13
 
14
14
  def self.description
15
- "Copies a given string into the clipboard. Works only on Mac OS X computers"
15
+ "Copies a given string into the clipboard. Works only on macOS"
16
16
  end
17
17
 
18
18
  def self.available_options
@@ -5,8 +5,11 @@ module Fastlane
5
5
  module Actions
6
6
  class CopyArtifactsAction < Action
7
7
  def self.run(params)
8
+ # expand the path to make sure we can deal with relative paths
9
+ target_path = File.expand_path(params[:target_path])
10
+
8
11
  # we want to make sure that our target folder exist already
9
- FileUtils.mkdir_p(params[:target_path])
12
+ FileUtils.mkdir_p(target_path)
10
13
 
11
14
  # Ensure that artifacts is an array
12
15
  artifacts_to_search = [params[:artifacts]].flatten
@@ -17,7 +20,7 @@ module Fastlane
17
20
  # Lastly, we shell escape everything in case they contain incompatible symbols (e.g. spaces)
18
21
  artifacts = artifacts_to_search.map { |f| f.include?("*") ? Dir.glob(f) : f }.flatten.map(&:shellescape)
19
22
 
20
- UI.verbose("Copying artifacts #{artifacts.join(', ')} to #{params[:target_path]}")
23
+ UI.verbose("Copying artifacts #{artifacts.join(', ')} to #{target_path}")
21
24
  UI.verbose(params[:keep_original] ? "Keeping original files" : "Not keeping original files")
22
25
 
23
26
  if params[:fail_on_missing]
@@ -29,9 +32,9 @@ module Fastlane
29
32
  end
30
33
 
31
34
  if params[:keep_original]
32
- FileUtils.cp_r(artifacts, params[:target_path], remove_destination: true)
35
+ FileUtils.cp_r(artifacts, target_path, remove_destination: true)
33
36
  else
34
- FileUtils.mv(artifacts, params[:target_path], force: true)
37
+ FileUtils.mv(artifacts, target_path, force: true)
35
38
  end
36
39
 
37
40
  UI.success('Build artifacts successfully copied!')
@@ -10,7 +10,7 @@ module Fastlane
10
10
 
11
11
  platform = params.first.to_sym
12
12
 
13
- SupportedPlatforms.verify! platform
13
+ SupportedPlatforms.verify!(platform)
14
14
 
15
15
  Actions.lane_context[SharedValues::DEFAULT_PLATFORM] = platform
16
16
  end
@@ -18,7 +18,7 @@ module Fastlane
18
18
  end
19
19
 
20
20
  def self.description
21
- "Display a Mac OS X notification with custom message and title"
21
+ "Display a macOS notification with custom message and title"
22
22
  end
23
23
 
24
24
  def self.author
@@ -10,7 +10,7 @@ module Fastlane
10
10
  end
11
11
 
12
12
  def self.description
13
- "Shows a Mac OS X notification"
13
+ "Shows a macOS notification"
14
14
  end
15
15
 
16
16
  def self.author
@@ -74,7 +74,7 @@ module Fastlane
74
74
  end
75
75
 
76
76
  def self.description
77
- "Update projects code signing settings from your profisioning profile"
77
+ "Update projects code signing settings from your provisioning profile"
78
78
  end
79
79
 
80
80
  def self.details
@@ -5,7 +5,13 @@ module Fastlane
5
5
  class CLIToolsDistributor
6
6
  class << self
7
7
  def take_off
8
- require "fastlane"
8
+ before_import_time = Time.now
9
+
10
+ require "fastlane" # this might take a long time if there is no Gemfile :(
11
+
12
+ if Time.now - before_import_time > 3
13
+ print_slow_fastlane_warning
14
+ end
9
15
 
10
16
  # Array of symbols for the names of the available lanes
11
17
  # This doesn't actually use the Fastfile parser, but only
@@ -47,6 +53,42 @@ module Fastlane
47
53
  Fastlane::CommandsGenerator.start
48
54
  end
49
55
  end
56
+
57
+ def print_slow_fastlane_warning
58
+ return if ENV['BUNDLE_BIN_PATH'] # `BUNDLE_BIN_PATH` is used when the user uses `bundle exec`
59
+
60
+ gemfile_path = PluginManager.new.gemfile_path
61
+ if gemfile_path
62
+ # The user has a Gemfile, but fastlane is still slow
63
+ # Let's tell the user how to use `bundle exec`
64
+ UI.important "Seems like launching fastlane takes a while"
65
+ UI.important "fastlane detected a Gemfile in this directory"
66
+ UI.important "however it seems like you don't use `bundle exec`"
67
+ UI.important "to launch fastlane faster, please use"
68
+ UI.message ""
69
+ UI.command "bundle exec fastlane #{ARGV.join(' ')}"
70
+ else
71
+ # fastlane is slow and there is no Gemfile
72
+ # Let's tell the user how to use `gem cleanup` and how to
73
+ # start using a Gemfile
74
+ UI.important "Seems like launching fastlane takes a while - please run"
75
+ UI.message ""
76
+ UI.command "[sudo] gem cleanup"
77
+ UI.message ""
78
+ UI.important "to uninstall outdated gems and make fastlane launch faster"
79
+ UI.important "Alternatively it's recommended to start using a Gemfile to lock your dependencies"
80
+ UI.important "To get started with a Gemfile, run"
81
+ UI.message ""
82
+ UI.command "bundle init"
83
+ UI.command "echo 'gem \"fastlane\"' >> Gemfile"
84
+ UI.command "bundle install"
85
+ UI.message ""
86
+ UI.important "After creating the Gemfile and Gemfile.lock, commit those files into version control"
87
+ end
88
+ UI.important "For more information, check out https://guides.cocoapods.org/using/a-gemfile.html"
89
+
90
+ sleep 1
91
+ end
50
92
  end
51
93
  end
52
94
  end
@@ -264,5 +264,10 @@ module Fastlane
264
264
  collector.did_launch_action(:puts)
265
265
  Fastlane::Actions::PutsAction.run([value])
266
266
  end
267
+
268
+ def test(params = {})
269
+ # Overwrite this, since there is already a 'test' method defined in the Ruby standard library
270
+ self.runner.try_switch_to_lane(:test, [params])
271
+ end
267
272
  end
268
273
  end
@@ -42,8 +42,8 @@ module Fastlane
42
42
  # Makes sure the lane name is valid
43
43
  def verify_lane_name(name)
44
44
  if self.black_list.include?(name.to_s)
45
- UI.error "Lane Name '#{name}' can not be one of the followings: #{self.black_list}"
46
- UI.user_error!("Name '#{name}' is already taken")
45
+ UI.error "Lane name '#{name}' is invalid! Invalid names are #{self.black_list.join(', ')}."
46
+ UI.user_error!("Lane name '#{name}' is invalid")
47
47
  end
48
48
 
49
49
  if self.gray_list.include?(name.to_sym)
@@ -52,15 +52,39 @@ module Fastlane
52
52
  # We still allow it, because we're nice
53
53
  # Otherwise we might break existing setups
54
54
  end
55
+
56
+ self.ensure_name_not_conflicts(name.to_s)
55
57
  end
56
58
 
57
59
  def black_list
58
- %w(run init new_action lanes list docs action actions enable_auto_complete new_plugin add_plugin install_plugins update_plugins search_plugins help)
60
+ %w(
61
+ run
62
+ init
63
+ new_action
64
+ lanes
65
+ list
66
+ docs
67
+ action
68
+ actions
69
+ enable_auto_complete
70
+ new_plugin
71
+ add_plugin
72
+ install_plugins
73
+ update_plugins
74
+ search_plugins
75
+ help
76
+ )
59
77
  end
60
78
 
61
79
  def gray_list
62
80
  Fastlane::TOOLS
63
81
  end
82
+
83
+ def ensure_name_not_conflicts(name)
84
+ # First, check if there is a predefined method in the actions folder
85
+ return unless Actions.action_class_ref(name)
86
+ UI.error("Name of the lane '#{name}' is already taken by the action named '#{name}'")
87
+ end
64
88
  end
65
89
  end
66
90
  end
@@ -26,11 +26,8 @@ module Fastlane
26
26
  def self.run(action: nil, parameters: nil)
27
27
  Fastlane.load_actions
28
28
 
29
- class_name = action.fastlane_class + 'Action'
30
- class_ref = nil
31
- begin
32
- class_ref = Fastlane::Actions.const_get(class_name)
33
- rescue NameError
29
+ class_ref = Actions.action_class_ref(action)
30
+ unless class_ref
34
31
  if Fastlane::Actions.formerly_bundled_actions.include?(action)
35
32
  # This was a formerly bundled action which is now a plugin.
36
33
  UI.verbose(caller.join("\n"))
@@ -1,4 +1,4 @@
1
- # os: osx # enable this if you need OS X support
1
+ # os: osx # enable this if you need macOS support
2
2
  language: ruby
3
3
  rvm:
4
4
  - 2.2.4
@@ -26,7 +26,7 @@ Check out the [example `Fastfile`](fastlane/Fastfile) to see how to use this plu
26
26
 
27
27
  To run both the tests, and code style validation, run
28
28
 
29
- ````
29
+ ```
30
30
  rake
31
31
  ```
32
32
 
@@ -4,6 +4,6 @@ test:
4
4
  machine:
5
5
  ruby:
6
6
  version: 2.2.4
7
- # Enable xcode below if you need OS X
7
+ # Enable xcode below if you need macOS
8
8
  # xcode:
9
9
  # version: "7.3"
@@ -91,12 +91,7 @@ module Fastlane
91
91
  method_str.delete!('?') # as a `?` could be at the end of the method name
92
92
 
93
93
  # First, check if there is a predefined method in the actions folder
94
- class_name = method_str.fastlane_class + 'Action'
95
- class_ref = nil
96
- begin
97
- class_ref = Fastlane::Actions.const_get(class_name)
98
- rescue NameError
99
- end
94
+ class_ref = Actions.action_class_ref(method_str)
100
95
 
101
96
  # It's important to *not* have this code inside the rescue block
102
97
  # otherwise all NameErrors will be caught and the error message is
@@ -30,6 +30,7 @@ module Fastlane
30
30
  UI.crash!("No project available at path #{path}") unless File.exist?(path)
31
31
  xcode_project = Xcodeproj::Project.open(path)
32
32
  target = xcode_project.targets.find { |t| t.name == target_name }
33
+ UI.crash!("Unable to locate a target by the name of #{target_name}") if target.nil?
33
34
  scripts = target.build_phases.select { |t| t.class == Xcodeproj::Project::Object::PBXShellScriptBuildPhase }
34
35
  crash_script = scripts.find { |s| includes_run_script?(s.shell_script) }
35
36
  UI.user_error!("Unable to find Crashlytics Run Script Build Phase") if crash_script.nil?
@@ -73,10 +74,11 @@ module Fastlane
73
74
  def lane_template(api_key, build_secret, scheme)
74
75
  %{
75
76
  lane :beta do
76
- gym(scheme: '#{scheme}')
77
+ # set 'export_method' to 'ad-hoc' if your Crashlytics Beta distribution uses ad-hoc provisioning
78
+ gym(scheme: '#{scheme}', export_method: 'development')
77
79
  crashlytics(api_token: '#{api_key}',
78
80
  build_secret: '#{build_secret}',
79
- notifications: false
81
+ notifications: true
80
82
  )
81
83
  end
82
84
  }
@@ -88,10 +90,11 @@ fastlane_version "#{Fastlane::VERSION}"
88
90
  default_platform :ios
89
91
  platform :ios do
90
92
  lane :beta do
91
- gym(scheme: '#{scheme}')
93
+ # set 'export_method' to 'ad-hoc' if your Crashlytics Beta distribution uses ad-hoc provisioning
94
+ gym(scheme: '#{scheme}', export_method: 'development')
92
95
  crashlytics(api_token: '#{api_key}',
93
96
  build_secret: '#{build_secret}',
94
- notifications: false
97
+ notifications: true
95
98
  )
96
99
  end
97
100
  end
@@ -1,4 +1,4 @@
1
1
  module Fastlane
2
- VERSION = '1.97.2'.freeze
2
+ VERSION = '1.98.0'.freeze
3
3
  DESCRIPTION = "The easiest way to automate building and releasing 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.97.2
4
+ version: 1.98.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-07-02 00:00:00.000000000 Z
18
+ date: 2016-07-18 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: krausefx-shenzhen
@@ -155,14 +155,14 @@ dependencies:
155
155
  requirements:
156
156
  - - "~>"
157
157
  - !ruby/object:Gem::Version
158
- version: 1.4.0
158
+ version: 2.0.0
159
159
  type: :runtime
160
160
  prerelease: false
161
161
  version_requirements: !ruby/object:Gem::Requirement
162
162
  requirements:
163
163
  - - "~>"
164
164
  - !ruby/object:Gem::Version
165
- version: 1.4.0
165
+ version: 2.0.0
166
166
  - !ruby/object:Gem::Dependency
167
167
  name: word_wrap
168
168
  requirement: !ruby/object:Gem::Requirement
@@ -237,7 +237,7 @@ dependencies:
237
237
  requirements:
238
238
  - - ">="
239
239
  - !ruby/object:Gem::Version
240
- version: 0.27.2
240
+ version: 0.28.0
241
241
  - - "<"
242
242
  - !ruby/object:Gem::Version
243
243
  version: 1.0.0
@@ -247,7 +247,7 @@ dependencies:
247
247
  requirements:
248
248
  - - ">="
249
249
  - !ruby/object:Gem::Version
250
- version: 0.27.2
250
+ version: 0.28.0
251
251
  - - "<"
252
252
  - !ruby/object:Gem::Version
253
253
  version: 1.0.0
@@ -397,7 +397,7 @@ dependencies:
397
397
  requirements:
398
398
  - - ">="
399
399
  - !ruby/object:Gem::Version
400
- version: 1.6.3
400
+ version: 1.7.0
401
401
  - - "<"
402
402
  - !ruby/object:Gem::Version
403
403
  version: 2.0.0
@@ -407,7 +407,7 @@ dependencies:
407
407
  requirements:
408
408
  - - ">="
409
409
  - !ruby/object:Gem::Version
410
- version: 1.6.3
410
+ version: 1.7.0
411
411
  - - "<"
412
412
  - !ruby/object:Gem::Version
413
413
  version: 2.0.0
@@ -693,6 +693,7 @@ files:
693
693
  - README.md
694
694
  - bin/fastlane
695
695
  - "bin/\U0001F680"
696
+ - lib/.DS_Store
696
697
  - lib/assets/AppfileTemplate
697
698
  - lib/assets/AppfileTemplateAndroid
698
699
  - lib/assets/AvailablePlugins.md.erb
@@ -708,6 +709,7 @@ files:
708
709
  - lib/assets/s3_plist_template.erb
709
710
  - lib/assets/s3_version_template.erb
710
711
  - lib/fastlane.rb
712
+ - lib/fastlane/.DS_Store
711
713
  - lib/fastlane/action.rb
712
714
  - lib/fastlane/action_collector.rb
713
715
  - lib/fastlane/actions/README.md
@@ -911,6 +913,7 @@ files:
911
913
  - lib/fastlane/new_action.rb
912
914
  - lib/fastlane/one_off.rb
913
915
  - lib/fastlane/other_action.rb
916
+ - lib/fastlane/plugins/.DS_Store
914
917
  - lib/fastlane/plugins/plugin_fetcher.rb
915
918
  - lib/fastlane/plugins/plugin_generator.rb
916
919
  - lib/fastlane/plugins/plugin_generator_ui.rb