fastlane 2.35.1 → 2.36.0.beta.20170525010052

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: 7fc8ccf1f9195a68e880ef911a47d30128bc8489
4
- data.tar.gz: 4648666b7b936e7203a257162173103ed2688497
3
+ metadata.gz: 081c66bd3dfba98434c2ddf9c795766f8f639df2
4
+ data.tar.gz: 0392045cfe30e5e03da8173b5f8876eb39d91b1b
5
5
  SHA512:
6
- metadata.gz: 027c1be62f0539959b5f4d328a5841bef63f4260cda37dc85619b8ea6d5cb226e3029bef9f5c89e26fbaeb83369db8b0462395ff50ec1260b75ef1ce2ecc7e3d
7
- data.tar.gz: e4aebb2f36c441f5e4d31995df6d127c5e4a517fc5cd7f426d4ab5d51439b411baaf7a0ed6d3af1e477eaea992f3e32fadf14ac4ec48c73f68b4472915404f56
6
+ metadata.gz: c158081ba4cfd9237606bd89ed40d4c3747c690e95c9de03569ded3fda250760a6f70f81112267f3d8e50c0fa8eb85ee8ebdaa8411865cfc8a5764f393fdbd59
7
+ data.tar.gz: c282fbbfd0cdd4c636ddbcb9758eec8d0ba1c1f1f56267eddcd45dd22e46953a36d9721f4dbb0ace67d5862a56778c25bc640147d3785336cd9765b2e2b52376
@@ -112,7 +112,7 @@ module Fastlane
112
112
  short_option: "-a",
113
113
  env_name: "DOWNLOAD_DSYMS_APP_IDENTIFIER",
114
114
  description: "The bundle identifier of your app",
115
- optional: false,
115
+ optional: true,
116
116
  default_value: CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier)),
