pilot 1.4.1 → 1.5.0

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: fcf5db2c37b289ef2e099745176fb88ae3aff799
4
- data.tar.gz: 324924e93fe0ac479695c32bc555e0da83dbc618
3
+ metadata.gz: f1e44d1482a75b5b6cc38fb79309233ffc34d106
4
+ data.tar.gz: 14bf3e03b9932767897baec443526151ba3cec9d
5
5
  SHA512:
6
- metadata.gz: b5d65adf78cf5941d2657ff2e4781aeacb534f4e328159bf89349570d76c1d37d20662ba4a2ba76a14f836d9fd43de8d218b0b55d954a98e6cd378891ed7c6fc
7
- data.tar.gz: 6bce97738474ee0d46827ef33719db98a5ea59b8a90f0a8449a988e402d725527136bb7a5d0caeaa5a2ffff755afa7ca5139253cadcfe9d3c51785d0a2bf86d1
6
+ metadata.gz: b15ccfb0bf04e29a61634a8c66a951e229cf6d7f4fb16dac26fc2c8d986c729f8b0069383406fadaef5cbf7e50d49230a673d87d5d400b4769a71711f269fad7
7
+ data.tar.gz: ef9c501eb0a54a5c36b2e1726d554291d872261c05f8027a667f1854ab03edb740a3b1b98afdf9fa9fc08a35e1a34631b9d3d727bf824353bb808a719715b652
data/README.md CHANGED
@@ -1,24 +1,24 @@
1
1
  <h3 align="center">
2
- <a href="https://github.com/fastlane/fastlane">
3
- <img src="assets/fastlane.png" width="150" />
2
+ <a href="https://github.com/fastlane/fastlane/tree/master/fastlane">
3
+ <img src="../fastlane/assets/fastlane.png" width="150" />
4
4
  <br />
5
5
  fastlane
6
6
  </a>
7
7
  </h3>
8
8
  <p align="center">
9
- <a href="https://github.com/fastlane/deliver">deliver</a> &bull;
10
- <a href="https://github.com/fastlane/snapshot">snapshot</a> &bull;
11
- <a href="https://github.com/fastlane/frameit">frameit</a> &bull;
12
- <a href="https://github.com/fastlane/pem">pem</a> &bull;
13
- <a href="https://github.com/fastlane/sigh">sigh</a> &bull;
14
- <a href="https://github.com/fastlane/produce">produce</a> &bull;
15
- <a href="https://github.com/fastlane/cert">cert</a> &bull;
16
- <a href="https://github.com/fastlane/spaceship">spaceship</a> &bull;
9
+ <a href="https://github.com/fastlane/fastlane/tree/master/deliver">deliver</a> &bull;
10
+ <a href="https://github.com/fastlane/fastlane/tree/master/snapshot">snapshot</a> &bull;
11
+ <a href="https://github.com/fastlane/fastlane/tree/master/frameit">frameit</a> &bull;
12
+ <a href="https://github.com/fastlane/fastlane/tree/master/pem">pem</a> &bull;
13
+ <a href="https://github.com/fastlane/fastlane/tree/master/sigh">sigh</a> &bull;
14
+ <a href="https://github.com/fastlane/fastlane/tree/master/produce">produce</a> &bull;
15
+ <a href="https://github.com/fastlane/fastlane/tree/master/cert">cert</a> &bull;
16
+ <a href="https://github.com/fastlane/fastlane/tree/master/spaceship">spaceship</a> &bull;
17
17
  <b>pilot</b> &bull;
18
18
  <a href="https://github.com/fastlane/boarding">boarding</a> &bull;
19
- <a href="https://github.com/fastlane/gym">gym</a> &bull;
20
- <a href="https://github.com/fastlane/scan">scan</a> &bull;
21
- <a href="https://github.com/fastlane/match">match</a>
19
+ <a href="https://github.com/fastlane/fastlane/tree/master/gym">gym</a> &bull;
20
+ <a href="https://github.com/fastlane/fastlane/tree/master/scan">scan</a> &bull;
21
+ <a href="https://github.com/fastlane/fastlane/tree/master/match">match</a>
22
22
  </p>
