fastlane-plugin-polidea 2.1.0 → 2.1.1.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/fastlane/plugin/polidea/actions/fota_mail.rb +10 -16
- data/lib/fastlane/plugin/polidea/actions/fota_s3.rb +6 -25
- data/lib/fastlane/plugin/polidea/helper/mime.rb +22 -0
- data/lib/fastlane/plugin/polidea/helper/page_generator.rb +39 -3
- data/lib/fastlane/plugin/polidea/helper/qr_generator.rb +1 -1
- data/lib/fastlane/plugin/polidea/templates/download.erb +481 -0
- data/lib/fastlane/plugin/polidea/templates/images/cover-shuttle.jpg +0 -0
- data/lib/fastlane/plugin/polidea/templates/images/icon-placeholder.png +0 -0
- data/lib/fastlane/plugin/polidea/templates/images/polidea-logo.png +0 -0
- data/lib/fastlane/plugin/polidea/templates/images/social-behance.png +0 -0
- data/lib/fastlane/plugin/polidea/templates/images/social-dribbble.png +0 -0
- data/lib/fastlane/plugin/polidea/templates/images/social-facebook.png +0 -0
- data/lib/fastlane/plugin/polidea/templates/images/social-github.png +0 -0
- data/lib/fastlane/plugin/polidea/templates/images/social-instagram.png +0 -0
- data/lib/fastlane/plugin/polidea/templates/images/social-linkedin.png +0 -0
- data/lib/fastlane/plugin/polidea/templates/images/social-twitter.png +0 -0
- data/lib/fastlane/plugin/polidea/templates/installation-page/css/installation-page.css +2835 -1082
- data/lib/fastlane/plugin/polidea/templates/installation_template.erb +3 -7
- data/lib/fastlane/plugin/polidea/templates/mailgun_template.erb +56 -24
- data/lib/fastlane/plugin/polidea/templates/secure_installation_template.erb +6 -10
- data/lib/fastlane/plugin/polidea/version.rb +1 -1
- metadata +28 -8
- data/lib/fastlane/plugin/polidea/templates/images/logo.png +0 -0
- data/lib/fastlane/plugin/polidea/templates/images/polidea-facebook-icon.png +0 -0
- data/lib/fastlane/plugin/polidea/templates/images/polidea-github-icon.png +0 -0
- data/lib/fastlane/plugin/polidea/templates/images/polidea-twitter-icon.png +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9389415ea79485df9f60db8fb7d36dc00f3722a0c659132f35e4744e89ab8c09
|
4
|
+
data.tar.gz: 455e97b59e28db63b05988617ab20453d49d281f8f18a987e58e12157168affe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f8900858b70301309e2a41b474200a95fe0af1214a969e0a0fab853859e36fbb4e2717cd9d24240c5ea0e080f35abe7d6be5dfc8a55a2ec2198f593746c946d
|
7
|
+
data.tar.gz: edcb2e87e4381fbb62797dc9e7c5cde32db6578a315254c45c1ee0c85996024c6827d9c8a2453c184a9d57f53ea71c28b897272f65355182fe4f0948e6aefcb3
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# rubocop:disable Metrics/MethodLength
|
2
|
+
require 'redcarpet'
|
2
3
|
require 'fastlane/erb_template_helper'
|
3
4
|
|
4
5
|
module Fastlane
|
@@ -105,24 +106,15 @@ module Fastlane
|
|
105
106
|
end
|
106
107
|
|
107
108
|
def self.inline_images(options)
|
108
|
-
base_path = "#{__dir__}/../templates/images"
|
109
109
|
options[:inline] = [
|
110
110
|
qr_code(options[:installation_link])
|
111
111
|
]
|
112
112
|
options[:inline] << File.new(options[:app_icon]) if options[:app_icon]
|
113
|
-
images = [
|
114
|
-
"polidea-facebook-icon.png",
|
115
|
-
"polidea-github-icon.png",
|
116
|
-
"polidea-logo.png",
|
117
|
-
"polidea-twitter-icon.png"
|
118
|
-
]
|
119
|
-
images << "icon-placeholder.png" unless options[:app_icon]
|
120
|
-
options[:inline].concat(images.map { |image| File.new("#{base_path}/#{image}") })
|
121
113
|
end
|
122
114
|
|
123
115
|
def self.qr_code(installation_link)
|
124
116
|
qr_code_path = "/tmp/qr_code.png"
|
125
|
-
QRGenerator.new(installation_link, false, ::ChunkyPNG::Color.rgb(
|
117
|
+
QRGenerator.new(installation_link, false, ::ChunkyPNG::Color.rgb(21, 18, 126)).generate(qr_code_path)
|
126
118
|
File.new(qr_code_path)
|
127
119
|
end
|
128
120
|
|
@@ -150,25 +142,27 @@ module Fastlane
|
|
150
142
|
app_version: options[:app_version],
|
151
143
|
build_number: options[:build_number],
|
152
144
|
installation_link: options[:installation_link],
|
153
|
-
release_notes:
|
145
|
+
release_notes: options[:release_notes],
|
154
146
|
platform: options[:platform],
|
155
147
|
release_date: DateTime.now.strftime('%b %d, %Y'),
|
156
|
-
binary_size: (options[:binary_size] / 1024.0 / 1024.0).round(2).to_s
|
148
|
+
binary_size: (options[:binary_size] / 1024.0 / 1024.0).round(2).to_s,
|
149
|
+
qr_code: "qr_code.png"
|
157
150
|
}
|
158
151
|
hash[:success] = options[:success]
|
159
152
|
hash[:ci_build_link] = options[:ci_build_link]
|
160
153
|
|
161
|
-
# grabs module
|
162
|
-
eth = Fastlane::ErbTemplateHelper
|
163
154
|
# create html from template
|
164
155
|
html_template_path = options[:template_path]
|
165
156
|
if html_template_path && File.exist?(html_template_path)
|
157
|
+
eth = Fastlane::ErbTemplateHelper
|
166
158
|
html_template = eth.load_from_path(html_template_path)
|
159
|
+
mail_html = eth.render(html_template, hash)
|
167
160
|
else
|
168
|
-
|
161
|
+
mail_html = PageGenerator.mail(hash)
|
169
162
|
end
|
163
|
+
|
170
164
|
premailer = Premailer.new(
|
171
|
-
|
165
|
+
mail_html,
|
172
166
|
{ warn_level: Premailer::Warnings::SAFE, with_html_string: true }
|
173
167
|
)
|
174
168
|
premailer.to_inline_css
|
@@ -164,7 +164,7 @@ module Fastlane
|
|
164
164
|
icon_url = self.upload_icon(icon_file, url_part, bucket, acl, treat_bucket_as_domain_name)
|
165
165
|
|
166
166
|
# Creates html from template
|
167
|
-
html_render = PageGenerator.
|
167
|
+
html_render = PageGenerator.installation_page({
|
168
168
|
url: "itms-services://?action=download-manifest&url=#{URI.encode_www_form_component(plist_url)}",
|
169
169
|
installation_password: installation_password,
|
170
170
|
app_version: bundle_version,
|
@@ -278,7 +278,7 @@ module Fastlane
|
|
278
278
|
icon_url = self.upload_icon(icon_file, url_part, bucket, acl, treat_bucket_as_domain_name)
|
279
279
|
|
280
280
|
# Creates html from template
|
281
|
-
html_render = PageGenerator.
|
281
|
+
html_render = PageGenerator.installation_page({
|
282
282
|
url: apk_url,
|
283
283
|
installation_password: installation_password,
|
284
284
|
app_version: app_version,
|
@@ -348,7 +348,7 @@ module Fastlane
|
|
348
348
|
key: file_name,
|
349
349
|
body: file_data,
|
350
350
|
acl: acl,
|
351
|
-
content_type: content_type_for_file(file_name)
|
351
|
+
content_type: Mime.content_type_for_file(file_name)
|
352
352
|
})
|
353
353
|
|
354
354
|
# When you enable versioning on a S3 bucket,
|
@@ -378,7 +378,7 @@ module Fastlane
|
|
378
378
|
key: s3_path,
|
379
379
|
body: File.open(local_path),
|
380
380
|
acl: acl,
|
381
|
-
content_type: content_type_for_file(local_path)
|
381
|
+
content_type: Mime.content_type_for_file(local_path)
|
382
382
|
})
|
383
383
|
end
|
384
384
|
end
|
@@ -399,25 +399,6 @@ module Fastlane
|
|
399
399
|
return files
|
400
400
|
end
|
401
401
|
|
402
|
-
def self.content_type_for_file(file)
|
403
|
-
file_extension = File.extname(file)
|
404
|
-
extensions_to_type = {
|
405
|
-
".html" => "text/html",
|
406
|
-
".png" => "image/png",
|
407
|
-
".jpg" => "text/jpeg",
|
408
|
-
".gif" => "image/gif",
|
409
|
-
".svg" => "image/svg+xml",
|
410
|
-
".log" => "text/plain",
|
411
|
-
".css" => "text/css",
|
412
|
-
".js" => "application/javascript"
|
413
|
-
}
|
414
|
-
if extensions_to_type[file_extension].nil?
|
415
|
-
"application/octet-stream"
|
416
|
-
else
|
417
|
-
extensions_to_type[file_extension]
|
418
|
-
end
|
419
|
-
end
|
420
|
-
|
421
402
|
#
|
422
403
|
# NOT a fan of this as this was taken straight from Shenzhen
|
423
404
|
# https://github.com/nomad/shenzhen/blob/986792db5d4d16a80c865a2748ee96ba63644821/lib/shenzhen/plugins/s3.rb#L32
|
@@ -539,9 +520,9 @@ module Fastlane
|
|
539
520
|
FastlaneCore::ConfigItem.new(key: :release_notes,
|
540
521
|
env_name: "S3_RELEASE_NOTES",
|
541
522
|
description: "Release notes",
|
542
|
-
type:
|
523
|
+
type: String,
|
543
524
|
optional: true,
|
544
|
-
default_value: Actions.lane_context[SharedValues::RELEASE_NOTES]
|
525
|
+
default_value: Actions.lane_context[SharedValues::RELEASE_NOTES]),
|
545
526
|
FastlaneCore::ConfigItem.new(key: :treat_bucket_as_domain_name,
|
546
527
|
description: "If it's true, it transforms all urls from https://s3.amazonaws.com/BUCKET_NAME to https://BUCKET_NAME",
|
547
528
|
is_string: false,
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Mime
|
3
|
+
def self.content_type_for_file(file)
|
4
|
+
file_extension = File.extname(file)
|
5
|
+
extensions_to_type = {
|
6
|
+
".html" => "text/html",
|
7
|
+
".png" => "image/png",
|
8
|
+
".jpg" => "image/jpeg",
|
9
|
+
".gif" => "image/gif",
|
10
|
+
".svg" => "image/svg+xml",
|
11
|
+
".log" => "text/plain",
|
12
|
+
".css" => "text/css",
|
13
|
+
".js" => "application/javascript"
|
14
|
+
}
|
15
|
+
if extensions_to_type[file_extension].nil?
|
16
|
+
"application/octet-stream"
|
17
|
+
else
|
18
|
+
extensions_to_type[file_extension]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -4,7 +4,28 @@ require 'json'
|
|
4
4
|
|
5
5
|
module Fastlane
|
6
6
|
module PageGenerator
|
7
|
-
def self.
|
7
|
+
def self.mail(config)
|
8
|
+
UI.message("Generating e-mail...")
|
9
|
+
eth = Fastlane::ErbTemplateHelper
|
10
|
+
html_template = eth.load_from_path("#{__dir__}/../templates/download.erb")
|
11
|
+
eth.render(html_template, {
|
12
|
+
author: config[:author],
|
13
|
+
last_commit: config[:last_commit],
|
14
|
+
is_android: config[:is_android],
|
15
|
+
app_icon: config[:app_icon] ? "cid:#{config[:app_icon]}" : "https://s3.eu-central-1.amazonaws.com/fota.polidea.com/mails/images/icon-placeholder.png",
|
16
|
+
app_name: config[:app_name],
|
17
|
+
app_version: config[:app_version],
|
18
|
+
build_number: config[:build_number],
|
19
|
+
installation_link: config[:installation_link],
|
20
|
+
release_notes: parse_release_notes(config[:release_notes]),
|
21
|
+
platform: config[:platform],
|
22
|
+
release_date: config[:release_date],
|
23
|
+
binary_size: config[:binary_size],
|
24
|
+
qr_code: "cid:#{config[:qr_code]}"
|
25
|
+
})
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.installation_page(config)
|
8
29
|
if config[:installation_password]
|
9
30
|
generate_private(config)
|
10
31
|
else
|
@@ -26,7 +47,7 @@ module Fastlane
|
|
26
47
|
app_name: config[:app_name],
|
27
48
|
app_icon: config[:app_icon],
|
28
49
|
platform: config[:platform],
|
29
|
-
release_notes: config[:release_notes]
|
50
|
+
release_notes: parse_release_notes(config[:release_notes])
|
30
51
|
})
|
31
52
|
end
|
32
53
|
private_class_method :generate_private
|
@@ -42,7 +63,7 @@ module Fastlane
|
|
42
63
|
app_name: config[:app_name],
|
43
64
|
app_icon: config[:app_icon],
|
44
65
|
platform: config[:platform],
|
45
|
-
release_notes: config[:release_notes]
|
66
|
+
release_notes: parse_release_notes(config[:release_notes])
|
46
67
|
})
|
47
68
|
end
|
48
69
|
private_class_method :generate_public
|
@@ -67,5 +88,20 @@ module Fastlane
|
|
67
88
|
return installation_link, salt, iv
|
68
89
|
end
|
69
90
|
private_class_method :encrypt
|
91
|
+
|
92
|
+
def self.parse_release_notes(release_notes)
|
93
|
+
renderer = Redcarpet::Render::HTML.new({
|
94
|
+
filter_html: true,
|
95
|
+
no_styles: true
|
96
|
+
})
|
97
|
+
markdown = Redcarpet::Markdown.new(
|
98
|
+
renderer,
|
99
|
+
fenced_code_blocks: true,
|
100
|
+
autolink: false,
|
101
|
+
tables: false
|
102
|
+
)
|
103
|
+
markdown.render(release_notes || "No release notes.")
|
104
|
+
end
|
105
|
+
private_class_method :parse_release_notes
|
70
106
|
end
|
71
107
|
end
|
@@ -10,7 +10,7 @@ module Fastlane
|
|
10
10
|
@margin = 20
|
11
11
|
@image = ::ChunkyPNG::Image.new(2 * @margin + @qr_code.qrcode.module_count * 5, 2 * @margin + @qr_code.qrcode.module_count * 5, ::ChunkyPNG::Color::WHITE)
|
12
12
|
|
13
|
-
@logo = ::ChunkyPNG::Image.from_file("#{path_to_resources}/logo.png")
|
13
|
+
@logo = ::ChunkyPNG::Image.from_file("#{path_to_resources}/polidea-logo.png")
|
14
14
|
@logo = @logo.resize(2 * @margin + @qr_code.qrcode.module_count * 5, 2 * @margin + @qr_code.qrcode.module_count * 5)
|
15
15
|
end
|
16
16
|
|