117
117
  FastlaneCore::ConfigItem.new(key: :team_id,
118
118
  short_option: "-k",
@@ -92,7 +92,6 @@ module Fastlane
92
92
  UI.important "to launch fastlane faster, please use"
93
93
  UI.message ""
94
94
  UI.command "bundle exec fastlane #{ARGV.join(' ')}"
95
- UI.message ""
96
95
  else
97
96
  # fastlane is slow and there is no Gemfile
98
97
  # Let's tell the user how to use `gem cleanup` and how to
@@ -233,16 +233,11 @@ module Fastlane
233
233
  [key, content.to_s]
234
234
  end
235
235
 
236
- begin
237
- require 'terminal-table'
238
- puts Terminal::Table.new({
239
- title: "Lane Context".yellow,
240
- rows: FastlaneCore::PrintTable.transform_output(rows)
241
- })
242
- rescue
243
- os = Helper.linux? ? 'linux' : 'mac'
244
- UI.crash!("Something went wrong trying to print the lane context on #{os}")
245
- end
236
+ require 'terminal-table'
237
+ puts Terminal::Table.new({
238
+ title: "Lane Context".yellow,
239
+ rows: FastlaneCore::PrintTable.transform_output(rows)
240
+ })
246
241
  end
247
242
  end
248
243
  end
@@ -319,23 +319,14 @@ module Fastlane
319
319
  end
320
320
 
321
321
  def set_before_all(platform, block)
322
- unless before_all_blocks[platform].nil?
323
- UI.error("You defined multiple `before_all` blocks in your `Fastfile`. The last one being set will be used.")
324
- end
325
322
  before_all_blocks[platform] = block
326
323
  end
327
324
 
328
325
  def set_after_all(platform, block)
329
- unless after_all_blocks[platform].nil?
330
- UI.error("You defined multiple `after_all` blocks in your `Fastfile`. The last one being set will be used.")
331
- end
332
326
  after_all_blocks[platform] = block
333
327
  end
334
328
 
335
329
  def set_error(platform, block)
336
- unless error_blocks[platform].nil?
337
- UI.error("You defined multiple `error` blocks in your `Fastfile`. The last one being set will be used.")
338
- end
339
330
  error_blocks[platform] = block
340
331
  end
341
332
 
@@ -55,8 +55,7 @@ module Fastlane
55
55
 
56
56
  # rubocop:disable Style/IndentationConsistency
57
57
  %{ #
58
- # Learn more here: https://docs.fastlane.tools/getting-started/ios/beta-deployment/
59
- # and: https://docs.fastlane.tools/getting-started/android/beta-deployment/
58
+ # Learn more here: https://github.com/fastlane/setups/blob/master/samples-ios/distribute-beta-build.md 🚀
60
59
  #
61
60
  lane :beta do |values|
62
61
  # Fabric generated this lane for deployment to Crashlytics Beta
@@ -1,4 +1,4 @@
1
1
  module Fastlane
2
- VERSION = '2.35.1'.freeze
2
+ VERSION = '2.36.0.beta.20170525010052'.freeze
3
3
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
4
4
  end
@@ -62,20 +62,7 @@ module Commander
62
62
  raise e
63
63
  else
64
64
  FastlaneCore::CrashReporter.report_crash(exception: e, action: @program[:name])
65
- if self.active_command.name == "help" && @default_command == :help # need to access directly via @
66
- # This is a special case, for example for pilot
67
- # when the user runs `fastlane pilot -u user@google.com`
68
- # This would be confusing, as the user probably wanted to use `pilot list`
69
- # or some other command. Because `-u` isn't available for the `pilot --help`
70
- # command it would show this very confusing error message otherwise
71
- abort "Please ensure to use one of the available commands (#{self.commands.keys.join(', ')})".red
72
- else
73
- # This would print something like
74
- #
75
- # invalid option: -u
76
- #
77
- abort e.to_s
78
- end
65
+ abort e.to_s
79
66
  end
80
67
  rescue FastlaneCore::Interface::FastlaneCommonException => e # these are exceptions that we dont count as crashes
81
68
  display_user_error!(e, e.to_s)
@@ -5,10 +5,6 @@ require 'terminal-table'
5
5
 
6
6
  module Scan
7
7
  class Runner
8
- def initialize
9
- @test_command_generator = TestCommandGenerator.new
10
- end
11
-
12
8
  def run
13
9
  handle_results(test_app)
14
10
  end
@@ -20,7 +16,7 @@ module Scan
20
16
  # This way it's okay to just call it for the first simulator we're using for
21
17
  # the first test run
22
18
  open_simulator_for_device(Scan.devices.first) if Scan.devices
23
- command = @test_command_generator.generate
19
+ command = TestCommandGenerator.generate
24
20
  prefix_hash = [
25
21
  {
26
22
  prefix: "Running Tests: ",
@@ -84,17 +80,7 @@ module Scan
84
80
  end
85
81
 
86
82
  def test_results
87
- temp_junit_report = Scan.cache[:temp_junit_report]
88
- return File.read(temp_junit_report) if temp_junit_report && File.file?(temp_junit_report)
89
-
90
- # Something went wrong with the temp junit report for the test success/failures count.
91
- # We'll have to regenerate from the xcodebuild log, like we did before version 2.34.0.
92
- UI.message("Generating test results. This may take a while for large projects.")
93
-
94
- reporter_options_generator = XCPrettyReporterOptionsGenerator.new(false, [], [], "", false)
95
- reporter_options = reporter_options_generator.generate_reporter_options
96
- cmd = "cat #{@test_command_generator.xcodebuild_log_path} | xcpretty #{reporter_options.join(' ')} &> /dev/null"
97
- system(cmd)
83
+ return "" unless Scan.cache[:temp_junit_report]
98
84
  File.read(Scan.cache[:temp_junit_report])
99
85
  end
100
86
 
@@ -1,147 +1,149 @@
1
1
  module Scan
2
2
  # Responsible for building the fully working xcodebuild command
3
3
  class TestCommandGenerator
4
- def generate
5
- parts = prefix
6
- parts << "env NSUnbufferedIO=YES xcodebuild"
7
- parts += options
8
- parts += actions
9
- parts += suffix
10
- parts += pipe
11
-
12
- parts
13
- end
14
-
15
- def prefix
16
- ["set -o pipefail &&"]
17
- end
18
-
19
- # Path to the project or workspace as parameter
20
- # This will also include the scheme (if given)
21
- # @return [Array] The array with all the components to join
22
- def project_path_array
23
- proj = Scan.project.xcodebuild_parameters
24
- return proj if proj.count > 0
25
- UI.user_error!("No project/workspace found")
26
- end
27
-
28
- def options
29
- config = Scan.config
30
-
31
- options = []
32
- options += project_path_array unless config[:xctestrun]
33
- options << "-sdk '#{config[:sdk]}'" if config[:sdk]
34
- options << destination # generated in `detect_values`
35
- options << "-toolchain '#{config[:toolchain]}'" if config[:toolchain]
36
- options << "-derivedDataPath '#{config[:derived_data_path]}'" if config[:derived_data_path]
37
- options << "-resultBundlePath '#{result_bundle_path}'" if config[:result_bundle]
38
- options << "-enableCodeCoverage #{config[:code_coverage] ? 'YES' : 'NO'}" unless config[:code_coverage].nil?
39
- options << "-enableAddressSanitizer #{config[:address_sanitizer] ? 'YES' : 'NO'}" unless config[:address_sanitizer].nil?
40
- options << "-enableThreadSanitizer #{config[:thread_sanitizer] ? 'YES' : 'NO'}" unless config[:thread_sanitizer].nil?
41
- options << "-xcconfig '#{config[:xcconfig]}'" if config[:xcconfig]
42
- options << "-xctestrun '#{config[:xctestrun]}'" if config[:xctestrun]
43
- options << config[:xcargs] if config[:xcargs]
44
-
45
- # detect_values will ensure that these values are present as Arrays if
46
- # they are present at all
47
- options += config[:only_testing].map { |test_id| "-only-testing:#{test_id}" } if config[:only_testing]
48
- options += config[:skip_testing].map { |test_id| "-skip-testing:#{test_id}" } if config[:skip_testing]
49
-
50
- options
51
- end
4
+ class << self
5
+ def generate
6
+ parts = prefix
7
+ parts << "env NSUnbufferedIO=YES xcodebuild"
8
+ parts += options
9
+ parts += actions
10
+ parts += suffix
11
+ parts += pipe
12
+
13
+ parts
14
+ end
52
15
 
53
- def actions
54
- config = Scan.config
16
+ def prefix
17
+ ["set -o pipefail &&"]
18
+ end
55
19
 
56
- actions = []
57
- actions << :clean if config[:clean]
20
+ # Path to the project or workspace as parameter
21
+ # This will also include the scheme (if given)
22
+ # @return [Array] The array with all the components to join
23
+ def project_path_array
24
+ proj = Scan.project.xcodebuild_parameters
25
+ return proj if proj.count > 0
26
+ UI.user_error!("No project/workspace found")
27
+ end
58
28
 
59
- if config[:build_for_testing]
60
- actions << "build-for-testing"
61
- elsif config[:test_without_building] || config[:xctestrun]
62
- actions << "test-without-building"
63
- else
64
- actions << :build unless config[:skip_build]
65
- actions << :test
29
+ def options
30
+ config = Scan.config
31
+
32
+ options = []
33
+ options += project_path_array unless config[:xctestrun]
34
+ options << "-sdk '#{config[:sdk]}'" if config[:sdk]
35
+ options << destination # generated in `detect_values`
36
+ options << "-toolchain '#{config[:toolchain]}'" if config[:toolchain]
37
+ options << "-derivedDataPath '#{config[:derived_data_path]}'" if config[:derived_data_path]
38
+ options << "-resultBundlePath '#{result_bundle_path}'" if config[:result_bundle]
39
+ options << "-enableCodeCoverage #{config[:code_coverage] ? 'YES' : 'NO'}" unless config[:code_coverage].nil?
40
+ options << "-enableAddressSanitizer #{config[:address_sanitizer] ? 'YES' : 'NO'}" unless config[:address_sanitizer].nil?
41
+ options << "-enableThreadSanitizer #{config[:thread_sanitizer] ? 'YES' : 'NO'}" unless config[:thread_sanitizer].nil?
42
+ options << "-xcconfig '#{config[:xcconfig]}'" if config[:xcconfig]
43
+ options << "-xctestrun '#{config[:xctestrun]}'" if config[:xctestrun]
44
+ options << config[:xcargs] if config[:xcargs]
45
+
46
+ # detect_values will ensure that these values are present as Arrays if
47
+ # they are present at all
48
+ options += config[:only_testing].map { |test_id| "-only-testing:#{test_id}" } if config[:only_testing]
49
+ options += config[:skip_testing].map { |test_id| "-skip-testing:#{test_id}" } if config[:skip_testing]
50
+
51
+ options
66
52
  end
67
53
 
68
- actions
69
- end
54
+ def actions
55
+ config = Scan.config
70
56
 
71
- def suffix
72
- suffix = []
73
- suffix
74
- end
57
+ actions = []
58
+ actions << :clean if config[:clean]
75
59
 
76
- def pipe
77
- pipe = ["| tee '#{xcodebuild_log_path}'"]
60
+ if config[:build_for_testing]
61
+ actions << "build-for-testing"
62
+ elsif config[:test_without_building] || config[:xctestrun]
63
+ actions << "test-without-building"
64
+ else
65
+ actions << :build unless config[:skip_build]
66
+ actions << :test
67
+ end
78
68
 
79
- if Scan.config[:output_style] == 'raw'
80
- return pipe
69
+ actions
81
70
  end
82
71
 
83
- formatter = []
84
- if Scan.config[:formatter]
85
- formatter << "-f `#{Scan.config[:formatter]}`"
86
- elsif FastlaneCore::Env.truthy?("TRAVIS")
87
- formatter << "-f `xcpretty-travis-formatter`"
88
- UI.success("Automatically switched to Travis formatter")
72
+ def suffix
73
+ suffix = []
74
+ suffix
89
75
  end
90
76
 
91
- if Helper.colors_disabled?
92
- formatter << "--no-color"
77
+ def pipe
78
+ pipe = ["| tee '#{xcodebuild_log_path}'"]
79
+
80
+ if Scan.config[:output_style] == 'raw'
81
+ return pipe
82
+ end
83
+
84
+ formatter = []
85
+ if Scan.config[:formatter]
86
+ formatter << "-f `#{Scan.config[:formatter]}`"
87
+ elsif FastlaneCore::Env.truthy?("TRAVIS")
88
+ formatter << "-f `xcpretty-travis-formatter`"
89
+ UI.success("Automatically switched to Travis formatter")
90
+ end
91
+
92
+ if Helper.colors_disabled?
93
+ formatter << "--no-color"
94
+ end
95
+
96
+ if Scan.config[:output_style] == 'basic'
97
+ formatter << "--no-utf"
98
+ end
99
+
100
+ if Scan.config[:output_style] == 'rspec'
101
+ formatter << "--test"
102
+ end
103
+
104
+ reporter_options_generator = XCPrettyReporterOptionsGenerator.new(Scan.config[:open_report],
105
+ Scan.config[:output_types],
106
+ Scan.config[:output_files] || Scan.config[:custom_report_file_name],
107
+ Scan.config[:output_directory],
108
+ Scan.config[:use_clang_report_name])
109
+ reporter_options = reporter_options_generator.generate_reporter_options
110
+ return pipe << "| xcpretty #{formatter.join(' ')} #{reporter_options.join(' ')}"
93
111
  end
94
112
 
95
- if Scan.config[:output_style] == 'basic'
96
- formatter << "--no-utf"
97
- end
113
+ # Store the raw file
114
+ def xcodebuild_log_path
115
+ file_name = "#{Scan.project.app_name}-#{Scan.config[:scheme]}.log"
116
+ containing = File.expand_path(Scan.config[:buildlog_path])
117
+ FileUtils.mkdir_p(containing)
98
118
 
99
- if Scan.config[:output_style] == 'rspec'
100
- formatter << "--test"
119
+ return File.join(containing, file_name)
101
120
  end
102
121
 
103
- @reporter_options_generator = XCPrettyReporterOptionsGenerator.new(Scan.config[:open_report],
104
- Scan.config[:output_types],
105
- Scan.config[:output_files] || Scan.config[:custom_report_file_name],
106
- Scan.config[:output_directory],
107
- Scan.config[:use_clang_report_name])
108
- reporter_options = @reporter_options_generator.generate_reporter_options
109
- return pipe << "| xcpretty #{formatter.join(' ')} #{reporter_options.join(' ')}"
110
- end
111
-
112
- # Store the raw file
113
- def xcodebuild_log_path
114
- file_name = "#{Scan.project.app_name}-#{Scan.config[:scheme]}.log"
115
- containing = File.expand_path(Scan.config[:buildlog_path])
116
- FileUtils.mkdir_p(containing)
117
-
118
- return File.join(containing, file_name)
119
- end
120
-
121
- # Generate destination parameters
122
- def destination
123
- unless Scan.cache[:destination]
124
- Scan.cache[:destination] = [*Scan.config[:destination]].map { |dst| "-destination '#{dst}'" }.join(' ')
122
+ # Generate destination parameters
123
+ def destination
124
+ unless Scan.cache[:destination]
125
+ Scan.cache[:destination] = [*Scan.config[:destination]].map { |dst| "-destination '#{dst}'" }.join(' ')
126
+ end
127
+ Scan.cache[:destination]
125
128
  end
126
- Scan.cache[:destination]
127
- end
128
129
 
129
- # The path to set the Derived Data to
130
- def build_path
131
- unless Scan.cache[:build_path]
132
- day = Time.now.strftime("%F") # e.g. 2015-08-07
130
+ # The path to set the Derived Data to
131
+ def build_path
132
+ unless Scan.cache[:build_path]
133
+ day = Time.now.strftime("%F") # e.g. 2015-08-07
133
134
 
134
- Scan.cache[:build_path] = File.expand_path("~/Library/Developer/Xcode/Archives/#{day}/")
135
- FileUtils.mkdir_p Scan.cache[:build_path]
135
+ Scan.cache[:build_path] = File.expand_path("~/Library/Developer/Xcode/Archives/#{day}/")
136
+ FileUtils.mkdir_p Scan.cache[:build_path]
137
+ end
138
+ Scan.cache[:build_path]
136
139
  end
137
- Scan.cache[:build_path]
138
- end
139
140
 
140
- def result_bundle_path
141
- unless Scan.cache[:result_bundle_path]
142
- Scan.cache[:result_bundle_path] = File.join(Scan.config[:output_directory], Scan.config[:scheme]) + ".test_result"
141
+ def result_bundle_path
142
+ unless Scan.cache[:result_bundle_path]
143
+ Scan.cache[:result_bundle_path] = File.join(Scan.config[:output_directory], Scan.config[:scheme]) + ".test_result"
144
+ end
145
+ return Scan.cache[:result_bundle_path]
143
146
  end
144
- return Scan.cache[:result_bundle_path]
145
147
  end
146
148
  end
147
149
  end
@@ -14,10 +14,7 @@ module Scan
14
14
  }
15
15
  else
16
16
  UI.error("Couldn't parse the number of tests from the output")
17
- return {
18
- tests: 0,
19
- failures: 0
20
- }
17
+ return {}
21
18
  end
22
19
  end
23
20
  end
@@ -45,7 +45,7 @@ module Scan
45
45
  type = raw_type.strip
46
46
  output_path = File.join(File.expand_path(@output_directory), determine_output_file_name(type))
47
47
  reporter << "--report #{type}"
48
- reporter << "--output '#{output_path}'"
48
+ reporter << "--output #{output_path}"
49
49
 
50
50
  if type == "html" && @open_report
51
51
  Scan.cache[:open_html_report_path] = output_path
@@ -55,10 +55,9 @@ module Scan
55
55
  # adds another junit reporter in case the user does not specify one
56
56
  # this will be used to generate a results table and then discarded
57
57
  require 'tempfile'
58
- @temp_junit_report = Tempfile.new("junit_report")
59
- Scan.cache[:temp_junit_report] = @temp_junit_report.path
58
+ Scan.cache[:temp_junit_report] = Tempfile.new("junit_report").path
60
59
  reporter << "--report junit"
61
- reporter << "--output '#{Scan.cache[:temp_junit_report]}'"
60
+ reporter << "--output #{Scan.cache[:temp_junit_report]}"
62
61
  return reporter
63
62
  end
64
63
 
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: 2.35.1
4
+ version: 2.36.0.beta.20170525010052
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: 2017-05-26 00:00:00.000000000 Z
18
+ date: 2017-05-25 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: slack-notifier
@@ -1267,7 +1267,6 @@ files:
1267
1267
  - spaceship/lib/assets/languageMapping.json
1268
1268
  - spaceship/lib/assets/languageMappingReadable.json
1269
1269
  - spaceship/lib/spaceship.rb
1270
- - spaceship/lib/spaceship/.DS_Store
1271
1270
  - spaceship/lib/spaceship/babosa_fix.rb
1272
1271
  - spaceship/lib/spaceship/base.rb
1273
1272
  - spaceship/lib/spaceship/client.rb
@@ -1369,22 +1368,22 @@ metadata:
1369
1368
  post_install_message:
1370
1369
  rdoc_options: []
1371
1370
  require_paths:
1372
- - cert/lib
1371
+ - scan/lib
1373
1372
  - credentials_manager/lib
1374
- - deliver/lib
1375
- - fastlane/lib
1373
+ - pilot/lib
1376
1374
  - fastlane_core/lib
1377
- - frameit/lib
1378
- - gym/lib
1375
+ - fastlane/lib
1379
1376
  - match/lib
1377
+ - cert/lib
1378
+ - sigh/lib
1379
+ - spaceship/lib
1380
1380
  - pem/lib
1381
- - pilot/lib
1382
- - produce/lib
1383
- - scan/lib
1384
1381
  - screengrab/lib
1385
- - sigh/lib
1382
+ - gym/lib
1383
+ - deliver/lib
1386
1384
  - snapshot/lib
1387
- - spaceship/lib
1385
+ - frameit/lib
1386
+ - produce/lib
1388
1387
  - supply/lib
1389
1388
  required_ruby_version: !ruby/object:Gem::Requirement
1390
1389
  requirements:
@@ -1393,15 +1392,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
1393
1392
  version: 2.0.0
1394
1393
  required_rubygems_version: !ruby/object:Gem::Requirement
1395
1394
  requirements:
1396
- - - ">="
1395
+ - - ">"
1397
1396
  - !ruby/object:Gem::Version
1398
- version: '0'
1397
+ version: 1.3.1
1399
1398
  requirements: []
1400
1399
  rubyforge_project:
1401
- rubygems_version: 2.2.5
1400
+ rubygems_version: 2.4.5.2
1402
1401
  signing_key:
1403
1402
  specification_version: 4
1404
1403
  summary: The easiest way to automate beta deployments and releases for your iOS and
1405
1404
  Android apps
1406
1405
  test_files: []
1407
- has_rdoc:
Binary file