23
23
  -------
24
24
 
@@ -29,7 +29,7 @@
29
29
  Pilot
30
30
  ============
31
31
  [![Twitter: @FastlaneTools](https://img.shields.io/badge/contact-@FastlaneTools-blue.svg?style=flat)](https://twitter.com/FastlaneTools)
32
- [![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://github.com/fastlane/pilot/blob/master/LICENSE)
32
+ [![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://github.com/fastlane/fastlane/blob/master/pilot/LICENSE)
33
33
  [![Gem](https://img.shields.io/gem/v/pilot.svg?style=flat)](http://rubygems.org/gems/pilot)
34
34
 
35
35
 
@@ -49,9 +49,9 @@ Get in contact with the developer on Twitter: [@FastlaneTools](https://twitter.c
49
49
 
50
50
  -------
51
51
  <p align="center">
52
- <a href="#installation">Installation</a> &bull;
53
- <a href="#usage">Usage</a> &bull;
54
- <a href="#tips">Tips</a> &bull;
52
+ <a href="#installation">Installation</a> &bull;
53
+ <a href="#usage">Usage</a> &bull;
54
+ <a href="#tips">Tips</a> &bull;
55
55
  <a href="#need-help">Need help?</a>
56
56
  </p>
57
57
 
@@ -69,7 +69,7 @@ For all commands you can specify the Apple ID to use using `-u felix@krausefx.co
69
69
 
70
70
  ## Uploading builds
71
71
 
72
- To upload a new build, just run
72
+ To upload a new build, just run
73
73
 
74
74
  ```
75
75
  pilot upload
@@ -164,7 +164,7 @@ To add a new tester to both your iTunes Connect account and to your app (if give
164
164
  pilot add email@invite.com
165
165
  ```
166
166
 
167
- Additionally you can specify the app identifier (if necessary):
167
+ Additionally you can specify the app identifier (if necessary):
168
168
 
169
169
  ```
170
170
  pilot add email@email.com -a com.krausefx.app
@@ -230,18 +230,18 @@ pilot import -c ~/Desktop/testers.csv
230
230
  ## [`fastlane`](https://fastlane.tools) Toolchain
231
231
 
232
232
  - [`fastlane`](https://fastlane.tools): Connect all deployment tools into one streamlined workflow
233
- - [`deliver`](https://github.com/fastlane/deliver): Upload screenshots, metadata and your app to the App Store
234
- - [`snapshot`](https://github.com/fastlane/snapshot): Automate taking localized screenshots of your iOS app on every device
235
- - [`frameit`](https://github.com/fastlane/frameit): Quickly put your screenshots into the right device frames
236
- - [`produce`](https://github.com/fastlane/produce): Create new iOS apps on iTunes Connect and Dev Portal using the command line
237
- - [`pem`](https://github.com/fastlane/pem): Automatically generate and renew your push notification profiles
238
- - [`sigh`](https://github.com/fastlane/sigh): Because you would rather spend your time building stuff than fighting provisioning
239
- - [`cert`](https://github.com/fastlane/cert): Automatically create and maintain iOS code signing certificates
240
- - [`spaceship`](https://github.com/fastlane/spaceship): Ruby library to access the Apple Dev Center and iTunes Connect
233
+ - [`deliver`](https://github.com/fastlane/fastlane/tree/master/deliver): Upload screenshots, metadata and your app to the App Store
234
+ - [`snapshot`](https://github.com/fastlane/fastlane/tree/master/snapshot): Automate taking localized screenshots of your iOS app on every device
235
+ - [`frameit`](https://github.com/fastlane/fastlane/tree/master/frameit): Quickly put your screenshots into the right device frames
236
+ - [`produce`](https://github.com/fastlane/fastlane/tree/master/produce): Create new iOS apps on iTunes Connect and Dev Portal using the command line
237
+ - [`pem`](https://github.com/fastlane/fastlane/tree/master/pem): Automatically generate and renew your push notification profiles
238
+ - [`sigh`](https://github.com/fastlane/fastlane/tree/master/sigh): Because you would rather spend your time building stuff than fighting provisioning
239
+ - [`cert`](https://github.com/fastlane/fastlane/tree/master/cert): Automatically create and maintain iOS code signing certificates
240
+ - [`spaceship`](https://github.com/fastlane/fastlane/tree/master/spaceship): Ruby library to access the Apple Dev Center and iTunes Connect
241
241
  - [`boarding`](https://github.com/fastlane/boarding): The easiest way to invite your TestFlight beta testers
242
- - [`gym`](https://github.com/fastlane/gym): Building your iOS apps has never been easier
243
- - [`scan`](https://github.com/fastlane/scan): The easiest way to run tests of your iOS and Mac app
244
- - [`match`](https://github.com/fastlane/match): Easily sync your certificates and profiles across your team using git
242
+ - [`gym`](https://github.com/fastlane/fastlane/tree/master/gym): Building your iOS apps has never been easier
243
+ - [`scan`](https://github.com/fastlane/fastlane/tree/master/scan): The easiest way to run tests of your iOS and Mac app
244
+ - [`match`](https://github.com/fastlane/fastlane/tree/master/match): Easily sync your certificates and profiles across your team using git
245
245
 
246
246
  ##### [Like this tool? Be the first to know about updates and new fastlane tools](https://tinyletter.com/krausefx)
247
247
 
@@ -259,22 +259,26 @@ If you run into any issues you can use the `verbose` mode to get a more detailed
259
259
  DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS="-t DAV" pilot ...
260
260
  ```
261
261
 
262
- If you are using `pilot` via the [fastlane action](https://github.com/fastlane/fastlane/blob/master/docs/Actions.md#pilot), add the following to your `Fastfile`
262
+ If you are using `pilot` via the [fastlane action](https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Actions.md#pilot), add the following to your `Fastfile`
263
263
 
264
264
  ```
265
265
  ENV["DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS"] = "-t DAV"
266
266
  pilot...
267
267
  ```
268
268
 
269
+ ## Credentials Issues
270
+
271
+ If your password contains special characters, `pilot` may throw a confusing error saying your "Your Apple ID or password was entered incorrectly". The easiest way to fix this error is to change your password to something that **does not** contains special characters.
272
+
269
273
  ## How is my password stored?
270
274
 
271
- `pilot` uses the [CredentialsManager](https://github.com/fastlane/credentials_manager) from `fastlane`.
275
+ `pilot` uses the [CredentialsManager](https://github.com/fastlane/fastlane/tree/master/credentials_manager) from `fastlane`.
272
276
 
273
277
  # Need help?
274
278
  Please submit an issue on GitHub and provide information about your setup
275
279
 
276
280
  # Code of Conduct
277
- Help us keep `pilot` open and inclusive. Please read and follow our [Code of Conduct](https://github.com/fastlane/code-of-conduct).
281
+ Help us keep `pilot` open and inclusive. Please read and follow our [Code of Conduct](https://github.com/fastlane/fastlane/blob/master/CODE_OF_CONDUCT.md).
278
282
 
279
283
  # License
280
284
  This project is licensed under the terms of the MIT license. See the LICENSE file.
@@ -3,9 +3,9 @@ module Pilot
3
3
  def upload(options)
4
4
  start(options)
5
5
 
6
- raise "No ipa file given".red unless config[:ipa]
6
+ UI.user_error!("No ipa file given") unless config[:ipa]
7
7
 
8
- Helper.log.info "Ready to upload new build to TestFlight (App: #{app.apple_id})...".green
8
+ UI.success("Ready to upload new build to TestFlight (App: #{app.apple_id})...")
9
9
 
10
10
  plist = FastlaneCore::IpaFileAnalyser.fetch_info_plist_file(config[:ipa]) || {}
11
11
  platform = plist["DTPlatformName"]
@@ -19,16 +19,16 @@ module Pilot
19
19
  result = transporter.upload(app.apple_id, package_path)
20
20
 
21
21
  if result
22
- Helper.log.info "Successfully uploaded the new binary to iTunes Connect"
22
+ UI.message("Successfully uploaded the new binary to iTunes Connect")
23
23
 
24
24
  unless config[:skip_submission]
25
25
  uploaded_build = wait_for_processing_build
26
26
  distribute_build(uploaded_build, options)
27
27
 
28
- Helper.log.info "Successfully distributed build to beta testers 🚀"
28
+ UI.message("Successfully distributed build to beta testers 🚀")
29
29
  end
30
30
  else
31
- raise "Error uploading ipa file, more information see above".red
31
+ UI.user_error!("Error uploading ipa file, more information see above")
32
32
  end
33
33
  end
34
34
 
@@ -72,7 +72,7 @@ module Pilot
72
72
  wait_processing_interval = config[:wait_processing_interval].to_i
73
73
  latest_build = nil
74
74
  loop do
75
- Helper.log.info "Waiting for iTunes Connect to process the new build"
75
+ UI.message("Waiting for iTunes Connect to process the new build")
76
76
  sleep wait_processing_interval
77
77
  builds = app.all_processing_builds
78
78
  break if builds.count == 0
@@ -88,23 +88,23 @@ module Pilot
88
88
  b.build_version == latest_build.build_version
89
89
  end
90
90
 
91
- Helper.log.info "Waiting for iTunes Connect to finish processing the new build (#{full_build.train_version} - #{full_build.build_version})"
91
+ UI.message("Waiting for iTunes Connect to finish processing the new build (#{full_build.train_version} - #{full_build.build_version})")
92
92
  sleep wait_processing_interval
93
93
  end
94
94
 
95
95
  if full_build
96
96
  minutes = ((Time.now - start) / 60).round
97
- Helper.log.info "Successfully finished processing the build".green
98
- Helper.log.info "You can now tweet: "
99
- Helper.log.info "iTunes Connect #iosprocessingtime #{minutes} minutes".yellow
97
+ UI.success("Successfully finished processing the build")
98
+ UI.message("You can now tweet: ")
99
+ UI.important("iTunes Connect #iosprocessingtime #{minutes} minutes")
100
100
  return full_build
101
101
  else
102
- raise "Error: Seems like iTunes Connect didn't properly pre-process the binary".red
102
+ UI.user_error!("Error: Seems like iTunes Connect didn't properly pre-process the binary")
103
103
  end
104
104
  end
105
105
 
106
106
  def distribute_build(uploaded_build, options)
107
- Helper.log.info "Distributing new build to testers"
107
+ UI.message("Distributing new build to testers")
108
108
 
109
109
  # First, set the changelog (if necessary)
110
110
  uploaded_build.update_build_information!(whats_new: options[:changelog])
@@ -27,6 +27,7 @@ module Pilot
27
27
  def handle_multiple(action, args, options)
28
28
  mgr = Pilot::TesterManager.new
29
29
  config = FastlaneCore::Configuration.create(Pilot::Options.available_options, convert_options(options))
30
+ args.push(config[:email]) if config[:email] && args.empty?
30
31
  args.push(ask("Email address of the tester: ".yellow)) if args.empty?
31
32
  failures = []
32
33
  args.each do |address|
@@ -35,10 +36,10 @@ module Pilot
35
36
  mgr.public_send(action, config)
36
37
  rescue => ex
37
38
  failures.push(address)
38
- Helper.log.info "[#{address}]: #{ex}".red
39
+ UI.message("[#{address}]: #{ex}")
39
40
  end
40
41
  end
41
- raise "Some operations failed: #{failures}".red unless failures.empty?
42
+ UI.user_error!("Some operations failed: #{failures}") unless failures.empty?
42
43
  end
43
44
 
44
45
  def run
@@ -46,7 +47,7 @@ module Pilot
46
47
  program :description, Pilot::DESCRIPTION
47
48
  program :help, "Author", "Felix Krause <pilot@krausefx.com>"
48
49
  program :help, "Website", "https://fastlane.tools"
49
- program :help, "GitHub", "https://github.com/fastlane/pilot"
50
+ program :help, "GitHub", "https://github.com/fastlane/fastlane/tree/master/pilot"
50
51
  program :help_formatter, :compact
51
52
 
52
53
  global_option("--verbose") { $verbose = true }
@@ -11,10 +11,10 @@ module Pilot
11
11
  def login
12
12
  config[:username] ||= CredentialsManager::AppfileConfig.try_fetch_value(:apple_id)
13
13
 
14
- Helper.log.info "Login to iTunes Connect (#{config[:username]})"
14
+ UI.message("Login to iTunes Connect (#{config[:username]})")
15
15
  Spaceship::Tunes.login(config[:username])
16
16
  Spaceship::Tunes.select_team
17
- Helper.log.info "Login successful"
17
+ UI.message("Login successful")
18
18
  end
19
19
 
20
20
  # The app object we're currently using
@@ -23,7 +23,7 @@ module Pilot
23
23
 
24
24
  @app ||= Spaceship::Application.find(@apple_id)
25
25
  unless @app
26
- raise "Could not find app with #{(config[:apple_id] || config[:app_identifier])}"
26
+ UI.user_error!("Could not find app with #{(config[:apple_id] || config[:app_identifier])}")
27
27
  end
28
28
  return @app
29
29
  end
@@ -40,7 +40,7 @@ module Pilot
40
40
 
41
41
  if config[:app_identifier]
42
42
  @app ||= Spaceship::Application.find(config[:app_identifier])
43
- raise "Couldn't find app '#{config[:app_identifier]}' on the account of '#{config[:username]}' on iTunes Connect".red unless @app
43
+ UI.user_error!("Couldn't find app '#{config[:app_identifier]}' on the account of '#{config[:username]}' on iTunes Connect") unless @app
44
44
  app_id ||= @app.apple_id
45
45
  end
46
46
 
@@ -53,6 +53,7 @@ module Pilot
53
53
  result = config[:app_identifier]
54
54
  result ||= FastlaneCore::IpaFileAnalyser.fetch_app_identifier(config[:ipa])
55
55
  result ||= ask("Please enter the app's bundle identifier: ")
56
+ UI.verbose("App identifier (#{result})")
56
57
  return result
57
58
  end
58
59
  end
@@ -26,8 +26,8 @@ module Pilot
26
26
  description: "Path to the ipa file to upload",
27
27
  default_value: Dir["*.ipa"].first,
28
28
  verify_block: proc do |value|
29
- raise "Could not find ipa file at path '#{value}'" unless File.exist? value
30
- raise "'#{value}' doesn't seem to be an ipa file" unless value.end_with? ".ipa"
29
+ UI.user_error!("Could not find ipa file at path '#{value}'") unless File.exist? value
30
+ UI.user_error!("'#{value}' doesn't seem to be an ipa file") unless value.end_with? ".ipa"
31
31
  end),
32
32
  FastlaneCore::ConfigItem.new(key: :changelog,
33
33
  short_option: "-w",
@@ -67,7 +67,7 @@ module Pilot
67
67
  description: "The tester's email",
68
68
  optional: true,
69
69
  verify_block: proc do |value|
70
- raise "Please pass a valid email address" unless value.include? "@"
70
+ UI.user_error!("Please pass a valid email address") unless value.include? "@"
71
71
  end),
72
72
  FastlaneCore::ConfigItem.new(key: :testers_file_path,
73
73
  short_option: "-c",
@@ -82,7 +82,7 @@ module Pilot
82
82
  default_value: 30,
83
83
  type: Integer,
84
84
  verify_block: proc do |value|
85
- raise "Please enter a valid positive number of seconds" unless value.to_i > 0
85
+ UI.user_error!("Please enter a valid positive number of seconds") unless value.to_i > 0
86
86
  end),
87
87
  FastlaneCore::ConfigItem.new(key: :team_id,
88
88
  short_option: "-q",
@@ -4,7 +4,7 @@ require "pilot/tester_util"
4
4
  module Pilot
5
5
  class TesterExporter < Manager
6
6
  def export_testers(options)
7
- raise "Export file path is required".red unless options[:testers_file_path]
7
+ UI.user_error!("Export file path is required") unless options[:testers_file_path]
8
8
 
9
9
  start(options)
10
10
  require 'csv'
@@ -37,7 +37,7 @@ module Pilot
37
37
  csv << [tester.first_name, tester.last_name, tester.email, tester.devices.count, group_names, install_version, pretty_date]
38
38
  end
39
39
 
40
- Helper.log.info "Successfully exported CSV to #{file}".green
40
+ UI.success("Successfully exported CSV to #{file}")
41
41
  end
42
42
  end
43
43
  end
@@ -3,7 +3,7 @@ require "fastlane_core"
3
3
  module Pilot
4
4
  class TesterImporter < Manager
5
5
  def import_testers(options)
6
- raise "Import file path is required".red unless options[:testers_file_path]
6
+ UI.user_error!("Import file path is required") unless options[:testers_file_path]
7
7
 
8
8
  start(options)
9
9
 
@@ -23,7 +23,7 @@ module Pilot
23
23
  first_name, last_name, email = row
24
24
 
25
25
  unless email
26
- Helper.log.error "No email found in row: #{row}".red
26
+ UI.error("No email found in row: #{row}")
27
27
  next
28
28
  end
29
29
 
@@ -40,7 +40,7 @@ module Pilot
40
40
  end
41
41
  end
42
42
 
43
- Helper.log.info "Successfully imported #{imported_tester_count} testers from #{file}".green
43
+ UI.success("Successfully imported #{imported_tester_count} testers from #{file}")
44
44
  end
45
45
  end
46
46
  end
@@ -11,28 +11,28 @@ module Pilot
11
11
  tester ||= Spaceship::Tunes::Tester::External.find(config[:email])
12
12
 
13
13
  if tester
14
- Helper.log.info "Existing tester #{tester.email}".green
14
+ UI.success("Existing tester #{tester.email}")
15
15
  else
16
16
  tester = Spaceship::Tunes::Tester::External.create!(email: config[:email],
17
17
  first_name: config[:first_name],
18
18
  last_name: config[:last_name])
19
- Helper.log.info "Successfully invited tester: #{tester.email}".green
19
+ UI.success("Successfully invited tester: #{tester.email}")
20
20
  end
21
21
 
22
22
  app_filter = (config[:apple_id] || config[:app_identifier])
23
23
  if app_filter
24
24
  begin
25
25
  app = Spaceship::Application.find(app_filter)
26
- raise "Couldn't find app with '#{app_filter}'" unless app
26
+ UI.user_error!("Couldn't find app with '#{app_filter}'") unless app
27
27
  tester.add_to_app!(app.apple_id)
28
- Helper.log.info "Successfully added tester to app #{app_filter}".green
28
+ UI.success("Successfully added tester to app #{app_filter}")
29
29
  rescue => ex
30
- Helper.log.error "Could not add #{tester.email} to app: #{ex}".red
30
+ UI.error("Could not add #{tester.email} to app: #{ex}")
31
31
  raise ex
32
32
  end
33
33
  end
34
34
  rescue => ex
35
- Helper.log.error "Could not create tester #{config[:email]}".red
35
+ UI.error("Could not create tester #{config[:email]}")
36
36
  raise ex
37
37
  end
38
38
  end
@@ -43,7 +43,7 @@ module Pilot
43
43
  tester = Spaceship::Tunes::Tester::Internal.find(config[:email])
44
44
  tester ||= Spaceship::Tunes::Tester::External.find(config[:email])
45
45
 
46
- raise "Tester #{config[:email]} not found".red unless tester
46
+ UI.user_error!("Tester #{config[:email]} not found") unless tester
47
47
 
48
48
  describe_tester(tester)
49
49
  return tester
@@ -56,10 +56,23 @@ module Pilot
56
56
  tester ||= Spaceship::Tunes::Tester::Internal.find(config[:email])
57
57
 
58
58
  if tester
59
- tester.delete!
60
- Helper.log.info "Successfully removed tester #{tester.email}".green
59
+ app_filter = (config[:apple_id] || config[:app_identifier])
60
+ if app_filter
61
+ begin
62
+ app = Spaceship::Application.find(app_filter)
63
+ UI.user_error!("Couldn't find app with '#{app_filter}'") unless app
64
+ tester.remove_from_app!(app.apple_id)
65
+ UI.success("Successfully removed tester #{tester.email} from app #{app_filter}")
66
+ rescue => ex
67
+ UI.error("Could not remove #{tester.email} from app: #{ex}")
68
+ raise ex
69
+ end
70
+ else
71
+ tester.delete!
72
+ UI.success("Successfully removed tester #{tester.email}")
73
+ end
61
74
  else
62
- Helper.log.error "Tester not found: #{config[:email]}".red
75
+ UI.error("Tester not found: #{config[:email]}")
63
76
  end
64
77
  end
65
78
 
@@ -70,6 +83,7 @@ module Pilot
70
83
  app_filter = (config[:apple_id] || config[:app_identifier])
71
84
  if app_filter
72
85
  app = Spaceship::Application.find(app_filter)
86
+ UI.user_error!("Couldn't find app with '#{app_filter}'") unless app
73
87
  int_testers = Spaceship::Tunes::Tester::Internal.all_by_app(app.apple_id)
74
88
  ext_testers = Spaceship::Tunes::Tester::External.all_by_app(app.apple_id)
75
89
  else
@@ -1,4 +1,4 @@
1
1
  module Pilot
2
- VERSION = "1.4.1"
2
+ VERSION = "1.5.0"
3
3
  DESCRIPTION = "The best way to manage your TestFlight testers and builds from your terminal"
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pilot
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.5.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-02-19 00:00:00.000000000 Z
11
+ date: 2016-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fastlane_core
@@ -16,7 +16,7 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.36.5
19
+ version: 0.41.2
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: 1.0.0
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 0.36.5
29
+ version: 0.41.2
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: 1.0.0
@@ -36,7 +36,7 @@ dependencies:
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: 0.20.0
39
+ version: 0.24.1
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
42
  version: 1.0.0
@@ -46,7 +46,7 @@ dependencies:
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: 0.20.0
49
+ version: 0.24.1
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
52
  version: 1.0.0
@@ -120,6 +120,20 @@ dependencies:
120
120
  - - "~>"
121
121
  - !ruby/object:Gem::Version
122
122
  version: 3.1.0
123
+ - !ruby/object:Gem::Dependency
124
+ name: rspec_junit_formatter
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: 0.2.3
130
+ type: :development
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - "~>"
135
+ - !ruby/object:Gem::Version
136
+ version: 0.2.3
123
137
  - !ruby/object:Gem::Dependency
124
138
  name: pry
125
139
  requirement: !ruby/object:Gem::Requirement
@@ -196,14 +210,14 @@ dependencies:
196
210
  requirements:
197
211
  - - "~>"
198
212
  - !ruby/object:Gem::Version
199
- version: 0.35.1
213
+ version: 0.38.0
200
214
  type: :development
201
215
  prerelease: false
202
216
  version_requirements: !ruby/object:Gem::Requirement
203
217
  requirements:
204
218
  - - "~>"
205
219
  - !ruby/object:Gem::Version
206
- version: 0.35.1
220
+ version: 0.38.0
207
221
  description: The best way to manage your TestFlight testers and builds from your terminal
208
222
  email:
209
223
  - pilot@krausefx.com
@@ -245,7 +259,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
245
259
  version: '0'
246
260
  requirements: []
247
261
  rubyforge_project:
248
- rubygems_version: 2.4.0
262
+ rubygems_version: 2.4.5.1
249
263
  signing_key:
250
264
  specification_version: 4
251
265
  summary: The best way to manage your TestFlight testers and builds from your terminal