fastlane-plugin-polidea 2.1.0 → 2.1.1.pre
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
|