fastlane 1.83.0 → 1.84.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/fastlane +4 -176
- data/bin//360/237/232/200 +6 -0
- data/lib/fastlane.rb +2 -2
- data/lib/fastlane/action_collector.rb +8 -59
- data/lib/fastlane/actions/make_changelog_from_jenkins.rb +9 -4
- data/lib/fastlane/actions/pod_lib_lint.rb +84 -0
- data/lib/fastlane/actions/testfairy.rb +11 -2
- data/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +1 -1
- data/lib/fastlane/commands_generator.rb +177 -0
- data/lib/fastlane/lane_manager.rb +1 -1
- data/lib/fastlane/version.rb +2 -1
- metadata +16 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1bb9bbb192fbf3dbd714c7f8f9eb75f60d2796e0
|
4
|
+
data.tar.gz: 2d99a2bff9ba0ef2292b9e0e9f2542b8c12f36f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7d54ef40ffe53354560372fab441d084edebf43e817d817b7c286d821ac6eca5f29d7a4246e6d2483d2c5ed7f20befc19b405754b4889438b85f31f233ce821a
|
7
|
+
data.tar.gz: 765d86e6d751848d7bb27a3147202de3ae0987112227372bce3ece0bab577f9c61d3daa99aa47abe6f9f38a9662ac656a24b564e3b8864218357b7319638f173
|
data/bin/fastlane
CHANGED
@@ -1,178 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
2
|
+
$LOAD_PATH.push File.expand_path("../../lib", __FILE__)
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
require 'commander'
|
8
|
-
require 'fastlane/new_action'
|
9
|
-
|
10
|
-
HighLine.track_eof = false
|
11
|
-
|
12
|
-
class FastlaneApplication
|
13
|
-
include Commander::Methods
|
14
|
-
UI = FastlaneCore::UI
|
15
|
-
|
16
|
-
def run
|
17
|
-
program :version, Fastlane::VERSION
|
18
|
-
program :description, [
|
19
|
-
"CLI for 'fastlane' - Connect all iOS deployment tools into one streamlined workflow.\n",
|
20
|
-
"\tRun using `fastlane [platform] [lane_name]`",
|
21
|
-
"\tTo pass values to the lanes use `fastlane [platform] [lane_name] key:value key2:value2`"].join("\n")
|
22
|
-
program :help, 'Author', 'Felix Krause <fastlane@krausefx.com>'
|
23
|
-
program :help, 'Website', 'https://fastlane.tools'
|
24
|
-
program :help, 'GitHub', 'https://github.com/fastlane/fastlane'
|
25
|
-
program :help_formatter, :compact
|
26
|
-
|
27
|
-
global_option('--verbose') { $verbose = true }
|
28
|
-
|
29
|
-
always_trace!
|
30
|
-
|
31
|
-
command :trigger do |c|
|
32
|
-
c.syntax = 'fastlane [lane]'
|
33
|
-
c.description = 'Drive the fastlane for a specific environment. Pass the lane name and optionally the platform first'
|
34
|
-
c.option '--env STRING', String, 'Add environment to use with `dotenv`'
|
35
|
-
|
36
|
-
c.action do |args, options|
|
37
|
-
if Fastlane::FastlaneFolder.setup?
|
38
|
-
Fastlane::CommandLineHandler.handle(args, options)
|
39
|
-
else
|
40
|
-
create = agree('Could not find fastlane in current directory. Would you like to set it up? (y/n)'.yellow, true)
|
41
|
-
Fastlane::Setup.new.run if create
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
command :init do |c|
|
47
|
-
c.syntax = 'fastlane init'
|
48
|
-
c.description = 'Helps you with your initial fastlane setup'
|
49
|
-
|
50
|
-
c.action do |args, options|
|
51
|
-
Fastlane::Setup.new.run
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
command :new_action do |c|
|
56
|
-
c.syntax = 'fastlane new_action'
|
57
|
-
c.description = 'Create a new custom action for fastlane.'
|
58
|
-
|
59
|
-
c.option '--name STRING', String, 'Name of your new action'
|
60
|
-
|
61
|
-
c.action do |args, options|
|
62
|
-
Fastlane::NewAction.run(new_action_name: options.name)
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
command :lanes do |c|
|
67
|
-
c.syntax = 'fastlane lanes'
|
68
|
-
c.description = 'Lists all available lanes and shows their description'
|
69
|
-
c.option "-j", "--json", "Output the lanes in JSON instead of text"
|
70
|
-
|
71
|
-
c.action do |args, options|
|
72
|
-
require 'fastlane/lane_list'
|
73
|
-
path = File.join(Fastlane::FastlaneFolder.path || '.', 'Fastfile')
|
74
|
-
|
75
|
-
if options.json
|
76
|
-
Fastlane::LaneList.output_json(path)
|
77
|
-
else
|
78
|
-
Fastlane::LaneList.output(path)
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
command :list do |c|
|
84
|
-
c.syntax = 'fastlane list'
|
85
|
-
c.description = 'Lists all available lanes without description'
|
86
|
-
c.action do |args, options|
|
87
|
-
ff = Fastlane::FastFile.new(File.join(Fastlane::FastlaneFolder.path || '.', 'Fastfile'))
|
88
|
-
UI.message "Available lanes:"
|
89
|
-
ff.runner.available_lanes.each do |lane|
|
90
|
-
UI.message "- #{lane}"
|
91
|
-
end
|
92
|
-
UI.important "Execute using `fastlane [lane_name]`"
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
command :docs do |c|
|
97
|
-
c.syntax = 'fastlane docs'
|
98
|
-
c.description = 'Generate a markdown based documentation based on the Fastfile'
|
99
|
-
c.option '-f', '--force', 'Overwrite the existing README.md in the ./fastlane folder'
|
100
|
-
|
101
|
-
c.action do |args, options|
|
102
|
-
ff = Fastlane::FastFile.new(File.join(Fastlane::FastlaneFolder.path || '.', 'Fastfile'))
|
103
|
-
FastlaneCore::Helper.log.info "You don't need to run `fastlane docs` manually any more, this will be done automatically for you."
|
104
|
-
Fastlane::DocsGenerator.run(ff)
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
command :run do |c|
|
109
|
-
c.syntax = 'fastlane run [action] key1:value1 key2:value2'
|
110
|
-
c.description = 'Run a fastlane one-off action without a full lane'
|
111
|
-
|
112
|
-
c.action do |args, options|
|
113
|
-
require 'fastlane/one_off'
|
114
|
-
result = Fastlane::OneOff.execute(args: args)
|
115
|
-
UI.success "Result: #{result}" if result
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
command :actions do |c|
|
120
|
-
c.syntax = 'fastlane actions'
|
121
|
-
c.description = 'Lists all available fastlane actions'
|
122
|
-
|
123
|
-
c.option '--platform STRING', String, 'Only show actions available on the given platform'
|
124
|
-
|
125
|
-
c.action do |args, options|
|
126
|
-
require 'fastlane/documentation/actions_list'
|
127
|
-
Fastlane::ActionsList.run(filter: args.first, platform: options.platform)
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
command :action do |c|
|
132
|
-
c.syntax = 'fastlane action [tool_name]'
|
133
|
-
c.description = 'Shows more information for a specific command'
|
134
|
-
c.action do |args, options|
|
135
|
-
require 'fastlane/documentation/actions_list'
|
136
|
-
Fastlane::ActionsList.run(filter: args.first)
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
command :enable_crash_reporting do |c|
|
141
|
-
c.syntax = 'fastlane enable_crash_reporting'
|
142
|
-
c.description = 'Enable crash reporting to improve fastlane'
|
143
|
-
c.action do |args, options|
|
144
|
-
FastlaneCore::CrashReporting.enable
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
command :disable_crash_reporting do |c|
|
149
|
-
c.syntax = 'fastlane disable_crash_reporting'
|
150
|
-
c.description = 'Disable crash reporting'
|
151
|
-
c.action do |args, options|
|
152
|
-
FastlaneCore::CrashReporting.disable
|
153
|
-
end
|
154
|
-
end
|
155
|
-
|
156
|
-
command :enable_auto_complete do |c|
|
157
|
-
c.syntax = 'fastlane enable_auto_complete'
|
158
|
-
c.description = 'Enable tab auto completion'
|
159
|
-
|
160
|
-
c.action do |args, options|
|
161
|
-
require 'fastlane/auto_complete'
|
162
|
-
Fastlane::AutoComplete.execute
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
default_command :trigger
|
167
|
-
|
168
|
-
run!
|
169
|
-
end
|
170
|
-
end
|
171
|
-
|
172
|
-
begin
|
173
|
-
FastlaneCore::UpdateChecker.start_looking_for_update('fastlane')
|
174
|
-
FastlaneApplication.new.run
|
175
|
-
ensure
|
176
|
-
FastlaneCore::UpdateChecker.show_update_status('fastlane', Fastlane::VERSION)
|
177
|
-
end
|
178
|
-
# rubocop:enable Metrics/AbcSize
|
4
|
+
require "fastlane"
|
5
|
+
require "fastlane/commands_generator"
|
6
|
+
Fastlane::CommandsGenerator.start
|
data/lib/fastlane.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'fastlane_core'
|
2
|
+
|
1
3
|
require 'fastlane/core_ext/string' # this has to be above most of the other requires
|
2
4
|
require 'fastlane/version'
|
3
5
|
require 'fastlane/actions/actions_helper' # has to be before fast_file
|
@@ -15,8 +17,6 @@ require 'fastlane/configuration_helper'
|
|
15
17
|
require 'fastlane/command_line_handler'
|
16
18
|
require 'fastlane/documentation/docs_generator'
|
17
19
|
|
18
|
-
require 'fastlane_core'
|
19
|
-
|
20
20
|
module Fastlane
|
21
21
|
Helper = FastlaneCore::Helper # you gotta love Ruby: Helper.* should use the Helper class contained in FastlaneCore
|
22
22
|
UI = FastlaneCore::UI
|
@@ -1,68 +1,17 @@
|
|
1
1
|
module Fastlane
|
2
|
-
class ActionCollector
|
3
|
-
HOST_URL = "https://fastlane-enhancer.herokuapp.com/"
|
4
|
-
|
5
|
-
def did_launch_action(name)
|
6
|
-
if is_official?(name)
|
7
|
-
launches[name] ||= 0
|
8
|
-
launches[name] += 1
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
def did_raise_error(name)
|
13
|
-
if is_official?(name)
|
14
|
-
@error = name
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
# Sends the used actions
|
19
|
-
# Example data => [:xcode_select, :deliver, :notify, :slack]
|
20
|
-
def did_finish
|
21
|
-
return if ENV["FASTLANE_OPT_OUT_USAGE"]
|
22
|
-
if !did_show_message? and !Helper.is_ci?
|
23
|
-
UI.message("Sending Crash/Success information. More information on: https://github.com/fastlane/enhancer")
|
24
|
-
UI.message("No personal/sensitive data is sent. Only sharing the following:")
|
25
|
-
UI.message(launches)
|
26
|
-
UI.message(@error) if @error
|
27
|
-
UI.message("This information is used to fix failing actions and improve integrations that are often used.")
|
28
|
-
UI.message("You can disable this by adding `opt_out_usage` to your Fastfile")
|
29
|
-
end
|
30
|
-
|
31
|
-
require 'excon'
|
32
|
-
url = HOST_URL + '/did_launch?'
|
33
|
-
url += URI.encode_www_form(
|
34
|
-
steps: launches.to_json,
|
35
|
-
error: @error
|
36
|
-
)
|
37
|
-
|
38
|
-
unless Helper.is_test? # don't send test data
|
39
|
-
fork do
|
40
|
-
begin
|
41
|
-
Excon.post(url)
|
42
|
-
rescue
|
43
|
-
# we don't want to show a stack trace if something goes wrong
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
rescue
|
48
|
-
# We don't care about connection errors
|
49
|
-
end
|
50
|
-
|
51
|
-
def launches
|
52
|
-
@launches ||= {}
|
53
|
-
end
|
54
|
-
|
2
|
+
class ActionCollector < FastlaneCore::ToolCollector
|
55
3
|
def is_official?(name)
|
56
4
|
return true if name == :lane_switch
|
57
5
|
Actions.get_all_official_actions.include? name
|
58
6
|
end
|
59
7
|
|
60
|
-
def
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
8
|
+
def show_message
|
9
|
+
UI.message("Sending Crash/Success information. More information on: https://github.com/fastlane/enhancer")
|
10
|
+
UI.message("No personal/sensitive data is sent. Only sharing the following:")
|
11
|
+
UI.message(launches)
|
12
|
+
UI.message(@error) if @error
|
13
|
+
UI.message("This information is used to fix failing actions and improve integrations that are often used.")
|
14
|
+
UI.message("You can disable this by adding `opt_out_usage` to your Fastfile")
|
66
15
|
end
|
67
16
|
end
|
68
17
|
end
|
@@ -9,11 +9,11 @@ module Fastlane
|
|
9
9
|
|
10
10
|
if Helper.is_ci? || Helper.is_test?
|
11
11
|
# The "BUILD_URL" environment variable is set automatically by Jenkins in every build
|
12
|
-
|
12
|
+
jenkins_api_url = URI(ENV["BUILD_URL"] + "api/json\?wrapper\=changes\&xpath\=//changeSet//comment")
|
13
13
|
begin
|
14
|
-
json = JSON.parse(Net::HTTP.get(
|
14
|
+
json = JSON.parse(Net::HTTP.get(jenkins_api_url))
|
15
15
|
json['changeSet']['items'].each do |item|
|
16
|
-
comment = item['comment']
|
16
|
+
comment = params[:include_commit_body] ? item['comment'] : item['msg']
|
17
17
|
changelog << comment.strip + "\n"
|
18
18
|
end
|
19
19
|
rescue => ex
|
@@ -37,7 +37,12 @@ module Fastlane
|
|
37
37
|
FastlaneCore::ConfigItem.new(key: :fallback_changelog,
|
38
38
|
description: "Fallback changelog if there is not one on Jenkins, or it couldn't be read",
|
39
39
|
optional: true,
|
40
|
-
default_value: "")
|
40
|
+
default_value: ""),
|
41
|
+
FastlaneCore::ConfigItem.new(key: :include_commit_body,
|
42
|
+
description: "Include the commit body along with the summary",
|
43
|
+
optional: true,
|
44
|
+
is_string: false,
|
45
|
+
default_value: true)
|
41
46
|
]
|
42
47
|
end
|
43
48
|
|
@@ -0,0 +1,84 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
class PodLibLintAction < Action
|
4
|
+
def self.run(params)
|
5
|
+
command = []
|
6
|
+
|
7
|
+
if File.exist?("Gemfile") && params[:use_bundle_exec]
|
8
|
+
command << "bundle exec"
|
9
|
+
end
|
10
|
+
|
11
|
+
command << "pod lib lint"
|
12
|
+
|
13
|
+
if params[:verbose]
|
14
|
+
command << "--verbose"
|
15
|
+
end
|
16
|
+
|
17
|
+
if params[:sources]
|
18
|
+
sources = params[:sources].join(",")
|
19
|
+
command << "--sources='#{sources}'"
|
20
|
+
end
|
21
|
+
|
22
|
+
if params[:allow_warnings]
|
23
|
+
command << "--allow-warnings"
|
24
|
+
end
|
25
|
+
|
26
|
+
result = Actions.sh(command.join(' '))
|
27
|
+
Helper.log.info "Pod lib lint Successfully ⬆️ ".green
|
28
|
+
return result
|
29
|
+
end
|
30
|
+
|
31
|
+
#####################################################
|
32
|
+
# @!group Documentation
|
33
|
+
#####################################################
|
34
|
+
|
35
|
+
def self.description
|
36
|
+
"Pod lib lint"
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.details
|
40
|
+
"Test the syntax of your Podfile by linting the pod against the files of its directory"
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.available_options
|
44
|
+
[
|
45
|
+
FastlaneCore::ConfigItem.new(key: :use_bundle_exec,
|
46
|
+
description: "Use bundle exec when there is a Gemfile presented",
|
47
|
+
is_string: false,
|
48
|
+
default_value: true),
|
49
|
+
FastlaneCore::ConfigItem.new(key: :verbose,
|
50
|
+
description: "Allow ouput detail in console",
|
51
|
+
optional: true,
|
52
|
+
is_string: false),
|
53
|
+
FastlaneCore::ConfigItem.new(key: :allow_warnings,
|
54
|
+
description: "Allow warnings during pod lint",
|
55
|
+
optional: true,
|
56
|
+
is_string: false),
|
57
|
+
FastlaneCore::ConfigItem.new(key: :sources,
|
58
|
+
description: "The sources of repos you want the pod spec to lint with, separated by commas",
|
59
|
+
optional: true,
|
60
|
+
is_string: false,
|
61
|
+
verify_block: proc do |value|
|
62
|
+
raise "Sources must be an array.".red unless value.kind_of?(Array)
|
63
|
+
end)
|
64
|
+
]
|
65
|
+
end
|
66
|
+
|
67
|
+
def self.output
|
68
|
+
end
|
69
|
+
|
70
|
+
def self.return_value
|
71
|
+
nil
|
72
|
+
end
|
73
|
+
|
74
|
+
def self.authors
|
75
|
+
["thierryxing"]
|
76
|
+
end
|
77
|
+
|
78
|
+
def self.is_supported?(platform)
|
79
|
+
true
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -17,7 +17,10 @@ module Fastlane
|
|
17
17
|
|
18
18
|
return params[:ipa] if Helper.test?
|
19
19
|
|
20
|
-
|
20
|
+
client_options = params.values
|
21
|
+
client_options[:testers_groups] = params[:testers_groups].join(',')
|
22
|
+
|
23
|
+
response = client.upload_build(params[:ipa], client_options)
|
21
24
|
if parse_response(response)
|
22
25
|
UI.success("Build URL: #{Actions.lane_context[SharedValues::TESTFAIRY_BUILD_URL]}")
|
23
26
|
UI.success("Build successfully uploaded to TestFairy.")
|
@@ -67,7 +70,13 @@ module Fastlane
|
|
67
70
|
FastlaneCore::ConfigItem.new(key: :comment,
|
68
71
|
env_name: "FL_TESTFAIRY_COMMENT",
|
69
72
|
description: "Additional release notes for this upload. This text will be added to email notifications",
|
70
|
-
default_value: 'No comment provided') # the default value if the user didn't provide one
|
73
|
+
default_value: 'No comment provided'), # the default value if the user didn't provide one
|
74
|
+
FastlaneCore::ConfigItem.new(key: :testers_groups,
|
75
|
+
type: Array,
|
76
|
+
short_option: '-g',
|
77
|
+
env_name: "FL_TESTFAIRY_TESTERS_GROUPS",
|
78
|
+
description: "Array of tester groups to be notified",
|
79
|
+
default_value: []) # the default value is an empty list
|
71
80
|
]
|
72
81
|
end
|
73
82
|
|
@@ -120,7 +120,7 @@ module Fastlane
|
|
120
120
|
end),
|
121
121
|
FastlaneCore::ConfigItem.new(key: :binary_path,
|
122
122
|
env_name: "FL_UPLOAD_SYMBOLS_TO_CRASHLYTICS_BINARY_PATH",
|
123
|
-
description: "The path to the upload-symbols file",
|
123
|
+
description: "The path to the upload-symbols file of the Fabric app",
|
124
124
|
optional: true,
|
125
125
|
verify_block: proc do |value|
|
126
126
|
UI.user_error!("Couldn't find file at path '#{value}'") unless File.exist?(value)
|
@@ -0,0 +1,177 @@
|
|
1
|
+
require 'commander'
|
2
|
+
require 'fastlane/new_action'
|
3
|
+
|
4
|
+
HighLine.track_eof = false
|
5
|
+
|
6
|
+
module Fastlane
|
7
|
+
class CommandsGenerator
|
8
|
+
include Commander::Methods
|
9
|
+
|
10
|
+
def self.start
|
11
|
+
FastlaneCore::UpdateChecker.start_looking_for_update('fastlane')
|
12
|
+
self.new.run
|
13
|
+
ensure
|
14
|
+
FastlaneCore::UpdateChecker.show_update_status('fastlane', Fastlane::VERSION)
|
15
|
+
end
|
16
|
+
|
17
|
+
# rubocop:disable Metrics/AbcSize
|
18
|
+
# rubocop:disable Metrics/MethodLength
|
19
|
+
def run
|
20
|
+
program :version, Fastlane::VERSION
|
21
|
+
program :description, [
|
22
|
+
"CLI for 'fastlane' - #{Fastlane::DESCRIPTION}\n",
|
23
|
+
"\tRun using `fastlane [platform] [lane_name]`",
|
24
|
+
"\tTo pass values to the lanes use `fastlane [platform] [lane_name] key:value key2:value2`"].join("\n")
|
25
|
+
program :help, 'Author', 'Felix Krause <fastlane@krausefx.com>'
|
26
|
+
program :help, 'Website', 'https://fastlane.tools'
|
27
|
+
program :help, 'GitHub', 'https://github.com/fastlane/fastlane'
|
28
|
+
program :help_formatter, :compact
|
29
|
+
|
30
|
+
global_option('--verbose') { $verbose = true }
|
31
|
+
|
32
|
+
always_trace!
|
33
|
+
|
34
|
+
command :trigger do |c|
|
35
|
+
c.syntax = 'fastlane [lane]'
|
36
|
+
c.description = 'Drive the fastlane for a specific environment. Pass the lane name and optionally the platform first'
|
37
|
+
c.option '--env STRING', String, 'Add environment to use with `dotenv`'
|
38
|
+
|
39
|
+
c.action do |args, options|
|
40
|
+
if Fastlane::FastlaneFolder.setup?
|
41
|
+
Fastlane::CommandLineHandler.handle(args, options)
|
42
|
+
else
|
43
|
+
create = agree('Could not find fastlane in current directory. Would you like to set it up? (y/n)'.yellow, true)
|
44
|
+
Fastlane::Setup.new.run if create
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
command :init do |c|
|
50
|
+
c.syntax = 'fastlane init'
|
51
|
+
c.description = 'Helps you with your initial fastlane setup'
|
52
|
+
|
53
|
+
c.action do |args, options|
|
54
|
+
Fastlane::Setup.new.run
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
command :new_action do |c|
|
59
|
+
c.syntax = 'fastlane new_action'
|
60
|
+
c.description = 'Create a new custom action for fastlane.'
|
61
|
+
|
62
|
+
c.option '--name STRING', String, 'Name of your new action'
|
63
|
+
|
64
|
+
c.action do |args, options|
|
65
|
+
Fastlane::NewAction.run(new_action_name: options.name)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
command :lanes do |c|
|
70
|
+
c.syntax = 'fastlane lanes'
|
71
|
+
c.description = 'Lists all available lanes and shows their description'
|
72
|
+
c.option "-j", "--json", "Output the lanes in JSON instead of text"
|
73
|
+
|
74
|
+
c.action do |args, options|
|
75
|
+
require 'fastlane/lane_list'
|
76
|
+
path = File.join(Fastlane::FastlaneFolder.path || '.', 'Fastfile')
|
77
|
+
|
78
|
+
if options.json
|
79
|
+
Fastlane::LaneList.output_json(path)
|
80
|
+
else
|
81
|
+
Fastlane::LaneList.output(path)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
command :list do |c|
|
87
|
+
c.syntax = 'fastlane list'
|
88
|
+
c.description = 'Lists all available lanes without description'
|
89
|
+
c.action do |args, options|
|
90
|
+
ff = Fastlane::FastFile.new(File.join(Fastlane::FastlaneFolder.path || '.', 'Fastfile'))
|
91
|
+
UI.message "Available lanes:"
|
92
|
+
ff.runner.available_lanes.each do |lane|
|
93
|
+
UI.message "- #{lane}"
|
94
|
+
end
|
95
|
+
UI.important "Execute using `fastlane [lane_name]`"
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
command :docs do |c|
|
100
|
+
c.syntax = 'fastlane docs'
|
101
|
+
c.description = 'Generate a markdown based documentation based on the Fastfile'
|
102
|
+
c.option '-f', '--force', 'Overwrite the existing README.md in the ./fastlane folder'
|
103
|
+
|
104
|
+
c.action do |args, options|
|
105
|
+
ff = Fastlane::FastFile.new(File.join(Fastlane::FastlaneFolder.path || '.', 'Fastfile'))
|
106
|
+
FastlaneCore::Helper.log.info "You don't need to run `fastlane docs` manually any more, this will be done automatically for you."
|
107
|
+
Fastlane::DocsGenerator.run(ff)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
command :run do |c|
|
112
|
+
c.syntax = 'fastlane run [action] key1:value1 key2:value2'
|
113
|
+
c.description = 'Run a fastlane one-off action without a full lane'
|
114
|
+
|
115
|
+
c.action do |args, options|
|
116
|
+
require 'fastlane/one_off'
|
117
|
+
result = Fastlane::OneOff.execute(args: args)
|
118
|
+
UI.success "Result: #{result}" if result
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
command :actions do |c|
|
123
|
+
c.syntax = 'fastlane actions'
|
124
|
+
c.description = 'Lists all available fastlane actions'
|
125
|
+
|
126
|
+
c.option '--platform STRING', String, 'Only show actions available on the given platform'
|
127
|
+
|
128
|
+
c.action do |args, options|
|
129
|
+
require 'fastlane/documentation/actions_list'
|
130
|
+
Fastlane::ActionsList.run(filter: args.first, platform: options.platform)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
command :action do |c|
|
135
|
+
c.syntax = 'fastlane action [tool_name]'
|
136
|
+
c.description = 'Shows more information for a specific command'
|
137
|
+
c.action do |args, options|
|
138
|
+
require 'fastlane/documentation/actions_list'
|
139
|
+
Fastlane::ActionsList.run(filter: args.first)
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
command :enable_crash_reporting do |c|
|
144
|
+
c.syntax = 'fastlane enable_crash_reporting'
|
145
|
+
c.description = 'Enable crash reporting to improve fastlane'
|
146
|
+
c.action do |args, options|
|
147
|
+
FastlaneCore::CrashReporting.enable
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
command :disable_crash_reporting do |c|
|
152
|
+
c.syntax = 'fastlane disable_crash_reporting'
|
153
|
+
c.description = 'Disable crash reporting'
|
154
|
+
c.action do |args, options|
|
155
|
+
FastlaneCore::CrashReporting.disable
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
command :enable_auto_complete do |c|
|
160
|
+
c.syntax = 'fastlane enable_auto_complete'
|
161
|
+
c.description = 'Enable tab auto completion'
|
162
|
+
|
163
|
+
c.action do |args, options|
|
164
|
+
require 'fastlane/auto_complete'
|
165
|
+
Fastlane::AutoComplete.execute
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
default_command :trigger
|
170
|
+
|
171
|
+
run!
|
172
|
+
end
|
173
|
+
|
174
|
+
# rubocop:enable Metrics/AbcSize
|
175
|
+
# rubocop:enable Metrics/MethodLength
|
176
|
+
end
|
177
|
+
end
|
@@ -110,7 +110,7 @@ module Fastlane
|
|
110
110
|
|
111
111
|
rows = []
|
112
112
|
available.each_with_index do |lane, index|
|
113
|
-
rows << [index + 1, lane.last.pretty_name, lane.last.description.
|
113
|
+
rows << [index + 1, lane.last.pretty_name, lane.last.description.join("\n")]
|
114
114
|
end
|
115
115
|
|
116
116
|
rows << [0, "cancel", "No selection, exit fastlane!"]
|
data/lib/fastlane/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.84.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: krausefx-shenzhen
|
@@ -148,7 +148,7 @@ dependencies:
|
|
148
148
|
requirements:
|
149
149
|
- - ">="
|
150
150
|
- !ruby/object:Gem::Version
|
151
|
-
version: 0.
|
151
|
+
version: 0.43.1
|
152
152
|
- - "<"
|
153
153
|
- !ruby/object:Gem::Version
|
154
154
|
version: 1.0.0
|
@@ -158,7 +158,7 @@ dependencies:
|
|
158
158
|
requirements:
|
159
159
|
- - ">="
|
160
160
|
- !ruby/object:Gem::Version
|
161
|
-
version: 0.
|
161
|
+
version: 0.43.1
|
162
162
|
- - "<"
|
163
163
|
- !ruby/object:Gem::Version
|
164
164
|
version: 1.0.0
|
@@ -188,7 +188,7 @@ dependencies:
|
|
188
188
|
requirements:
|
189
189
|
- - ">="
|
190
190
|
- !ruby/object:Gem::Version
|
191
|
-
version: 0.26.
|
191
|
+
version: 0.26.2
|
192
192
|
- - "<"
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: 1.0.0
|
@@ -198,7 +198,7 @@ dependencies:
|
|
198
198
|
requirements:
|
199
199
|
- - ">="
|
200
200
|
- !ruby/object:Gem::Version
|
201
|
-
version: 0.26.
|
201
|
+
version: 0.26.2
|
202
202
|
- - "<"
|
203
203
|
- !ruby/object:Gem::Version
|
204
204
|
version: 1.0.0
|
@@ -248,7 +248,7 @@ dependencies:
|
|
248
248
|
requirements:
|
249
249
|
- - ">="
|
250
250
|
- !ruby/object:Gem::Version
|
251
|
-
version: 2.
|
251
|
+
version: 2.6.0
|
252
252
|
- - "<"
|
253
253
|
- !ruby/object:Gem::Version
|
254
254
|
version: 3.0.0
|
@@ -258,7 +258,7 @@ dependencies:
|
|
258
258
|
requirements:
|
259
259
|
- - ">="
|
260
260
|
- !ruby/object:Gem::Version
|
261
|
-
version: 2.
|
261
|
+
version: 2.6.0
|
262
262
|
- - "<"
|
263
263
|
- !ruby/object:Gem::Version
|
264
264
|
version: 3.0.0
|
@@ -644,17 +644,20 @@ dependencies:
|
|
644
644
|
- - "~>"
|
645
645
|
- !ruby/object:Gem::Version
|
646
646
|
version: 0.8.1
|
647
|
-
description:
|
647
|
+
description: The easiest way to automate building and releasing your iOS and Android
|
648
|
+
apps
|
648
649
|
email:
|
649
650
|
- fastlane@krausefx.com
|
650
651
|
executables:
|
651
652
|
- fastlane
|
653
|
+
- "\U0001F680"
|
652
654
|
extensions: []
|
653
655
|
extra_rdoc_files: []
|
654
656
|
files:
|
655
657
|
- LICENSE
|
656
658
|
- README.md
|
657
659
|
- bin/fastlane
|
660
|
+
- "bin/\U0001F680"
|
658
661
|
- lib/assets/AppfileTemplate
|
659
662
|
- lib/assets/AppfileTemplateAndroid
|
660
663
|
- lib/assets/DefaultFastfileTemplate
|
@@ -767,6 +770,7 @@ files:
|
|
767
770
|
- lib/fastlane/actions/opt_out_usage.rb
|
768
771
|
- lib/fastlane/actions/pem.rb
|
769
772
|
- lib/fastlane/actions/pilot.rb
|
773
|
+
- lib/fastlane/actions/pod_lib_lint.rb
|
770
774
|
- lib/fastlane/actions/pod_push.rb
|
771
775
|
- lib/fastlane/actions/podio_item.rb
|
772
776
|
- lib/fastlane/actions/produce.rb
|
@@ -838,6 +842,7 @@ files:
|
|
838
842
|
- lib/fastlane/actions/zip.rb
|
839
843
|
- lib/fastlane/auto_complete.rb
|
840
844
|
- lib/fastlane/command_line_handler.rb
|
845
|
+
- lib/fastlane/commands_generator.rb
|
841
846
|
- lib/fastlane/configuration_helper.rb
|
842
847
|
- lib/fastlane/core_ext/bundler_monkey_patch.rb
|
843
848
|
- lib/fastlane/core_ext/string.rb
|
@@ -886,9 +891,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
886
891
|
version: '0'
|
887
892
|
requirements: []
|
888
893
|
rubyforge_project:
|
889
|
-
rubygems_version: 2.
|
894
|
+
rubygems_version: 2.4.5.1
|
890
895
|
signing_key:
|
891
896
|
specification_version: 4
|
892
|
-
summary:
|
897
|
+
summary: The easiest way to automate building and releasing your iOS and Android apps
|
893
898
|
test_files: []
|
894
899
|
has_rdoc:
|