pilot 1.12.1 → 1.13.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: aaa910e77be068138c6d8f405d62218e5b91bc01
4
- data.tar.gz: 3e785fb3c652a2c97476c49eb212b36d0ff45c7f
3
+ metadata.gz: 804c9d896ba3e463dfaaa31b5fd0c9994eec340a
4
+ data.tar.gz: ce1afba1c0d21d6a24d1eb80e9f147156af30d35
5
5
  SHA512:
6
- metadata.gz: aad4add20c950ab720e3436cfd5d292bf3c0bc65234b794d7664e391f51131d863de21bf77be77e086406be46bc104ed2722044b7273be9917b14a8fa87cc120
7
- data.tar.gz: a492de6adb9e3a3bb53bc590c23f1176347ec78f62b8be4a97e68ff8b3482aad9e0fd89d86f63ad371c2581ac1b22b20c8a90398ec2feee2383711d8ff113638
6
+ metadata.gz: 508073bb23adeaaa18bde075010097a549d4c5053afdc9fcffd5bb5cfbd967ae959b70ab1165c43aceafa8da0474ab585f2ce9c6a4d3fda3090a316fc983f7b1
7
+ data.tar.gz: 924a064ba540ac1983d75b7606d6b6ff71d31be9083022918854057a4c2a424cbeb8a460f7e246d49800cc4e01d3157dc423f49ac358af9007c9a21943f0ac7e
data/README.md CHANGED
@@ -258,7 +258,7 @@ If you run into any issues you can use the `verbose` mode to get a more detailed
258
258
  DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS="-t DAV" pilot ...
