fastlane 0.7.0 → 0.8.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 +1 -1
- data/bin/fastlane +15 -1
- data/lib/assets/AppfileTemplate +5 -1
- data/lib/assets/FastfileTemplate +5 -1
- data/lib/assets/custom_action_template.rb +4 -2
- data/lib/fastlane.rb +1 -0
- data/lib/fastlane/action.rb +7 -0
- data/lib/fastlane/action_collector.rb +52 -0
- data/lib/fastlane/actions/deliver.rb +1 -1
- data/lib/fastlane/actions/hockey.rb +3 -3
- data/lib/fastlane/actions/increment_version_number.rb +1 -1
- data/lib/fastlane/actions/opt_out_usage.rb +27 -0
- data/lib/fastlane/actions/resign.rb +1 -1
- data/lib/fastlane/actions/xcodebuild.rb +23 -6
- data/lib/fastlane/fast_file.rb +19 -3
- data/lib/fastlane/lane_manager.rb +4 -0
- data/lib/fastlane/version.rb +1 -1
- metadata +10 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e853c65eb491960197f6a6490570114c267718f8
|
4
|
+
data.tar.gz: d21148557d3cd66ab6db4e5b08961914686e5d15
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3ab3ce015edb69c2d896b83f0dded4552aaeca4d6f64f86a4444b001ea5e0bf550d9ff02faf8aeceb00a2be8c42eff1d659d62e982d1e20f1712a100a71acff0
|
7
|
+
data.tar.gz: 5c82dbe93c7d5751c89b1dcfaa55d5d6dc52a445b855fa02f6f727a29a00a4fa346575f2469067b29543ad4a453eebfaa21fdbe45f60b16763c71c92460120e9
|
data/README.md
CHANGED
@@ -136,7 +136,7 @@ A detailed description about how ```fastlane``` stores your credentials is avail
|
|
136
136
|
|
137
137
|
## Special Thanks
|
138
138
|
|
139
|
-
Thanks to all
|
139
|
+
Thanks to all contributors for extending and improving the `fastlane` suite:
|
140
140
|
- [Detroit Labs](http://www.detroitlabs.com/)
|
141
141
|
- Josh Holtz ([@joshdholtz](https://twitter.com/joshdholtz))
|
142
142
|
- Ash Furrow ([@ashfurrow](https://twitter.com/ashfurrow))
|
data/bin/fastlane
CHANGED
@@ -55,6 +55,20 @@ class FastlaneApplication
|
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
|
+
command :lanes do |c|
|
59
|
+
c.syntax = 'fastlane lanes'
|
60
|
+
c.description = 'Lists all available lanes'
|
61
|
+
|
62
|
+
c.action do |_args, _options|
|
63
|
+
ff = Fastlane::FastFile.new(File.join(Fastlane::FastlaneFolder.path, 'Fastfile'))
|
64
|
+
puts "\nAvailable lanes:".green
|
65
|
+
ff.runner.available_lanes.each do |lane|
|
66
|
+
puts "- #{lane}"
|
67
|
+
end
|
68
|
+
puts "\nExecute using `fastlane [lane_name]`".yellow
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
58
72
|
command :actions do |c|
|
59
73
|
c.syntax = 'fastlane actions'
|
60
74
|
c.description = 'Lists all available fastlane actions'
|
@@ -81,7 +95,7 @@ class FastlaneApplication
|
|
81
95
|
end
|
82
96
|
|
83
97
|
begin
|
84
|
-
|
98
|
+
FastlaneCore::UpdateChecker.start_looking_for_update('fastlane')
|
85
99
|
FastlaneApplication.new.run
|
86
100
|
ensure
|
87
101
|
FastlaneCore::UpdateChecker.show_update_status('fastlane', Fastlane::VERSION)
|
data/lib/assets/AppfileTemplate
CHANGED
@@ -4,4 +4,8 @@ apple_id "[[APPLE_ID]]" # Your Apple email address
|
|
4
4
|
# You can uncomment any of the lines below and add your own
|
5
5
|
# team selection in case you're in multiple teams
|
6
6
|
# team_name "Felix Krause"
|
7
|
-
# team_id "Q2CBPJ58CA"
|
7
|
+
# team_id "Q2CBPJ58CA"
|
8
|
+
|
9
|
+
|
10
|
+
# you can even provide different app identifiers, Apple IDs and team names per lane:
|
11
|
+
# https://github.com/KrauseFx/fastlane/blob/master/docs/Advanced.md#the-appfile
|
data/lib/assets/FastfileTemplate
CHANGED
@@ -2,9 +2,13 @@
|
|
2
2
|
# https://github.com/krausefx/fastlane#customise-the-fastfile
|
3
3
|
|
4
4
|
# Change the syntax highlighting to Ruby
|
5
|
-
|
6
5
|
# All lines starting with a # are ignored when running `fastlane`
|
7
6
|
|
7
|
+
# By default, fastlane will send which actions are used
|
8
|
+
# No personal data is shared, more information on https://github.com/fastlane/enhancer
|
9
|
+
# Uncomment the following line to opt out
|
10
|
+
# opt_out_usage
|
11
|
+
|
8
12
|
# This is the minimum version number required.
|
9
13
|
# Update this, if you use features of a newer version
|
10
14
|
fastlane_version "[[FASTLANE_VERSION]]"
|
@@ -6,8 +6,10 @@ module Fastlane
|
|
6
6
|
|
7
7
|
class [[NAME_CLASS]] < Action
|
8
8
|
def self.run(params)
|
9
|
-
|
10
|
-
|
9
|
+
params = params.first
|
10
|
+
|
11
|
+
Helper.log.info "My Ruby Code!"
|
12
|
+
# Helper.log.info "Parameter Path: #{params[:first]}"
|
11
13
|
# sh "shellcommand ./path"
|
12
14
|
|
13
15
|
# Actions.lane_context[SharedValues::[[NAME_UP]]_CUSTOM_VALUE] = "my_val"
|
data/lib/fastlane.rb
CHANGED
data/lib/fastlane/action.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'fastlane/actions/actions_helper'
|
2
|
+
|
1
3
|
module Fastlane
|
2
4
|
class Action
|
3
5
|
def self.run(params)
|
@@ -33,5 +35,10 @@ module Fastlane
|
|
33
35
|
def self.author
|
34
36
|
"KrauseFx"
|
35
37
|
end
|
38
|
+
|
39
|
+
# to allow a simple `sh` in the custom actions
|
40
|
+
def self.sh(command)
|
41
|
+
Fastlane::Actions.sh(command)
|
42
|
+
end
|
36
43
|
end
|
37
44
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module Fastlane
|
2
|
+
class ActionCollector
|
3
|
+
HOST_URL = "https://fastlane-enhancer.herokuapp.com/"
|
4
|
+
|
5
|
+
def did_launch_action(name)
|
6
|
+
launches[name] ||= 0
|
7
|
+
launches[name] += 1
|
8
|
+
end
|
9
|
+
|
10
|
+
def did_raise_error(name)
|
11
|
+
@error = name
|
12
|
+
end
|
13
|
+
|
14
|
+
# Sends the used actions
|
15
|
+
# Example data => [:xcode_select, :deliver, :notify, :slack]
|
16
|
+
def did_finish
|
17
|
+
Thread.new do
|
18
|
+
unless ENV["FASTLANE_OPT_OUT_USAGE"]
|
19
|
+
|
20
|
+
unless did_show_message?
|
21
|
+
Helper.log.debug("Sending Crash/Success information. More information on: https://github.com/fastlane/enhancer")
|
22
|
+
Helper.log.debug(launches)
|
23
|
+
Helper.log.debug(@error) if @error
|
24
|
+
Helper.log.debug("This information is used to fix failing actions and improve integrations that are often used.")
|
25
|
+
Helper.log.debug("You can disable this by adding `opt_out_usage` to your Fastfile")
|
26
|
+
end
|
27
|
+
|
28
|
+
require 'excon'
|
29
|
+
url = HOST_URL + '/did_launch?'
|
30
|
+
url += URI.encode_www_form(
|
31
|
+
steps: launches.to_json,
|
32
|
+
error: @error
|
33
|
+
)
|
34
|
+
|
35
|
+
Excon.post(url)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def launches
|
41
|
+
@launches ||= {}
|
42
|
+
end
|
43
|
+
|
44
|
+
def did_show_message?
|
45
|
+
path = File.join(File.expand_path('~'), '.did_show_opt_info')
|
46
|
+
|
47
|
+
did_show = File.exists?path
|
48
|
+
File.write(path, '1')
|
49
|
+
did_show
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -16,7 +16,7 @@ module Fastlane
|
|
16
16
|
beta = params.include?(:beta)
|
17
17
|
skip_deploy = params.include?(:skip_deploy)
|
18
18
|
|
19
|
-
Dir.chdir(FastlaneFolder.path || Dir.pwd) do
|
19
|
+
Dir.chdir(ENV["DELIVERFILE_PATH"] || FastlaneFolder.path || Dir.pwd) do
|
20
20
|
# This should be executed in the fastlane folder
|
21
21
|
Deliver::Deliverer.new(nil,
|
22
22
|
force: force,
|
@@ -24,7 +24,7 @@ module Fastlane
|
|
24
24
|
require 'shenzhen'
|
25
25
|
require 'shenzhen/plugins/hockeyapp'
|
26
26
|
|
27
|
-
raise "No API Token for Hockey given, pass using `api_token: 'token'
|
27
|
+
raise "No API Token for Hockey given, pass using `api_token: 'token'`. Open https://rink.hockeyapp.net/manage/auth_tokens to get one".red unless options[:api_token].to_s.length > 0
|
28
28
|
raise "No IPA file given or found, pass using `ipa: 'path.ipa'`".red unless options[:ipa]
|
29
29
|
raise "IPA file on path '#{File.expand_path(options[:ipa])}' not found".red unless File.exist?(options[:ipa])
|
30
30
|
|
@@ -74,12 +74,12 @@ module Fastlane
|
|
74
74
|
['ipa', 'Path to the ipa file. Optional if you use the `ipa` or `xcodebuild` action'],
|
75
75
|
['notes', 'The changelog for this build'],
|
76
76
|
['dsym', 'Path to the dsym file. Optional if you use the `ipa` or `xcodebuild` action'],
|
77
|
-
['status', 'No
|
77
|
+
['status', 'Download status: 1 = No user can download; 2 = Available for download'],
|
78
78
|
['notify', 'Notify testers? 1 for yes'],
|
79
79
|
]
|
80
80
|
end
|
81
81
|
|
82
|
-
def output
|
82
|
+
def self.output
|
83
83
|
[
|
84
84
|
['HOCKEY_DOWNLOAD_LINK', 'The newly generated download link for this build'],
|
85
85
|
['HOCKEY_BUILD_INFORMATION', 'contains all keys/values from the HockeyApp API, like :title, :bundle_identifier']
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
class OptOutUsageAction < Action
|
4
|
+
def self.run(params)
|
5
|
+
ENV['FASTLANE_OPT_OUT_USAGE'] = "YES"
|
6
|
+
Helper.log.info "Disabled upload of used actions"
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.description
|
10
|
+
"This will stop uploading the information which actions were run"
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.details
|
14
|
+
[
|
15
|
+
"By default, fastlane will share the used actions. ",
|
16
|
+
"No personal information is shard. More information available on ",
|
17
|
+
"https://github.com/fastlane/enhancer\n",
|
18
|
+
"Using this action you can opt out"
|
19
|
+
].join('')
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.author
|
23
|
+
"KrauseFx"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -119,15 +119,32 @@ module Fastlane
|
|
119
119
|
if testing
|
120
120
|
if params[:reports]
|
121
121
|
# New report options format
|
122
|
-
reports = params[:reports].
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
122
|
+
reports = params[:reports].reduce("") do |arguments, report|
|
123
|
+
|
124
|
+
report_string = "--report #{report[:report]}"
|
125
|
+
|
126
|
+
if report[:output]
|
127
|
+
report_string << " --output \"#{report[:output]}\""
|
128
|
+
elsif report[:report] == 'junit'
|
129
|
+
report_string << " --output \"#{build_path}report/report.xml\""
|
130
|
+
elsif report[:report] == 'html'
|
131
|
+
report_string << " --output \"#{build_path}report/report.html\""
|
132
|
+
elsif report[:report] == 'json-compilation-database'
|
133
|
+
report_string << " --output \"#{build_path}report/report.json\""
|
127
134
|
end
|
135
|
+
|
136
|
+
if report[:screenshots]
|
137
|
+
report_string << " --screenshots"
|
138
|
+
end
|
139
|
+
|
140
|
+
unless arguments == ""
|
141
|
+
arguments << " "
|
142
|
+
end
|
143
|
+
|
144
|
+
arguments << report_string
|
128
145
|
end
|
129
146
|
|
130
|
-
xcpretty_args.push reports
|
147
|
+
xcpretty_args.push reports
|
131
148
|
|
132
149
|
elsif params[:report_formats]
|
133
150
|
# Test report file format
|
data/lib/fastlane/fast_file.rb
CHANGED
@@ -12,6 +12,10 @@ module Fastlane
|
|
12
12
|
parse(content)
|
13
13
|
end
|
14
14
|
|
15
|
+
def collector
|
16
|
+
@collector ||= ActionCollector.new
|
17
|
+
end
|
18
|
+
|
15
19
|
def parse(data)
|
16
20
|
@runner = Runner.new
|
17
21
|
|
@@ -60,6 +64,11 @@ module Fastlane
|
|
60
64
|
end
|
61
65
|
end
|
62
66
|
|
67
|
+
# Fastfile was finished executing
|
68
|
+
def did_finish
|
69
|
+
collector.did_finish
|
70
|
+
end
|
71
|
+
|
63
72
|
def method_missing(method_sym, *arguments, &_block)
|
64
73
|
# First, check if there is a predefined method in the actions folder
|
65
74
|
|
@@ -73,14 +82,21 @@ module Fastlane
|
|
73
82
|
end
|
74
83
|
|
75
84
|
if class_ref && class_ref.respond_to?(:run)
|
85
|
+
collector.did_launch_action(method_sym)
|
86
|
+
|
76
87
|
step_name = class_ref.step_text rescue nil
|
77
88
|
step_name = method_sym.to_s unless step_name
|
78
89
|
Helper.log_alert("Step: " + step_name)
|
79
90
|
|
80
|
-
|
81
|
-
|
82
|
-
|
91
|
+
begin
|
92
|
+
Dir.chdir('..') do # go up from the fastlane folder, to the project folder
|
93
|
+
Actions.execute_action(method_sym) do
|
94
|
+
class_ref.run(arguments)
|
95
|
+
end
|
83
96
|
end
|
97
|
+
rescue => ex
|
98
|
+
collector.did_raise_error(method_sym)
|
99
|
+
raise ex
|
84
100
|
end
|
85
101
|
else
|
86
102
|
raise "Action '#{method_sym}' of class '#{class_name}' was found, but has no `run` method.".red
|
@@ -53,18 +53,22 @@ module Fastlane
|
|
53
53
|
e = ex
|
54
54
|
end
|
55
55
|
|
56
|
+
thread = ff.did_finish
|
57
|
+
|
56
58
|
# Finished with all the lanes
|
57
59
|
Fastlane::JUnitGenerator.generate(Fastlane::Actions.executed_actions)
|
58
60
|
|
59
61
|
duration = ((Time.now - start) / 60.0).round
|
60
62
|
|
61
63
|
unless e
|
64
|
+
thread.join # to wait for the request to be finished
|
62
65
|
if duration > 5
|
63
66
|
Helper.log.info "fastlane.tools just saved you #{duration} minutes! 🎉".green
|
64
67
|
else
|
65
68
|
Helper.log.info 'fastlane.tools finished successfully 🎉'.green
|
66
69
|
end
|
67
70
|
else
|
71
|
+
thread.join # to wait for the request to be finished
|
68
72
|
Helper.log.fatal 'fastlane finished with errors'.red
|
69
73
|
raise e
|
70
74
|
end
|
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.8.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-04-
|
11
|
+
date: 2015-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -98,9 +98,9 @@ dependencies:
|
|
98
98
|
name: cupertino
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- -
|
101
|
+
- - '>='
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: 1.3.2
|
104
104
|
- - '>='
|
105
105
|
- !ruby/object:Gem::Version
|
106
106
|
version: 1.3.1
|
@@ -108,9 +108,9 @@ dependencies:
|
|
108
108
|
prerelease: false
|
109
109
|
version_requirements: !ruby/object:Gem::Requirement
|
110
110
|
requirements:
|
111
|
-
- -
|
111
|
+
- - '>='
|
112
112
|
- !ruby/object:Gem::Version
|
113
|
-
version:
|
113
|
+
version: 1.3.2
|
114
114
|
- - '>='
|
115
115
|
- !ruby/object:Gem::Version
|
116
116
|
version: 1.3.1
|
@@ -246,14 +246,14 @@ dependencies:
|
|
246
246
|
requirements:
|
247
247
|
- - '>='
|
248
248
|
- !ruby/object:Gem::Version
|
249
|
-
version: 0.1.
|
249
|
+
version: 0.1.5
|
250
250
|
type: :runtime
|
251
251
|
prerelease: false
|
252
252
|
version_requirements: !ruby/object:Gem::Requirement
|
253
253
|
requirements:
|
254
254
|
- - '>='
|
255
255
|
- !ruby/object:Gem::Version
|
256
|
-
version: 0.1.
|
256
|
+
version: 0.1.5
|
257
257
|
- !ruby/object:Gem::Dependency
|
258
258
|
name: bundler
|
259
259
|
requirement: !ruby/object:Gem::Requirement
|
@@ -384,6 +384,7 @@ files:
|
|
384
384
|
- lib/assets/s3_plist_template.erb
|
385
385
|
- lib/fastlane.rb
|
386
386
|
- lib/fastlane/action.rb
|
387
|
+
- lib/fastlane/action_collector.rb
|
387
388
|
- lib/fastlane/actions/README.md
|
388
389
|
- lib/fastlane/actions/actions_helper.rb
|
389
390
|
- lib/fastlane/actions/add_git_tag.rb
|
@@ -405,6 +406,7 @@ files:
|
|
405
406
|
- lib/fastlane/actions/install_cocapods.rb
|
406
407
|
- lib/fastlane/actions/ipa.rb
|
407
408
|
- lib/fastlane/actions/notify.rb
|
409
|
+
- lib/fastlane/actions/opt_out_usage.rb
|
408
410
|
- lib/fastlane/actions/produce.rb
|
409
411
|
- lib/fastlane/actions/push_to_git_remote.rb
|
410
412
|
- lib/fastlane/actions/register_devices.rb
|