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 +4 -4
- data/README.md +2 -2
- data/lib/.DS_Store +0 -0
- data/lib/fastlane/.DS_Store +0 -0
- data/lib/fastlane/actions/actions_helper.rb +13 -0
- data/lib/fastlane/actions/add_git_tag.rb +16 -4
- data/lib/fastlane/actions/clipboard.rb +1 -1
- data/lib/fastlane/actions/copy_artifacts.rb +7 -4
- data/lib/fastlane/actions/default_platform.rb +1 -1
- data/lib/fastlane/actions/notification.rb +1 -1
- data/lib/fastlane/actions/notify.rb +1 -1
- data/lib/fastlane/actions/update_project_provisioning.rb +1 -1
- data/lib/fastlane/cli_tools_distributor.rb +43 -1
- data/lib/fastlane/fast_file.rb +5 -0
- data/lib/fastlane/lane.rb +27 -3
- data/lib/fastlane/one_off.rb +2 -5
- data/lib/fastlane/plugins/.DS_Store +0 -0
- data/lib/fastlane/plugins/template/.travis.yml +1 -1
- data/lib/fastlane/plugins/template/README.md.erb +1 -1
- data/lib/fastlane/plugins/template/circle.yml +1 -1
- data/lib/fastlane/runner.rb +1 -6
- data/lib/fastlane/setup/crashlytics_beta.rb +7 -4
- data/lib/fastlane/version.rb +1 -1
- metadata +11 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1f16378edbabcd69c5f903140420acfe44d166c7
|
4
|
+
data.tar.gz: 90af73d800d00489162497032aebb4d9de19e248
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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
|
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.
|
data/lib/.DS_Store
ADDED
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(
|
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.
|
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
|
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(
|
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 #{
|
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,
|
35
|
+
FileUtils.cp_r(artifacts, target_path, remove_destination: true)
|
33
36
|
else
|
34
|
-
FileUtils.mv(artifacts,
|
37
|
+
FileUtils.mv(artifacts, target_path, force: true)
|
35
38
|
end
|
36
39
|
|
37
40
|
UI.success('Build artifacts successfully copied!')
|
@@ -5,7 +5,13 @@ module Fastlane
|
|
5
5
|
class CLIToolsDistributor
|
6
6
|
class << self
|
7
7
|
def take_off
|
8
|
-
|
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
|
data/lib/fastlane/fast_file.rb
CHANGED
@@ -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
|
data/lib/fastlane/lane.rb
CHANGED
@@ -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
|
46
|
-
UI.user_error!("
|
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(
|
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
|
data/lib/fastlane/one_off.rb
CHANGED
@@ -26,11 +26,8 @@ module Fastlane
|
|
26
26
|
def self.run(action: nil, parameters: nil)
|
27
27
|
Fastlane.load_actions
|
28
28
|
|
29
|
-
|
30
|
-
class_ref
|
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"))
|
Binary file
|
data/lib/fastlane/runner.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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:
|
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
|
-
|
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:
|
97
|
+
notifications: true
|
95
98
|
)
|
96
99
|
end
|
97
100
|
end
|
data/lib/fastlane/version.rb
CHANGED
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.
|
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-
|
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:
|
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:
|
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.
|
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.
|
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.
|
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.
|
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
|