259
259
  ```
260
260
 
261
- 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`
261
+ If you are using `pilot` via the [fastlane action](https://docs.fastlane.tools/actions#pilot), add the following to your `Fastfile`
262
262
 
263
263
  ```
264
264
  ENV["DELIVER_ITMSTRANSPORTER_ADDITIONAL_UPLOAD_PARAMETERS"] = "-t DAV"
@@ -3,13 +3,13 @@ module Pilot
3
3
  def upload(options)
4
4
  start(options)
5
5
 
6
+ options[:changelog] = self.class.truncate_changelog(options[:changelog]) if options[:changelog]
7
+
6
8
  UI.user_error!("No ipa file given") unless config[:ipa]
7
9
 
8
10
  UI.success("Ready to upload new build to TestFlight (App: #{app.apple_id})...")
9
11
 
10
- plist = FastlaneCore::IpaFileAnalyser.fetch_info_plist_file(config[:ipa]) || {}
11
- platform = plist["DTPlatformName"]
12
- platform = "ios" if platform == "iphoneos" # via https://github.com/fastlane/spaceship/issues/247
12
+ platform = fetch_app_platform
13
13
  package_path = FastlaneCore::IpaUploadPackageBuilder.new.generate(app_id: app.apple_id,
14
14
  ipa_path: config[:ipa],
15
15
  package_path: "/tmp",
@@ -31,7 +31,7 @@ module Pilot
31
31
  end
32
32
 
33
33
  UI.message("If you want to skip waiting for the processing to be finished, use the `skip_waiting_for_build_processing` option")
34
- uploaded_build = wait_for_processing_build(options) # this might take a while
34
+ uploaded_build = wait_for_processing_build(options, platform) # this might take a while
35
35
 
36
36
  distribute(options, uploaded_build)
37
37
  end
@@ -43,7 +43,8 @@ module Pilot
43
43
  end
44
44
 
45
45
  if build.nil?
46
- builds = app.all_processing_builds + app.builds
46
+ platform = fetch_app_platform(required: false)
47
+ builds = app.all_processing_builds(platform: platform) + app.builds(platform: platform)
47
48
  # sort by upload_date
48
49
  builds.sort! { |a, b| a.upload_date <=> b.upload_date }
49
50
  build = builds.last
@@ -81,7 +82,8 @@ module Pilot
81
82
  config[:app_identifier] = UI.input("App Identifier: ")
82
83
  end
83
84
 
84
- builds = app.all_processing_builds + app.builds
85
+ platform = fetch_app_platform(required: false)
86
+ builds = app.all_processing_builds(platform: platform) + app.builds(platform: platform)
85
87
  # sort by upload_date
86
88
  builds.sort! { |a, b| a.upload_date <=> b.upload_date }
87
89
  rows = builds.collect { |build| describe_build(build) }
@@ -93,6 +95,17 @@ module Pilot
93
95
  )
94
96
  end
95
97
 
98
+ def self.truncate_changelog(changelog)
99
+ max_changelog_length = 4000
100
+ if changelog && changelog.length > max_changelog_length
101
+ original_length = changelog.length
102
+ bottom_message = "..."
103
+ changelog = "#{changelog[0...max_changelog_length - bottom_message.length]}#{bottom_message}"
104
+ UI.important "Changelog has been truncated since it exceeds Apple's #{max_changelog_length} character limit. It currently contains #{original_length} characters."
105
+ end
106
+ return changelog
107
+ end
108
+
96
109
  private
97
110
 
98
111
  def describe_build(build)
@@ -111,7 +124,7 @@ module Pilot
111
124
 
112
125
  # This method will takes care of checking for the processing builds every few seconds
113
126
  # @return [Build] The build that we just uploaded
114
- def wait_for_processing_build(options)
127
+ def wait_for_processing_build(options, platform)
115
128
  # the upload date of the new buid
116
129
  # we use it to identify the build
117
130
  start = Time.now
@@ -127,10 +140,10 @@ module Pilot
127
140
  # build trains right away, and if we don't do this check, we will
128
141
  # get break out of this loop and then generate an error later when we
129
142
  # have a nil build
130
- if app.build_trains.count == 0
143
+ if app.build_trains(platform: platform).count == 0
131
144
  UI.message("New application; waiting for build train to appear on iTunes Connect")
132
145
  else
133
- builds = app.all_processing_builds
146
+ builds = app.all_processing_builds(platform: platform)
134
147
  break if builds.count == 0
135
148
  latest_build = builds.last
136
149
 
@@ -155,9 +168,7 @@ module Pilot
155
168
  # true -> false, where the second true is transient. This causes a spurious failure. Find build by build_version
156
169
  # and ensure it's not processing before proceeding - it had to have already been false before, to get out of the
157
170
  # previous loop.
158
- build_train = app.build_trains[latest_build.train_version]
159
- builds = build_train ? build_train.builds : []
160
- full_build = builds.find do |b|
171
+ full_build = app.build_trains(platform: platform)[latest_build.train_version].builds.find do |b|
161
172
  b.build_version == latest_build.build_version
162
173
  end
163
174
 
@@ -42,6 +42,7 @@ module Pilot
42
42
  end
43
43
 
44
44
  def run
45
+ program :name, 'pilot'
45
46
  program :version, Pilot::VERSION
46
47
  program :description, Pilot::DESCRIPTION
47
48
  program :help, "Author", "Felix Krause <pilot@krausefx.com>"
@@ -56,5 +56,16 @@ module Pilot
56
56
  UI.verbose("App identifier (#{result})")
57
57
  return result
58
58
  end
59
+
60
+ def fetch_app_platform(required: true)
61
+ result = config[:app_platform]
62
+ result ||= FastlaneCore::IpaFileAnalyser.fetch_app_platform(config[:ipa]) if config[:ipa]
63
+ if required
64
+ result ||= ask("Please enter the app's platform (appletvos, ios, osx): ")
65
+ UI.user_error!("App Platform must be ios, appletvos, or osx") unless ['ios', 'appletvos', 'osx'].include? result
66
+ UI.verbose("App Platform (#{result})")
67
+ end
68
+ return result
69
+ end
59
70
  end
60
71
  end
@@ -19,6 +19,14 @@ module Pilot
19
19
  description: "The bundle identifier of the app to upload or manage testers (optional)",
20
20
  optional: true,
21
21
  default_value: ENV["TESTFLIGHT_APP_IDENTITIFER"] || CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier)),
22
+ FastlaneCore::ConfigItem.new(key: :app_platform,
23
+ short_option: "-m",
24
+ env_name: "PILOT_PLATFORM",
25
+ description: "The platform to use (optional)",
26
+ optional: true,
27
+ verify_block: proc do |value|
28
+ UI.user_error!("The platform can only be ios, appletvos, or osx") unless ['ios', 'appletvos', 'osx'].include? value
29
+ end),
22
30
  FastlaneCore::ConfigItem.new(key: :ipa,
23
31
  short_option: "-i",
24
32
  optional: true,
@@ -1,4 +1,4 @@
1
1
  module Pilot
2
- VERSION = "1.12.1"
2
+ VERSION = "1.13.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.12.1
4
+ version: 1.13.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-17 00:00:00.000000000 Z
11
+ date: 2016-12-13 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.56.0
19
+ version: 0.60.0
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.56.0
29
+ version: 0.60.0
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.37.0
39
+ version: 0.39.0
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.37.0
49
+ version: 0.39.0
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
52
  version: 1.0.0
@@ -102,16 +102,16 @@ dependencies:
102
102
  name: rake
103
103
  requirement: !ruby/object:Gem::Requirement
104
104
  requirements:
105
- - - ">="
105
+ - - "<"
106
106
  - !ruby/object:Gem::Version
107
- version: '0'
107
+ version: '12'
108
108
  type: :development
109
109
  prerelease: false
110
110
  version_requirements: !ruby/object:Gem::Requirement
111
111
  requirements:
112
- - - ">="
112
+ - - "<"
113
113
  - !ruby/object:Gem::Version
114
- version: '0'
114
+ version: '12'
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: rspec
117
117
  requirement: !ruby/object:Gem::Requirement