deliver 0.9.0.pre2 → 0.9.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 +2 -0
- data/bin/deliver +1 -1
- data/lib/assets/DeliverfileDefault +2 -2
- data/lib/assets/DeliverfileExample +2 -2
- data/lib/deliver/app.rb +14 -1
- data/lib/deliver/app_screenshot.rb +5 -0
- data/lib/deliver/deliver_process.rb +3 -0
- data/lib/deliver/deliverer.rb +2 -1
- data/lib/deliver/deliverfile/dsl.rb +1 -1
- data/lib/deliver/itunes_connect/itunes_connect.rb +1 -0
- data/lib/deliver/itunes_connect/itunes_connect_app_icon.rb +1 -1
- data/lib/deliver/itunes_connect/itunes_connect_apple_watch_app_icon.rb +42 -0
- data/lib/deliver/itunes_connect/itunes_connect_submission.rb +1 -1
- data/lib/deliver/itunes_transporter.rb +2 -2
- data/lib/deliver/testflight.rb +1 -0
- data/lib/deliver/version.rb +1 -1
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e6cf52ea7c54cff537c5076e467d2855dd71b86f
|
4
|
+
data.tar.gz: 66b241359283c9750d4deab05d260b1b9c6713ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f688f771ef3201824dc3f4d0786dfca5232c5c52fa102ac1296958febd8aa5ea7dfe495806ee9a1392d004e7bb7c5ecae3249c82ace132fa259b10c5865ffd9a
|
7
|
+
data.tar.gz: 67a0bb0f6c225a00f59549e6859b534a764e7a71dee4e6d3c56ee557c176e9fff41d71be166bbb71db3f15f775f22409db011231f687e5d7352ce217f966bda1
|
data/README.md
CHANGED
@@ -116,6 +116,8 @@ You can pass the "What to Test" value using the environment variable `DELIVER_WH
|
|
116
116
|
DELIVER_WHAT_TO_TEST="Try the brand new project button" deliver testflight
|
117
117
|
```
|
118
118
|
|
119
|
+
Additional environment variables: `DELIVER_BETA_DESCRIPTION`, `DELIVER_BETA_FEEDBACK_EMAIL`.
|
120
|
+
|
119
121
|
# Quick Start
|
120
122
|
|
121
123
|
|
data/bin/deliver
CHANGED
@@ -18,7 +18,7 @@ class FastlaneApplication
|
|
18
18
|
program :help, 'GitHub', 'https://github.com/krausefx/deliver'
|
19
19
|
program :help_formatter, :compact
|
20
20
|
|
21
|
-
global_option '--force', 'Runs a deployment without verifying any information (PDF file). This can be used for build servers.'
|
21
|
+
global_option '-f', '--force', 'Runs a deployment without verifying any information (PDF file). This can be used for build servers.'
|
22
22
|
global_option '--beta', 'Upload a beta build to iTunes Connect. This uses the `beta_ipa` block.'
|
23
23
|
global_option '--skip-deploy', 'Skips submission of the build on iTunes Connect. This will only upload the ipa and/or metadata.'
|
24
24
|
|
@@ -9,10 +9,10 @@
|
|
9
9
|
# This part is only relevant, if you want to submit a new binary
|
10
10
|
# If you don't use fastlane (https://github.com/KrauseFx/fastlane)
|
11
11
|
# you can set the path to your ipa file using:
|
12
|
-
# ipa
|
12
|
+
# ipa "./app.ipa"
|
13
13
|
|
14
14
|
# to provide an ipa file for TestFlight distribution, use beta_ipa
|
15
|
-
# beta_ipa
|
15
|
+
# beta_ipa "./app.ipa"
|
16
16
|
|
17
17
|
# The version of your app - remove this if you provide an ipa file
|
18
18
|
version "[[APP_VERSION]]"
|
@@ -17,10 +17,10 @@
|
|
17
17
|
# This part is only relevant, if you want to submit a new binary
|
18
18
|
# If you don't use fastlane (https://github.com/KrauseFx/fastlane)
|
19
19
|
# you can set the path to your ipa file using:
|
20
|
-
# ipa
|
20
|
+
# ipa "./app.ipa"
|
21
21
|
|
22
22
|
# to provide an ipa file for TestFlight distribution, use beta_ipa
|
23
|
-
# beta_ipa
|
23
|
+
# beta_ipa "./app.ipa"
|
24
24
|
|
25
25
|
# The version of your app - remove this if you provide an ipa file
|
26
26
|
version "[[APP_VERSION]]"
|
data/lib/deliver/app.rb
CHANGED
@@ -41,7 +41,14 @@ module Deliver
|
|
41
41
|
elsif app_identifier and not apple_id
|
42
42
|
# Fetch the Apple ID based on the given app identifier
|
43
43
|
begin
|
44
|
-
|
44
|
+
begin
|
45
|
+
self.apple_id = FastlaneCore::ItunesSearchApi.fetch_by_identifier(app_identifier)['trackId']
|
46
|
+
rescue
|
47
|
+
Helper.log.warn "App doesn't seem to be in the App Store yet or is not available in the US App Store. Using the iTC API instead."
|
48
|
+
# Use the iTunes Connect API instead: make that default in the future
|
49
|
+
self.apple_id = FastlaneCore::ItunesConnect.new.find_apple_id(app_identifier)
|
50
|
+
raise "Couldn't find Apple ID" unless self.apple_id
|
51
|
+
end
|
45
52
|
rescue
|
46
53
|
unless Helper.is_test?
|
47
54
|
Helper.log.info "Could not find Apple ID based on the app identifier in the US App Store. Maybe the app is not yet in the store?".yellow
|
@@ -126,6 +133,12 @@ module Deliver
|
|
126
133
|
itc.upload_app_icon!(self, path)
|
127
134
|
end
|
128
135
|
|
136
|
+
# Uploads a new apple watch app icon to iTunesConnect. This uses a headless browser
|
137
|
+
# which makes this command quite slow.
|
138
|
+
# @param (path) a path to the new apple watch app icon. The image must have the resolution of 1024x1024
|
139
|
+
def upload_apple_watch_app_icon!(path)
|
140
|
+
itc.upload_apple_watch_app_icon!(self, path)
|
141
|
+
end
|
129
142
|
#####################################################
|
130
143
|
# @!group Destructive/Constructive methods
|
131
144
|
#####################################################
|
@@ -16,6 +16,8 @@ module Deliver
|
|
16
16
|
IOS_55 = "iOS-5.5-in"
|
17
17
|
# iPad
|
18
18
|
IOS_IPAD = "iOS-iPad"
|
19
|
+
# Watch
|
20
|
+
IOS_APPLE_WATCH= "iOS-Apple-Watch"
|
19
21
|
# Mac
|
20
22
|
MAC = "Mac"
|
21
23
|
end
|
@@ -106,6 +108,9 @@ module Deliver
|
|
106
108
|
[1440, 900],
|
107
109
|
[2880, 1800],
|
108
110
|
[2560, 1600]
|
111
|
+
],
|
112
|
+
ScreenSize::IOS_APPLE_WATCH=> [
|
113
|
+
[312, 390]
|
109
114
|
]
|
110
115
|
}
|
111
116
|
|
@@ -288,6 +288,9 @@ module Deliver
|
|
288
288
|
|
289
289
|
# App Icon
|
290
290
|
itc.upload_app_icon!(@app, @deploy_information[Deliverer::ValKey::APP_ICON]) if @deploy_information[Deliverer::ValKey::APP_ICON]
|
291
|
+
|
292
|
+
# Apple Watch App Icon
|
293
|
+
itc.upload_apple_watch_app_icon!(@app, @deploy_information[Deliverer::ValKey::APPLE_WATCH_APP_ICON]) if @deploy_information[Deliverer::ValKey::APPLE_WATCH_APP_ICON]
|
291
294
|
end
|
292
295
|
|
293
296
|
def trigger_ipa_upload
|
data/lib/deliver/deliverer.rb
CHANGED
@@ -35,7 +35,8 @@ module Deliver
|
|
35
35
|
SUBMIT_FURTHER_INFORMATION = :submit_further_information # export compliance, content rights and advertising identifier
|
36
36
|
PRICE_TIER = :price_tier
|
37
37
|
APP_ICON = :app_icon
|
38
|
-
|
38
|
+
APPLE_WATCH_APP_ICON = :apple_watch_app_icon
|
39
|
+
|
39
40
|
COPYRIGHT = :copyright
|
40
41
|
PRIMARY_CATEGORY = :primary_category
|
41
42
|
SECONDARY_CATEGORY = :secondary_category
|
@@ -21,7 +21,7 @@ module Deliver
|
|
21
21
|
not_translated = [:ipa, :app_identifier, :apple_id, :screenshots_path, :config_json_folder,
|
22
22
|
:submit_further_information, :copyright, :primary_category, :secondary_category,
|
23
23
|
:automatic_release, :app_review_information, :ratings_config_path, :price_tier,
|
24
|
-
:app_icon]
|
24
|
+
:app_icon, :apple_watch_app_icon]
|
25
25
|
|
26
26
|
if allowed.include?(method_sym)
|
27
27
|
value = arguments.first
|
@@ -5,6 +5,7 @@ require 'deliver/itunes_connect/itunes_connect_submission'
|
|
5
5
|
require 'deliver/itunes_connect/itunes_connect_reader'
|
6
6
|
require 'deliver/itunes_connect/itunes_connect_new_version'
|
7
7
|
require 'deliver/itunes_connect/itunes_connect_app_icon'
|
8
|
+
require 'deliver/itunes_connect/itunes_connect_apple_watch_app_icon'
|
8
9
|
require 'deliver/itunes_connect/itunes_connect_app_rating'
|
9
10
|
require 'deliver/itunes_connect/itunes_connect_additional'
|
10
11
|
require 'deliver/itunes_connect/itunes_connect_screenshot_fetcher'
|
@@ -23,7 +23,7 @@ module Deliver
|
|
23
23
|
|
24
24
|
Helper.log.info "Starting upload of new app icon".green
|
25
25
|
|
26
|
-
evaluate_script("$('.appversionicon > .ios7-style-icon').prev().click()") # delete button
|
26
|
+
evaluate_script("$('.appversionicon:not(.watchIcon) > .ios7-style-icon').prev().click()") # delete button
|
27
27
|
evaluate_script("$('[style-class=\"appversionicon rounded\"] [itc-launch-filechooser] + input').attr('id', 'deliverFileUploadInput')") # set div
|
28
28
|
evaluate_script("URL = webkitURL; URL.createObjectURL = function(){return 'blob:abc'}"); # shim URL
|
29
29
|
page.attach_file("deliverFileUploadInput", path) # add file
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'fastimage'
|
2
|
+
|
3
|
+
module Deliver
|
4
|
+
class ItunesConnect < FastlaneCore::ItunesConnect
|
5
|
+
# Uploading a new full size app icon
|
6
|
+
|
7
|
+
def upload_apple_watch_app_icon!(app, path)
|
8
|
+
path = File.expand_path(path)
|
9
|
+
raise "Could not find watch app icon at path '#{path}'".red unless File.exists?path
|
10
|
+
|
11
|
+
size = FastImage.size(path)
|
12
|
+
raise "Watch App icon must have the resolution of 1024x1024px".red unless (size[0] == 1024 and size[1] == 1024)
|
13
|
+
|
14
|
+
# Remove alpha channel
|
15
|
+
Helper.log.info "Removing alpha channel from provided Watch App Icon (iTunes Connect requirement)".green
|
16
|
+
|
17
|
+
`sips -s format bmp '#{path}' &> /dev/null ` # &> /dev/null since there is warning because of the extension
|
18
|
+
`sips -s format png '#{path}'`
|
19
|
+
|
20
|
+
begin
|
21
|
+
verify_app(app)
|
22
|
+
open_app_page(app)
|
23
|
+
|
24
|
+
Helper.log.info "Starting upload of new watch app icon".green
|
25
|
+
|
26
|
+
evaluate_script("$('.ico.icon-chevron-animate-open-close.close').click()") # delete button
|
27
|
+
evaluate_script("$('.appversionicon.watchIcon > .ios7-style-icon').prev().click()") # delete button
|
28
|
+
evaluate_script("$('[style-class=\"appversionicon watchIcon rounded\"] [itc-launch-filechooser] + input').attr('id', 'deliverFileUploadInputWatch')") # set div
|
29
|
+
evaluate_script("URL = webkitURL; URL.createObjectURL = function(){return 'blob:abc'}"); # shim URL
|
30
|
+
page.attach_file("deliverFileUploadInputWatch", path) # add file
|
31
|
+
|
32
|
+
sleep 10
|
33
|
+
|
34
|
+
click_on "Save"
|
35
|
+
|
36
|
+
Helper.log.info "Finished uploading the new watch app icon".green
|
37
|
+
rescue => ex
|
38
|
+
error_occured(ex)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -40,7 +40,7 @@ module Deliver
|
|
40
40
|
end
|
41
41
|
|
42
42
|
# We got the most recent build, let's see if it's ready
|
43
|
-
if current_build['
|
43
|
+
if current_build['readyToInstall'] == true
|
44
44
|
Helper.log.info "Build is ready 3.2.1...".green
|
45
45
|
break # Success!
|
46
46
|
end
|
@@ -180,7 +180,7 @@ module Deliver
|
|
180
180
|
|
181
181
|
def build_download_command(username, password, apple_id, destination = "/tmp")
|
182
182
|
[
|
183
|
-
Helper.transporter_path,
|
183
|
+
'"' + Helper.transporter_path + '"',
|
184
184
|
"-m lookupMetadata",
|
185
185
|
"-u \"#{username}\"",
|
186
186
|
"-p '#{escaped_password(password)}'",
|
@@ -191,7 +191,7 @@ module Deliver
|
|
191
191
|
|
192
192
|
def build_upload_command(username, password, source = "/tmp")
|
193
193
|
[
|
194
|
-
Helper.transporter_path,
|
194
|
+
'"' + Helper.transporter_path + '"',
|
195
195
|
"-m upload",
|
196
196
|
"-u \"#{username}\"",
|
197
197
|
"-p '#{escaped_password(password)}'",
|
data/lib/deliver/testflight.rb
CHANGED
@@ -11,6 +11,7 @@ module Deliver
|
|
11
11
|
app_identifier = IpaFileAnalyser.fetch_app_identifier(ipa_path)
|
12
12
|
app_identifier ||= ENV["TESTFLIGHT_APP_IDENTITIFER"] || ask("Could not automatically find the app identifier, please enter the app's bundle identifier: ")
|
13
13
|
app_id ||= (FastlaneCore::ItunesSearchApi.fetch_by_identifier(app_identifier)['trackId'] rescue nil)
|
14
|
+
app_id ||= (FastlaneCore::ItunesConnect.new.find_apple_id(app_identifier) rescue nil)
|
14
15
|
app_id ||= ENV["TESTFLIGHT_APPLE_ID"] || ask("Could not automatically find the app ID, please enter it here (e.g. 956814360): ")
|
15
16
|
strategy = (skip_deploy ? Deliver::IPA_UPLOAD_STRATEGY_JUST_UPLOAD : Deliver::IPA_UPLOAD_STRATEGY_BETA_BUILD)
|
16
17
|
|
data/lib/deliver/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deliver
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.0
|
4
|
+
version: 0.9.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-
|
11
|
+
date: 2015-04-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fastlane_core
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.4.3
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.4.3
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: nokogiri
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -241,6 +241,7 @@ files:
|
|
241
241
|
- lib/deliver/itunes_connect/itunes_connect_additional.rb
|
242
242
|
- lib/deliver/itunes_connect/itunes_connect_app_icon.rb
|
243
243
|
- lib/deliver/itunes_connect/itunes_connect_app_rating.rb
|
244
|
+
- lib/deliver/itunes_connect/itunes_connect_apple_watch_app_icon.rb
|
244
245
|
- lib/deliver/itunes_connect/itunes_connect_new_version.rb
|
245
246
|
- lib/deliver/itunes_connect/itunes_connect_reader.rb
|
246
247
|
- lib/deliver/itunes_connect/itunes_connect_screenshot_fetcher.rb
|
@@ -265,9 +266,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
265
266
|
version: 2.0.0
|
266
267
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
267
268
|
requirements:
|
268
|
-
- - '
|
269
|
+
- - '>='
|
269
270
|
- !ruby/object:Gem::Version
|
270
|
-
version:
|
271
|
+
version: '0'
|
271
272
|
requirements: []
|
272
273
|
rubyforge_project:
|
273
274
|
rubygems_version: 2.2.2
|