fastlane 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +14 -0
- data/lib/assets/FastfileTemplate +4 -0
- data/lib/fastlane/actions/actions_helper.rb +1 -1
- data/lib/fastlane/actions/commit_version_bump.rb +1 -1
- data/lib/fastlane/actions/crashlytics.rb +13 -4
- data/lib/fastlane/actions/fastlane_version.rb +24 -0
- data/lib/fastlane/actions/increment_build_number.rb +27 -9
- data/lib/fastlane/actions/slack.rb +45 -23
- data/lib/fastlane/actions/xcodebuild.rb +71 -13
- data/lib/fastlane/core_ext/string.rb +2 -2
- data/lib/fastlane/fast_file.rb +4 -5
- data/lib/fastlane/new_action.rb +1 -1
- data/lib/fastlane/setup.rb +1 -0
- data/lib/fastlane/version.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 04596998fa46152b86981296ddddea92a7ef472e
|
4
|
+
data.tar.gz: 613ebe717ae9897d7e1ee01db394a51a24c77b08
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c4c44a73cc339613bd3beca3f2b9e18843169d7de3c5d73e985161b1d3f75960c13c767c31ef4d9368579f69ecee91fff24fefcff804e55e6e2ac073b790d108
|
7
|
+
data.tar.gz: a27ff89089022503a16f41e63639464ef082fb95bc3b651e1195527cb178bf73225918352ce510406263904725f0a7ad7dcff94b0448828b924b962d6dfb1e3e
|
data/README.md
CHANGED
@@ -54,11 +54,25 @@ Get in contact with the developer on Twitter: [@KrauseFx](https://twitter.com/Kr
|
|
54
54
|
- Saves you **hours** of preparing app submission, uploading screenshots and deploying the app for each update
|
55
55
|
- Very flexible configuration using a fully customizable `Fastfile`
|
56
56
|
- Once up and running, you have a fully working **Continuous Deployment** process. Just trigger ```fastlane``` and you're good to go.
|
57
|
+
- Over 30 built-in integrations available
|
57
58
|
|
58
59
|
##### Take a look at the [fastlane website](https://fastlane.tools) for more information about why and when to use `fastlane`.
|
59
60
|
|
60
61
|
##### [Like this tool? Be the first to know about updates and new fastlane tools](https://tinyletter.com/krausefx)
|
61
62
|
|
63
|
+
# Special Thanks
|
64
|
+
|
65
|
+
Thanks to all sponsors and contributors for extending and improving the `fastlane` suite:
|
66
|
+
- [Detroit Labs](http://www.detroitlabs.com/)
|
67
|
+
- Josh Holtz ([@joshdholtz](https://twitter.com/joshdholtz))
|
68
|
+
- Dan Trenz ([@dtrenz](https://twitter.com/dtrenz))
|
69
|
+
- Luka Mirosevic ([@lmirosevic](https://twitter.com/lmirosevic))
|
70
|
+
- Almas Sapargali ([@almassapargali](https://twitter.com/almassapargali))
|
71
|
+
- Manuel Wallner ([@milch](https://github.com/milch))
|
72
|
+
- Pawel Dudek ([@eldudi](https://twitter.com/eldudi))
|
73
|
+
|
74
|
+
Check out the project pages of the other tools for more sponsors and contributors.
|
75
|
+
|
62
76
|
# Installation
|
63
77
|
|
64
78
|
I recommend following the [fastlane guide](https://github.com/KrauseFx/fastlane/blob/master/GUIDE.md) to get started.
|
data/lib/assets/FastfileTemplate
CHANGED
@@ -5,6 +5,10 @@
|
|
5
5
|
|
6
6
|
# All lines starting with a # are ignored when running `fastlane`
|
7
7
|
|
8
|
+
# This is the minimum version number required.
|
9
|
+
# Update this, if you use features of a newer version
|
10
|
+
fastlane_version "[[FASTLANE_VERSION]]"
|
11
|
+
|
8
12
|
before_all do
|
9
13
|
# ENV["SLACK_URL"] = "https://hooks.slack.com/services/..."
|
10
14
|
|
@@ -16,7 +16,7 @@ module Fastlane
|
|
16
16
|
repo_path = `git rev-parse --show-toplevel`.strip
|
17
17
|
|
18
18
|
# find an xcodeproj (ignoreing the Cocoapods one)
|
19
|
-
xcodeproj_paths = Dir[File.expand_path(File.join(repo_path, '**/*.xcodeproj'))].reject { |path|
|
19
|
+
xcodeproj_paths = Dir[File.expand_path(File.join(repo_path, '**/*.xcodeproj'))].reject { |path| /Pods\/.*.xcodeproj/ =~ path }
|
20
20
|
|
21
21
|
raise 'Could not find a .xcodeproj in the current repository\'s working directory.'.red if xcodeproj_paths.count == 0
|
22
22
|
raise 'Found multiple .xcodeproj projects in the current repository\'s working directory. This tool only support project folders with a single .xcodeproj.'.red if xcodeproj_paths.count > 1
|
@@ -13,15 +13,24 @@ module Fastlane
|
|
13
13
|
|
14
14
|
params = params.first
|
15
15
|
|
16
|
-
crashlytics_path = params[:crashlytics_path]
|
17
|
-
api_token = params[:api_token]
|
18
|
-
build_secret = params[:build_secret]
|
16
|
+
crashlytics_path = params[:crashlytics_path] || ENV["CRASHLYTICS_FRAMEWORK_PATH"]
|
17
|
+
api_token = params[:api_token] || ENV["CRASHLYTICS_API_TOKEN"]
|
18
|
+
build_secret = params[:build_secret] || ENV["CRASHLYTICS_BUILD_SECRET"]
|
19
19
|
ipa_path = params[:ipa_path] || Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]
|
20
20
|
notes_path = params[:notes_path]
|
21
21
|
emails = params[:emails]
|
22
|
-
groups = params[:groups]
|
23
22
|
notifications = params[:notifications]
|
24
23
|
|
24
|
+
# can pass groups param either as an Array or a String
|
25
|
+
case params[:groups]
|
26
|
+
when NilClass
|
27
|
+
groups = nil
|
28
|
+
when Array
|
29
|
+
groups = params[:groups].join(',')
|
30
|
+
when String
|
31
|
+
groups = params[:groups]
|
32
|
+
end
|
33
|
+
|
25
34
|
assert_valid_params!(crashlytics_path, api_token, build_secret, ipa_path)
|
26
35
|
|
27
36
|
Helper.log.info 'Uploading the IPA to Crashlytics. Go for a coffee ☕️.'.green
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
module SharedValues
|
4
|
+
|
5
|
+
end
|
6
|
+
|
7
|
+
class FastlaneVersionAction
|
8
|
+
def self.run(params)
|
9
|
+
defined_version = ((Gem::Version.new(params.first) if params.first) rescue nil)
|
10
|
+
raise "Please pass minimum fastlane version as parameter to fastlane_version".red unless defined_version
|
11
|
+
|
12
|
+
if Gem::Version.new(Fastlane::VERSION) < defined_version
|
13
|
+
raise "The Fastfile requires a fastlane version of >= #{defined_version}. You are on #{Fastlane::VERSION}. Please update using `sudo gem update fastlane`.".red
|
14
|
+
end
|
15
|
+
|
16
|
+
Helper.log.info "fastlane version valid"
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.step_text
|
20
|
+
"Verifying required fastlane version"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -5,20 +5,39 @@ module Fastlane
|
|
5
5
|
end
|
6
6
|
|
7
7
|
class IncrementBuildNumberAction
|
8
|
+
require 'shellwords'
|
9
|
+
|
8
10
|
def self.run(params)
|
9
11
|
# More information about how to set up your project and how it works:
|
10
12
|
# https://developer.apple.com/library/ios/qa/qa1827/_index.html
|
11
13
|
# Attention: This is NOT the version number - but the build number
|
12
14
|
|
13
15
|
begin
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
first_param = (params.first rescue nil)
|
17
|
+
|
18
|
+
case first_param
|
19
|
+
when NilClass
|
20
|
+
custom_number = nil
|
21
|
+
folder = '.'
|
22
|
+
when Fixnum
|
23
|
+
custom_number = first_param
|
24
|
+
folder = '.'
|
25
|
+
when Hash
|
26
|
+
custom_number = first_param[:build_number]
|
27
|
+
folder = first_param[:xcodeproj] ? File.join('.', first_param[:xcodeproj], '..') : '.'
|
21
28
|
end
|
29
|
+
|
30
|
+
command_prefix = [
|
31
|
+
'cd',
|
32
|
+
File.expand_path(folder).shellescape,
|
33
|
+
'&&'
|
34
|
+
].join(' ')
|
35
|
+
|
36
|
+
command = [
|
37
|
+
command_prefix,
|
38
|
+
'agvtool',
|
39
|
+
custom_number ? "new-version -all #{custom_number}" : 'next-version -all'
|
40
|
+
].join(' ')
|
22
41
|
|
23
42
|
if Helper.test?
|
24
43
|
Actions.lane_context[SharedValues::BUILD_NUMBER] = command
|
@@ -27,10 +46,9 @@ module Fastlane
|
|
27
46
|
Actions.sh command
|
28
47
|
|
29
48
|
# Store the new number in the shared hash
|
30
|
-
build_number =
|
49
|
+
build_number = `#{command_prefix} agvtool what-version`.split("\n").last.to_i
|
31
50
|
|
32
51
|
Actions.lane_context[SharedValues::BUILD_NUMBER] = build_number
|
33
|
-
|
34
52
|
end
|
35
53
|
rescue => ex
|
36
54
|
Helper.log.error 'Make sure to to follow the steps to setup your Xcode project: https://developer.apple.com/library/ios/qa/qa1827/_index.html'.yellow
|
@@ -29,14 +29,15 @@ module Fastlane
|
|
29
29
|
def self.run(params)
|
30
30
|
options = { message: '',
|
31
31
|
success: true,
|
32
|
-
channel: nil
|
32
|
+
channel: nil,
|
33
|
+
payload: {}
|
33
34
|
}.merge(params.first || {})
|
34
35
|
|
35
36
|
require 'slack-notifier'
|
36
37
|
|
37
38
|
color = (options[:success] ? 'good' : 'danger')
|
38
39
|
options[:message] = options[:message].to_s
|
39
|
-
|
40
|
+
|
40
41
|
options[:message] = Slack::Notifier::LinkFormatter.format(options[:message])
|
41
42
|
|
42
43
|
url = ENV['SLACK_URL']
|
@@ -53,37 +54,57 @@ module Fastlane
|
|
53
54
|
notifier.channel = ('#' + notifier.channel) unless ['#', '@'].include?(notifier.channel[0]) # send message to channel by default
|
54
55
|
end
|
55
56
|
|
56
|
-
|
57
|
+
should_add_payload = ->(payload_name) { options[:default_payloads].nil? || options[:default_payloads].include?(payload_name) }
|
58
|
+
|
59
|
+
slack_attachment = {
|
57
60
|
fallback: options[:message],
|
58
61
|
text: options[:message],
|
59
62
|
color: color,
|
60
|
-
fields: [
|
61
|
-
{
|
62
|
-
title: 'Lane',
|
63
|
-
value: Actions.lane_context[Actions::SharedValues::LANE_NAME],
|
64
|
-
short: true
|
65
|
-
},
|
66
|
-
{
|
67
|
-
title: 'Test Result',
|
68
|
-
value: (options[:success] ? 'Success' : 'Error'),
|
69
|
-
short: true
|
70
|
-
}
|
71
|
-
]
|
63
|
+
fields: []
|
72
64
|
}
|
73
65
|
|
74
|
-
|
75
|
-
|
66
|
+
# custom user payloads
|
67
|
+
slack_attachment[:fields] += options[:payload].map do |k, v|
|
68
|
+
{
|
69
|
+
title: k.to_s,
|
70
|
+
value: v.to_s,
|
71
|
+
short: false
|
72
|
+
}
|
73
|
+
end
|
74
|
+
|
75
|
+
# lane
|
76
|
+
if should_add_payload[:lane]
|
77
|
+
slack_attachment[:fields] << {
|
78
|
+
title: 'Lane',
|
79
|
+
value: Actions.lane_context[Actions::SharedValues::LANE_NAME],
|
80
|
+
short: true
|
81
|
+
}
|
82
|
+
end
|
83
|
+
|
84
|
+
# test_result
|
85
|
+
if should_add_payload[:test_result]
|
86
|
+
slack_attachment[:fields] << {
|
87
|
+
title: 'Test Result',
|
88
|
+
value: (options[:success] ? 'Success' : 'Error'),
|
89
|
+
short: true
|
90
|
+
}
|
91
|
+
end
|
92
|
+
|
93
|
+
# git branch
|
94
|
+
if git_branch && should_add_payload[:git_branch]
|
95
|
+
slack_attachment[:fields] << {
|
76
96
|
title: 'Git Branch',
|
77
97
|
value: git_branch,
|
78
98
|
short: true
|
79
99
|
}
|
80
100
|
end
|
81
101
|
|
82
|
-
|
83
|
-
|
102
|
+
# git_author
|
103
|
+
if git_author && should_add_payload[:git_author]
|
104
|
+
if ENV['FASTLANE_SLACK_HIDE_AUTHOR_ON_SUCCESS'] && options[:success]
|
84
105
|
# We only show the git author if the build failed
|
85
106
|
else
|
86
|
-
|
107
|
+
slack_attachment[:fields] << {
|
87
108
|
title: 'Git Author',
|
88
109
|
value: git_author,
|
89
110
|
short: true
|
@@ -91,8 +112,9 @@ module Fastlane
|
|
91
112
|
end
|
92
113
|
end
|
93
114
|
|
94
|
-
|
95
|
-
|
115
|
+
# last_git_commit
|
116
|
+
if last_git_commit && should_add_payload[:last_git_commit]
|
117
|
+
slack_attachment[:fields] << {
|
96
118
|
title: 'Git Commit',
|
97
119
|
value: last_git_commit,
|
98
120
|
short: false
|
@@ -101,7 +123,7 @@ module Fastlane
|
|
101
123
|
|
102
124
|
result = notifier.ping '',
|
103
125
|
icon_url: 'https://s3-eu-west-1.amazonaws.com/fastlane.tools/fastlane.png',
|
104
|
-
attachments: [
|
126
|
+
attachments: [slack_attachment]
|
105
127
|
|
106
128
|
unless result.code.to_i == 200
|
107
129
|
Helper.log.debug result
|
@@ -48,19 +48,20 @@ module Fastlane
|
|
48
48
|
end
|
49
49
|
|
50
50
|
# The args we will build with
|
51
|
-
|
51
|
+
xcodebuild_args = Array[]
|
52
52
|
|
53
53
|
# Supported ENV vars
|
54
|
-
build_path = ENV["
|
55
|
-
scheme = ENV["
|
56
|
-
workspace = ENV["
|
57
|
-
project = ENV["
|
54
|
+
build_path = ENV["XCODE_BUILD_PATH"] || nil
|
55
|
+
scheme = ENV["XCODE_SCHEME"]
|
56
|
+
workspace = ENV["XCODE_WORKSPACE"]
|
57
|
+
project = ENV["XCODE_PROJECT"]
|
58
58
|
|
59
59
|
# Append slash to build path, if needed
|
60
|
-
|
60
|
+
if build_path && !build_path.end_with?("/")
|
61
61
|
build_path += "/"
|
62
62
|
end
|
63
63
|
|
64
|
+
|
64
65
|
if params = params.first
|
65
66
|
# Operation bools
|
66
67
|
archiving = params.key? :archive
|
@@ -84,6 +85,12 @@ module Fastlane
|
|
84
85
|
params[:scheme] ||= scheme
|
85
86
|
params[:workspace] ||= workspace
|
86
87
|
params[:project] ||= project
|
88
|
+
|
89
|
+
# If no project or workspace was passed in or set as an environment
|
90
|
+
# variable, attempt to autodetect the workspace.
|
91
|
+
if params[:project].to_s.empty? && params[:workspace].to_s.empty?
|
92
|
+
params[:workspace] = detect_workspace
|
93
|
+
end
|
87
94
|
end
|
88
95
|
|
89
96
|
if archiving
|
@@ -95,20 +102,53 @@ module Fastlane
|
|
95
102
|
end
|
96
103
|
|
97
104
|
# Maps parameter hash to CLI args
|
98
|
-
if hash_args =
|
99
|
-
|
105
|
+
if hash_args = hash_to_args(params)
|
106
|
+
xcodebuild_args += hash_args
|
100
107
|
end
|
101
108
|
end
|
102
109
|
|
103
110
|
# Joins args into space delimited string
|
104
|
-
|
111
|
+
xcodebuild_args = xcodebuild_args.join(" ")
|
112
|
+
|
113
|
+
# Default args
|
114
|
+
xcpretty_args = [ "--color" ]
|
115
|
+
|
116
|
+
# Stdout format
|
117
|
+
if testing && !archiving
|
118
|
+
xcpretty_args.push "--test"
|
119
|
+
else
|
120
|
+
xcpretty_args.push "--simple"
|
121
|
+
end
|
122
|
+
|
123
|
+
if testing
|
124
|
+
# Test report file format
|
125
|
+
if params[:report_formats]
|
126
|
+
report_formats = params[:report_formats].map do |format|
|
127
|
+
"--report #{format}"
|
128
|
+
end.sort().join(" ")
|
129
|
+
|
130
|
+
xcpretty_args.push report_formats
|
131
|
+
|
132
|
+
# Test report file path
|
133
|
+
if params[:report_path]
|
134
|
+
xcpretty_args.push "--output \"#{params[:report_path]}\""
|
135
|
+
elsif build_path
|
136
|
+
xcpretty_args.push "--output \"#{build_path}report\""
|
137
|
+
end
|
138
|
+
|
139
|
+
# Save screenshots flag
|
140
|
+
if params[:report_formats].include?("html") && params[:report_screenshots]
|
141
|
+
xcpretty_args.push "--screenshots"
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
105
145
|
|
106
|
-
|
146
|
+
xcpretty_args = xcpretty_args.sort.join(" ")
|
107
147
|
|
108
|
-
Actions.sh "xcodebuild #{
|
148
|
+
Actions.sh "set -o pipefail && xcodebuild #{xcodebuild_args} | xcpretty #{xcpretty_args}"
|
109
149
|
end
|
110
150
|
|
111
|
-
def self.
|
151
|
+
def self.hash_to_args(hash)
|
112
152
|
# Remove nil value params
|
113
153
|
hash = hash.delete_if { |_, v| v.nil? }
|
114
154
|
|
@@ -118,12 +158,30 @@ module Fastlane
|
|
118
158
|
if arg = ARGS_MAP[k]
|
119
159
|
value = (v != true && v.to_s.length > 0 ? "\"#{v}\"" : "")
|
120
160
|
"#{arg} #{value}".strip
|
161
|
+
elsif k == :build_settings
|
162
|
+
v.map{|setting,value| "#{setting}=\"#{value}\""}.join(' ')
|
121
163
|
elsif k == :keychain && v.to_s.length > 0
|
122
164
|
# If keychain is specified, append as OTHER_CODE_SIGN_FLAGS
|
123
165
|
"OTHER_CODE_SIGN_FLAGS=\"--keychain #{v}\""
|
124
166
|
end
|
125
167
|
end.compact.sort
|
126
168
|
end
|
169
|
+
|
170
|
+
def self.detect_workspace
|
171
|
+
workspace = nil
|
172
|
+
workspaces = Dir.glob("*.xcworkspace")
|
173
|
+
|
174
|
+
if workspaces.length > 1
|
175
|
+
Helper.log.warn "Multiple workspaces detected."
|
176
|
+
end
|
177
|
+
|
178
|
+
if !workspaces.empty?
|
179
|
+
workspace = workspaces.first
|
180
|
+
Helper.log.warn "Using workspace \"#{workspace}\""
|
181
|
+
end
|
182
|
+
|
183
|
+
return workspace
|
184
|
+
end
|
127
185
|
end
|
128
186
|
|
129
187
|
class XcarchiveAction
|
@@ -166,4 +224,4 @@ module Fastlane
|
|
166
224
|
end
|
167
225
|
end
|
168
226
|
end
|
169
|
-
end
|
227
|
+
end
|
data/lib/fastlane/fast_file.rb
CHANGED
@@ -63,7 +63,7 @@ module Fastlane
|
|
63
63
|
def method_missing(method_sym, *arguments, &_block)
|
64
64
|
# First, check if there is a predefined method in the actions folder
|
65
65
|
|
66
|
-
class_name = method_sym.to_s.
|
66
|
+
class_name = method_sym.to_s.fastlane_class + 'Action'
|
67
67
|
class_ref = nil
|
68
68
|
begin
|
69
69
|
class_ref = Fastlane::Actions.const_get(class_name)
|
@@ -73,10 +73,9 @@ module Fastlane
|
|
73
73
|
end
|
74
74
|
|
75
75
|
if class_ref && class_ref.respond_to?(:run)
|
76
|
-
|
77
|
-
|
78
|
-
Helper.
|
79
|
-
Helper.log.info line.green
|
76
|
+
step_name = class_ref.step_text rescue nil
|
77
|
+
step_name = method_sym.to_s unless step_name
|
78
|
+
Helper.log_alert("Step: " + step_name)
|
80
79
|
|
81
80
|
Dir.chdir('..') do # go up from the fastlane folder, to the project folder
|
82
81
|
Actions.execute_action(method_sym) do
|
data/lib/fastlane/new_action.rb
CHANGED
@@ -21,7 +21,7 @@ module Fastlane
|
|
21
21
|
template = File.read("#{Helper.gem_path('fastlane')}/lib/assets/custom_action_template.rb")
|
22
22
|
template.gsub!('[[NAME]]', name)
|
23
23
|
template.gsub!('[[NAME_UP]]', name.upcase)
|
24
|
-
template.gsub!('[[NAME_CLASS]]', name.
|
24
|
+
template.gsub!('[[NAME_CLASS]]', name.fastlane_class + 'Action')
|
25
25
|
|
26
26
|
actions_path = File.join((FastlaneFolder.path || Dir.pwd), 'actions')
|
27
27
|
FileUtils.mkdir_p(actions_path) unless File.directory?(actions_path)
|
data/lib/fastlane/setup.rb
CHANGED
@@ -112,6 +112,7 @@ module Fastlane
|
|
112
112
|
template.gsub!('sigh', '# sigh') unless @tools[:sigh]
|
113
113
|
template.gsub!('xctool', '# xctool') unless @tools[:xctool]
|
114
114
|
template.gsub!('cocoapods', '# cocoapods') unless @tools[:cocoapods]
|
115
|
+
template.gsub!('[[FASTLANE_VERSION]]', Fastlane::VERSION)
|
115
116
|
|
116
117
|
@tools.each do |key, value|
|
117
118
|
Helper.log.info "'#{key}' enabled.".magenta if value
|
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: 0.
|
4
|
+
version: 0.3.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: 2015-03-
|
11
|
+
date: 2015-03-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -100,14 +100,14 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - '>='
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.
|
103
|
+
version: 0.3.1
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - '>='
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 0.
|
110
|
+
version: 0.3.1
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: deliver
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -359,6 +359,7 @@ files:
|
|
359
359
|
- lib/fastlane/actions/deliver.rb
|
360
360
|
- lib/fastlane/actions/deploygate.rb
|
361
361
|
- lib/fastlane/actions/ensure_git_status_clean.rb
|
362
|
+
- lib/fastlane/actions/fastlane_version.rb
|
362
363
|
- lib/fastlane/actions/frameit.rb
|
363
364
|
- lib/fastlane/actions/gcovr.rb
|
364
365
|
- lib/fastlane/actions/hipchat.rb
|