deliver 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +6 -0
- data/lib/assets/DeliverfileDefault +2 -0
- data/lib/assets/DeliverfileExample +1 -0
- data/lib/assets/fonts/mona.ttf +0 -0
- data/lib/deliver/app_metadata.rb +1 -1
- data/lib/deliver/deliver_process.rb +5 -2
- data/lib/deliver/deliverfile/dsl.rb +5 -0
- data/lib/deliver/ipa_uploader.rb +2 -0
- data/lib/deliver/itunes_connect.rb +10 -3
- data/lib/deliver/itunes_transporter.rb +18 -4
- data/lib/deliver/pdf_generator.rb +31 -15
- data/lib/deliver/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 730cbb7ddcff1c957d5f345f8487448ef7258c30
|
4
|
+
data.tar.gz: 1f8c6bed0405116fa8e0224ea9ea80cf21313411
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 716d790846a95f3eb33ccd1f9233a66e92a3cd47054907b62622a86094e4d6bb0d1ada51141ed2b12cf2db0e138179ef41926039da2fb1cd7cd74b8c9f818941
|
7
|
+
data.tar.gz: 4be310b04a8de4efec25a81c9f0c18adb4f32c741a644a13e79dede102da51d64e6ba5504bf5f9b60f17ac122f5a4c3f3e2c415b41915f412054d8d1f21df8b6
|
data/README.md
CHANGED
@@ -180,6 +180,12 @@ ipa do
|
|
180
180
|
end
|
181
181
|
```
|
182
182
|
|
183
|
+
#### Hide the iTunes Transporter log
|
184
|
+
By default, the transporter log is shown, to be fully transparent. If you prefer to hide it, you can use the following option in your ```Deliverfile``` to disable it for both the upload and the download of metadata:
|
185
|
+
```ruby
|
186
|
+
hide_transporter_log
|
187
|
+
```
|
188
|
+
|
183
189
|
##### What is the ```Deliverfile```?
|
184
190
|
As you can see, the ```Deliverfile``` is a normal Ruby file, which is executed when
|
185
191
|
running a deployment. Therefore it's possible to fully customise the behaviour
|
@@ -8,6 +8,7 @@
|
|
8
8
|
# Everything next to a # is a comment and will be ignored
|
9
9
|
|
10
10
|
email "yourappleid@company.com"
|
11
|
+
# hide_transporter_output # remove the '#' in the beginning of the line, to hide the output while uploading
|
11
12
|
|
12
13
|
########################################
|
13
14
|
# App Metadata
|
Binary file
|
data/lib/deliver/app_metadata.rb
CHANGED
@@ -150,12 +150,12 @@ module Deliver
|
|
150
150
|
screens_path = @deploy_information[Deliverer::ValKey::SCREENSHOTS_PATH]
|
151
151
|
|
152
152
|
# Check if there is a Snapfile
|
153
|
-
if File.exists?('./Snapfile')
|
153
|
+
if File.exists?('./Snapfile') and not screens_path
|
154
154
|
|
155
155
|
Helper.log.info("Found a Snapfile, using it to create new screenshots.".green)
|
156
156
|
begin
|
157
157
|
Snapshot::Runner.new.work
|
158
|
-
|
158
|
+
Helper.log.info("Looking for screenshots in './screenshots'.".yellow)
|
159
159
|
@app.metadata.set_all_screenshots_from_path('./screenshots')
|
160
160
|
rescue Exception => ex
|
161
161
|
# There were some UI Automation errors
|
@@ -163,6 +163,9 @@ module Deliver
|
|
163
163
|
end
|
164
164
|
|
165
165
|
elsif screens_path
|
166
|
+
if File.exists?('./Snapfile')
|
167
|
+
Helper.log.info("Found a Snapfile. Ignoring it. If you want 'deliver' to automatically take new screenshots for you, remove 'screenshots_path' from your 'Deliverfile'.".yellow)
|
168
|
+
end
|
166
169
|
# Not using Snapfile. Not a good user.
|
167
170
|
if not @app.metadata.set_all_screenshots_from_path(screens_path)
|
168
171
|
# This path does not contain folders for each language
|
@@ -107,6 +107,11 @@ module Deliver
|
|
107
107
|
PasswordManager.shared_manager(value)
|
108
108
|
end
|
109
109
|
|
110
|
+
# This will hide the output of the iTunes Connect transporter while uploading/downloading
|
111
|
+
def hide_transporter_log
|
112
|
+
ItunesTransporter.hide_transporter_output
|
113
|
+
end
|
114
|
+
|
110
115
|
# Set the apps new version number.
|
111
116
|
#
|
112
117
|
# If you do not set this, it will automatically being fetched from the
|
data/lib/deliver/ipa_uploader.rb
CHANGED
@@ -90,9 +90,16 @@ module Deliver
|
|
90
90
|
fill_in "accountpassword", with: password
|
91
91
|
|
92
92
|
begin
|
93
|
-
wait_for_elements(".enabled").first.click
|
94
|
-
wait_for_elements('.ng-scope
|
95
|
-
|
93
|
+
(wait_for_elements(".enabled").first.click rescue nil) # Login Button
|
94
|
+
wait_for_elements('.homepageWrapper.ng-scope')
|
95
|
+
|
96
|
+
if page.has_content?"My Apps"
|
97
|
+
# Everything looks good
|
98
|
+
else
|
99
|
+
raise ItunesConnectLoginError.new("Looks like your login data was correct, but you do not have access to the apps.")
|
100
|
+
end
|
101
|
+
rescue Exception => ex
|
102
|
+
Helper.log.debug(ex)
|
96
103
|
raise ItunesConnectLoginError.new("Error logging in user #{user} with the given password. Make sure you entered them correctly.")
|
97
104
|
end
|
98
105
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'pty'
|
2
|
-
|
2
|
+
require 'shellwords'
|
3
3
|
require 'deliver/password_manager'
|
4
4
|
|
5
5
|
|
@@ -18,6 +18,11 @@ module Deliver
|
|
18
18
|
OUTPUT_REGEX = />\s+(.+)/
|
19
19
|
|
20
20
|
private_constant :ERROR_REGEX, :WARNING_REGEX, :OUTPUT_REGEX
|
21
|
+
|
22
|
+
# This will be called from the Deliverfile, and disables the logging of the transpoter output
|
23
|
+
def self.hide_transporter_output
|
24
|
+
@@hide_transporter_output = true
|
25
|
+
end
|
21
26
|
|
22
27
|
# Returns a new instance of the iTunesTranspoter.
|
23
28
|
# If no username or password given, it will be taken from
|
@@ -43,8 +48,10 @@ module Deliver
|
|
43
48
|
|
44
49
|
result = execute_transporter(command)
|
45
50
|
|
46
|
-
if result
|
51
|
+
if result and File.directory?"/tmp/#{app.apple_id}.itmsp"
|
47
52
|
Helper.log.info "Successfully downloaded the latest package from iTunesConnect.".green
|
53
|
+
else
|
54
|
+
Helper.log.fatal "Could not download metadata from iTunes Connect. Do you have special characters in your password (Like ' or \")?"
|
48
55
|
end
|
49
56
|
|
50
57
|
result
|
@@ -80,6 +87,13 @@ module Deliver
|
|
80
87
|
@errors = []
|
81
88
|
@warnings = []
|
82
89
|
|
90
|
+
if defined?@@hide_transporter_output
|
91
|
+
# Show a one time message instead
|
92
|
+
Helper.log.info "Waiting for iTunes Connect transpoter to be finished.".green
|
93
|
+
Helper.log.info "If you want upload/download logs to be enabled, remove 'hide_transporter_log' from your Deliverfile."
|
94
|
+
Helper.log.info "In progress...".green
|
95
|
+
end
|
96
|
+
|
83
97
|
begin
|
84
98
|
PTY.spawn(command) do |stdin, stdout, pid|
|
85
99
|
stdin.each do |line|
|
@@ -119,7 +133,7 @@ module Deliver
|
|
119
133
|
@warnings << $1
|
120
134
|
end
|
121
135
|
|
122
|
-
if line =~ OUTPUT_REGEX
|
136
|
+
if not defined?@@hide_transporter_output and line =~ OUTPUT_REGEX
|
123
137
|
# General logging for debug purposes
|
124
138
|
Helper.log.debug "[Transpoter Output]: #{$1}"
|
125
139
|
end
|
@@ -147,7 +161,7 @@ module Deliver
|
|
147
161
|
end
|
148
162
|
|
149
163
|
def escaped_password(password)
|
150
|
-
|
164
|
+
Shellwords.escape(password)
|
151
165
|
end
|
152
166
|
|
153
167
|
end
|
@@ -8,10 +8,23 @@ module Deliver
|
|
8
8
|
# @param export_path (String) The path to a folder where the resulting PDF file should be stored.
|
9
9
|
def render(deliverer, export_path = nil)
|
10
10
|
export_path ||= '/tmp'
|
11
|
+
fontdir = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'fonts'))
|
11
12
|
|
12
13
|
resulting_path = "#{export_path}/#{Time.now.to_i}.pdf"
|
13
14
|
Prawn::Document.generate(resulting_path) do
|
14
15
|
|
16
|
+
|
17
|
+
# Adding Mona to handle Japanese. The Prawn docs say not to use the included Kai font so we're
|
18
|
+
# using this 3rd-party font instead.
|
19
|
+
|
20
|
+
font_families["Mona"] = {
|
21
|
+
:normal => { :file => "#{fontdir}/mona.ttf", :font => "Mona" }
|
22
|
+
}
|
23
|
+
|
24
|
+
pdf_fallback_fonts = [ "Mona" ]
|
25
|
+
|
26
|
+
font "Helvetica" # Set main document font
|
27
|
+
|
15
28
|
counter = 0
|
16
29
|
deliverer.app.metadata.information.each do |language, content|
|
17
30
|
title = content[:title][:value] rescue ''
|
@@ -19,7 +32,7 @@ module Deliver
|
|
19
32
|
Helper.log.info("[PDF] Exporting locale '#{language}' for app with title '#{title}'")
|
20
33
|
|
21
34
|
font_size 20
|
22
|
-
text "#{language}: #{title}"
|
35
|
+
text "#{language}: #{title}", :fallback_fonts => pdf_fallback_fonts
|
23
36
|
stroke_horizontal_rule
|
24
37
|
font_size 14
|
25
38
|
|
@@ -33,15 +46,15 @@ module Deliver
|
|
33
46
|
# Description on right side
|
34
47
|
bounding_box([col1, cursor], width: 340.0) do
|
35
48
|
if content[:description] and content[:description][:value]
|
36
|
-
text content[:description][:value], size: 6, color: (content[:description][:modified] ? modified_color : standard_color)
|
49
|
+
text content[:description][:value], size: 6, color: (content[:description][:modified] ? modified_color : standard_color), :fallback_fonts => pdf_fallback_fonts
|
37
50
|
end
|
38
51
|
move_down 10
|
39
52
|
stroke_horizontal_rule
|
40
53
|
move_down 10
|
41
|
-
text "Changelog:", size: 8
|
54
|
+
text "Changelog:", size: 8, :fallback_fonts => pdf_fallback_fonts
|
42
55
|
move_down 5
|
43
56
|
if content[:version_whats_new] and content[:version_whats_new][:value]
|
44
|
-
text content[:version_whats_new][:value], size: 6, color: (content[:version_whats_new][:modified] ? modified_color : standard_color)
|
57
|
+
text content[:version_whats_new][:value], size: 6, color: (content[:version_whats_new][:modified] ? modified_color : standard_color), :fallback_fonts => pdf_fallback_fonts
|
45
58
|
end
|
46
59
|
end
|
47
60
|
title_bottom = cursor.to_f
|
@@ -63,20 +76,20 @@ module Deliver
|
|
63
76
|
|
64
77
|
if value.kind_of?Array
|
65
78
|
# Keywords only
|
66
|
-
text "#{key}:", color: color, width: width, size: size
|
79
|
+
text "#{key}:", color: color, width: width, size: size, :fallback_fonts => pdf_fallback_fonts
|
67
80
|
move_down 2
|
68
81
|
|
69
82
|
keywords_padding_left = 5
|
70
83
|
bounding_box([keywords_padding_left, cursor], width: (col1 - keywords_padding_left)) do
|
71
84
|
value.each do |item|
|
72
|
-
text "- #{item}", color: color, width: width, size: (size - 2)
|
85
|
+
text "- #{item}", color: color, width: width, size: (size - 2), :fallback_fonts => pdf_fallback_fonts
|
73
86
|
end
|
74
87
|
end
|
75
88
|
else
|
76
89
|
# Everything else
|
77
90
|
next if value == nil or value.length == 0
|
78
91
|
|
79
|
-
text "#{key}: #{value}", color: color, width: width, size: size
|
92
|
+
text "#{key}: #{value}", color: color, width: width, size: size, :fallback_fonts => pdf_fallback_fonts
|
80
93
|
end
|
81
94
|
end
|
82
95
|
end
|
@@ -90,26 +103,29 @@ module Deliver
|
|
90
103
|
move_cursor_to top
|
91
104
|
|
92
105
|
if (content[:screenshots] || []).count > 0
|
93
|
-
content[:screenshots].
|
106
|
+
content[:screenshots].sort{ |a, b| [a.screen_size, a.path] <=> [b.screen_size, b.path] }.each do |screenshot|
|
94
107
|
|
95
108
|
if last_size and last_size != screenshot.screen_size
|
96
109
|
# Next row (other simulator size)
|
97
110
|
top -= (previous_image_height + padding)
|
98
111
|
move_cursor_to top
|
99
112
|
|
100
|
-
if top < previous_image_height
|
101
|
-
start_new_page
|
102
|
-
top = cursor
|
103
|
-
end
|
104
|
-
|
105
113
|
index = 0
|
106
114
|
end
|
107
115
|
|
116
|
+
# Compute the image height to know how far to move down
|
117
|
+
original_size = FastImage.size(screenshot.path)
|
118
|
+
previous_image_height = (image_width.to_f / original_size[0].to_f) * original_size[1].to_f
|
119
|
+
|
120
|
+
# If there isn't enough room for this image then start a new page
|
121
|
+
if top < previous_image_height
|
122
|
+
start_new_page
|
123
|
+
top = cursor
|
124
|
+
end
|
125
|
+
|
108
126
|
image screenshot.path, width: image_width,
|
109
127
|
at: [(index * (image_width + padding)), top]
|
110
128
|
|
111
|
-
original_size = FastImage.size(screenshot.path)
|
112
|
-
previous_image_height = (image_width.to_f / original_size[0].to_f) * original_size[1].to_f
|
113
129
|
|
114
130
|
last_size = screenshot.screen_size
|
115
131
|
index += 1
|
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.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-11-
|
11
|
+
date: 2014-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -309,6 +309,7 @@ files:
|
|
309
309
|
- lib/assets/DeliverfileDefault
|
310
310
|
- lib/assets/DeliverfileExample
|
311
311
|
- lib/assets/ScreenshotsHelp
|
312
|
+
- lib/assets/fonts/mona.ttf
|
312
313
|
- lib/deliver.rb
|
313
314
|
- lib/deliver/app.rb
|
314
315
|
- lib/deliver/app_metadata.rb
|