fastlane 1.97.2 → 1.98.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: 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