fastlane-plugin-polidea 2.1.1.pre → 3.0.0.pre.1
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/README.md +9 -13
- data/lib/fastlane/plugin/polidea.rb +11 -0
- data/lib/fastlane/plugin/polidea/actions/add_prefix_schema.rb +3 -0
- data/lib/fastlane/plugin/polidea/actions/extract_app_info.rb +4 -0
- data/lib/fastlane/plugin/polidea/actions/fota_mail.rb +4 -0
- data/lib/fastlane/plugin/polidea/actions/fota_s3.rb +39 -28
- data/lib/fastlane/plugin/polidea/actions/import_provisioning.rb +5 -0
- data/lib/fastlane/plugin/polidea/actions/release_notes.rb +6 -1
- data/lib/fastlane/plugin/polidea/actions/release_notes_from_commits.rb +54 -0
- data/lib/fastlane/plugin/polidea/actions/shuttle.rb +6 -38
- data/lib/fastlane/plugin/polidea/helper/analytics.rb +43 -0
- data/lib/fastlane/plugin/polidea/helper/page_generator.rb +17 -56
- data/lib/fastlane/plugin/polidea/helper/qr_generator.rb +1 -1
- data/lib/fastlane/plugin/polidea/helper/shuttle.rb +39 -0
- data/lib/fastlane/plugin/polidea/version.rb +1 -1
- data/templates/install.erb +238 -0
- data/{lib/fastlane/plugin/polidea/templates/download.erb → templates/mail.erb} +19 -24
- metadata +21 -105
- data/lib/fastlane/plugin/polidea/actions/extract_app_icon.rb +0 -168
- data/lib/fastlane/plugin/polidea/actions/extract_app_name.rb +0 -97
- data/lib/fastlane/plugin/polidea/actions/extract_version.rb +0 -102
- data/lib/fastlane/plugin/polidea/actions/get_binary_size.rb +0 -53
- 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 +0 -4895
- data/lib/fastlane/plugin/polidea/templates/installation-page/css/installation-page.css.map +0 -7
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/bg.png +0 -0
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg.jpg +0 -0
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1024.jpg +0 -0
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1280.jpg +0 -0
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1360.jpg +0 -0
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1440.jpg +0 -0
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1680.jpg +0 -0
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_768.jpg +0 -0
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_ipad_1024.jpg +0 -0
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_ipad_768.jpg +0 -0
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/logo.svg +0 -32
- data/lib/fastlane/plugin/polidea/templates/installation-page/img/logo_square.svg +0 -12
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation.min.js +0 -10
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.abide.js +0 -294
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.accordion.js +0 -65
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.alert.js +0 -43
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.clearing.js +0 -558
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.dropdown.js +0 -313
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.equalizer.js +0 -74
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.interchange.js +0 -344
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.joyride.js +0 -915
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.js +0 -625
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.magellan.js +0 -189
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.offcanvas.js +0 -139
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.orbit.js +0 -472
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.reveal.js +0 -443
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.slider.js +0 -231
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.tab.js +0 -167
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.tooltip.js +0 -298
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.topbar.js +0 -436
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/aes.js +0 -35
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/enc-base64-min.js +0 -8
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/fastclick.js +0 -9
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/jquery.cookie.js +0 -8
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/jquery.js +0 -26
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/modernizr.js +0 -8
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/pbkdf2.js +0 -19
- data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/placeholder.js +0 -2
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/fonts.scss +0 -64
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation.scss +0 -45
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/_functions.scss +0 -101
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/_settings.scss +0 -1441
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_accordion.scss +0 -156
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_alert-boxes.scss +0 -126
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_block-grid.scss +0 -132
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_breadcrumbs.scss +0 -132
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_button-groups.scss +0 -200
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_buttons.scss +0 -252
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_clearing.scss +0 -247
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_dropdown-buttons.scss +0 -129
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_dropdown.scss +0 -248
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_flex-video.scss +0 -51
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_forms.scss +0 -570
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_global.scss +0 -447
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_grid.scss +0 -275
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_icon-bar.scss +0 -293
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_inline-lists.scss +0 -57
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_joyride.scss +0 -222
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_keystrokes.scss +0 -61
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_labels.scss +0 -105
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_magellan.scss +0 -34
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_offcanvas.scss +0 -510
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_orbit.scss +0 -368
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_pagination.scss +0 -162
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_panels.scss +0 -93
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_pricing-tables.scss +0 -150
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_progress-bars.scss +0 -79
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_range-slider.scss +0 -168
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_reveal.scss +0 -220
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_side-nav.scss +0 -116
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_split-buttons.scss +0 -191
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_sub-nav.scss +0 -125
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_switches.scss +0 -226
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_tables.scss +0 -135
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_tabs.scss +0 -123
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_thumbs.scss +0 -66
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_toolbar.scss +0 -70
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_tooltips.scss +0 -142
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_top-bar.scss +0 -676
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_type.scss +0 -523
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_visibility.scss +0 -408
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/installation-page.scss +0 -171
- data/lib/fastlane/plugin/polidea/templates/installation-page/sass/normalize.scss +0 -425
- data/lib/fastlane/plugin/polidea/templates/installation_template.erb +0 -54
- data/lib/fastlane/plugin/polidea/templates/mailgun_template.erb +0 -1257
- data/lib/fastlane/plugin/polidea/templates/secure_installation_template.erb +0 -130
@@ -0,0 +1,43 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Polidea
|
3
|
+
class Analytics
|
4
|
+
GA_TRACKING = "UA-165836496-1"
|
5
|
+
private_constant :GA_TRACKING
|
6
|
+
|
7
|
+
attr_accessor :session_id
|
8
|
+
attr_accessor :client
|
9
|
+
|
10
|
+
def initialize(session_id)
|
11
|
+
@session_id = session_id
|
12
|
+
@client = FastlaneCore::AnalyticsIngesterClient.new(GA_TRACKING)
|
13
|
+
@client_id = "fastlane-plugin-polidea@#{Fastlane::Polidea::VERSION}"
|
14
|
+
end
|
15
|
+
|
16
|
+
def action_launched(action_name, config)
|
17
|
+
client.post_request({
|
18
|
+
client_id: @session_id,
|
19
|
+
category: @client_id,
|
20
|
+
action: action_name,
|
21
|
+
label: "launched"
|
22
|
+
})
|
23
|
+
config.values.filter { |k, v| !v.nil? }.keys.each do |param|
|
24
|
+
client.post_request({
|
25
|
+
client_id: @session_id,
|
26
|
+
category: @client_id,
|
27
|
+
action: "#{action_name}::#{param}",
|
28
|
+
label: "param"
|
29
|
+
})
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def action_completed(action_name)
|
34
|
+
client.post_request({
|
35
|
+
client_id: @session_id,
|
36
|
+
category: @client_id,
|
37
|
+
action: action_name,
|
38
|
+
label: "completed"
|
39
|
+
})
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'openssl'
|
2
|
-
require 'base64'
|
3
1
|
require 'json'
|
4
2
|
|
5
3
|
module Fastlane
|
@@ -7,12 +5,14 @@ module Fastlane
|
|
7
5
|
def self.mail(config)
|
8
6
|
UI.message("Generating e-mail...")
|
9
7
|
eth = Fastlane::ErbTemplateHelper
|
10
|
-
html_template = eth.load_from_path(
|
8
|
+
html_template = eth.load_from_path(
|
9
|
+
File.expand_path("templates/mail.erb", Polidea.root)
|
10
|
+
)
|
11
11
|
eth.render(html_template, {
|
12
12
|
author: config[:author],
|
13
13
|
last_commit: config[:last_commit],
|
14
14
|
is_android: config[:is_android],
|
15
|
-
app_icon: config[:app_icon]
|
15
|
+
app_icon: app_icon_or_placholder(config[:app_icon]),
|
16
16
|
app_name: config[:app_name],
|
17
17
|
app_version: config[:app_version],
|
18
18
|
build_number: config[:build_number],
|
@@ -26,68 +26,20 @@ module Fastlane
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def self.installation_page(config)
|
29
|
-
if config[:installation_password]
|
30
|
-
generate_private(config)
|
31
|
-
else
|
32
|
-
generate_public(config)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def self.generate_private(config)
|
37
|
-
UI.message("Generating private installation page with password `#{config[:installation_password]}`...")
|
38
|
-
eth = Fastlane::ErbTemplateHelper
|
39
|
-
html_template = eth.load_from_path("#{__dir__}/../templates/secure_installation_template.erb")
|
40
|
-
installation_link, salt, iv = encrypt(config[:url], config[:installation_password])
|
41
|
-
eth.render(html_template, {
|
42
|
-
url: installation_link,
|
43
|
-
salt: salt,
|
44
|
-
iv: iv,
|
45
|
-
app_version: config[:app_version],
|
46
|
-
build_number: config[:build_number],
|
47
|
-
app_name: config[:app_name],
|
48
|
-
app_icon: config[:app_icon],
|
49
|
-
platform: config[:platform],
|
50
|
-
release_notes: parse_release_notes(config[:release_notes])
|
51
|
-
})
|
52
|
-
end
|
53
|
-
private_class_method :generate_private
|
54
|
-
|
55
|
-
def self.generate_public(config)
|
56
29
|
UI.message("Generating public installation page...")
|
57
30
|
eth = Fastlane::ErbTemplateHelper
|
58
|
-
html_template = eth.load_from_path(
|
31
|
+
html_template = eth.load_from_path(
|
32
|
+
File.expand_path("templates/install.erb", Polidea.root)
|
33
|
+
)
|
59
34
|
eth.render(html_template, {
|
60
35
|
url: config[:url],
|
61
36
|
app_version: config[:app_version],
|
62
37
|
build_number: config[:build_number],
|
63
38
|
app_name: config[:app_name],
|
64
|
-
app_icon: config[:app_icon],
|
65
|
-
platform: config[:platform],
|
39
|
+
app_icon: app_icon_or_placholder(config[:app_icon]),
|
66
40
|
release_notes: parse_release_notes(config[:release_notes])
|
67
41
|
})
|
68
42
|
end
|
69
|
-
private_class_method :generate_public
|
70
|
-
|
71
|
-
def self.encrypt(url, password)
|
72
|
-
salt = OpenSSL::Random.random_bytes(32)
|
73
|
-
iter = 128
|
74
|
-
key_len = 32
|
75
|
-
key = OpenSSL::PKCS5.pbkdf2_hmac_sha1(password, salt, iter, key_len)
|
76
|
-
|
77
|
-
cipher = OpenSSL::Cipher::AES256.new(:CBC)
|
78
|
-
cipher.encrypt
|
79
|
-
cipher.key = key
|
80
|
-
|
81
|
-
random_iv = cipher.random_iv
|
82
|
-
iv = Base64.encode64(random_iv).delete "\n"
|
83
|
-
to_json = { url: url.to_s }.to_json
|
84
|
-
var = cipher.update(to_json.to_s) + cipher.final
|
85
|
-
|
86
|
-
installation_link = Base64.encode64(var).delete "\n"
|
87
|
-
salt = Base64.encode64(salt).delete "\n"
|
88
|
-
return installation_link, salt, iv
|
89
|
-
end
|
90
|
-
private_class_method :encrypt
|
91
43
|
|
92
44
|
def self.parse_release_notes(release_notes)
|
93
45
|
renderer = Redcarpet::Render::HTML.new({
|
@@ -103,5 +55,14 @@ module Fastlane
|
|
103
55
|
markdown.render(release_notes || "No release notes.")
|
104
56
|
end
|
105
57
|
private_class_method :parse_release_notes
|
58
|
+
|
59
|
+
def self.app_icon_or_placholder(app_icon)
|
60
|
+
if app_icon.nil?
|
61
|
+
"https://s3.eu-central-1.amazonaws.com/fota.polidea.com/mails/images/icon-placeholder.jpg"
|
62
|
+
else
|
63
|
+
"cid:#{app_icon}"
|
64
|
+
end
|
65
|
+
end
|
66
|
+
private_class_method :app_icon_or_placholder
|
106
67
|
end
|
107
68
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require 'json'
|
3
|
+
|
4
|
+
module Fastlane
|
5
|
+
module Shuttle
|
6
|
+
class Client
|
7
|
+
def initialize(base_url, access_token)
|
8
|
+
retry_options = {
|
9
|
+
max: 2,
|
10
|
+
interval: 0.05,
|
11
|
+
interval_randomness: 0.5,
|
12
|
+
backoff_factor: 2
|
13
|
+
}
|
14
|
+
|
15
|
+
@conn = Faraday.new(
|
16
|
+
url: base_url,
|
17
|
+
headers: {
|
18
|
+
'Content-Type' => 'application/json',
|
19
|
+
'Access-Token' => access_token
|
20
|
+
}
|
21
|
+
) do |conn|
|
22
|
+
conn.request :retry, retry_options
|
23
|
+
conn.request :multipart
|
24
|
+
|
25
|
+
conn.response :raise_error
|
26
|
+
|
27
|
+
conn.adapter :net_http
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def create_build(platform, app_identifier, build)
|
32
|
+
@conn.post(
|
33
|
+
"cd/apps/#{platform}/#{app_identifier}/builds",
|
34
|
+
{ build: build }.to_json
|
35
|
+
)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,238 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8" />
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
6
|
+
<title>Install <%= app_name %></title>
|
7
|
+
<link rel="icon"
|
8
|
+
type="image/png"
|
9
|
+
href="https://s3.eu-central-1.amazonaws.com/fota.polidea.com/mails/images/favicon.ico">
|
10
|
+
<link
|
11
|
+
href="https://fonts.googleapis.com/css2?family=Overpass+Mono&display=swap"
|
12
|
+
rel="stylesheet"
|
13
|
+
/>
|
14
|
+
<link href="https://use.typekit.net/kdr8bbb.css" rel="stylesheet" />
|
15
|
+
|
16
|
+
<style>
|
17
|
+
html {
|
18
|
+
min-height: 100%;
|
19
|
+
}
|
20
|
+
body {
|
21
|
+
margin: 0;
|
22
|
+
font-family: "acumin-pro", Helvetica, Arial, sans-serif;
|
23
|
+
}
|
24
|
+
@media screen and (min-width: 960px) {
|
25
|
+
body {
|
26
|
+
background-image: url(https://s3.eu-central-1.amazonaws.com/fota.polidea.com/mails/images/cover-polidea.jpg);
|
27
|
+
background-repeat: no-repeat;
|
28
|
+
background-size: cover;
|
29
|
+
background-position: center;
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
33
|
+
.content {
|
34
|
+
background-color: white;
|
35
|
+
}
|
36
|
+
@media screen and (min-width: 960px) {
|
37
|
+
.content {
|
38
|
+
width: 700px;
|
39
|
+
margin: 48px auto;
|
40
|
+
}
|
41
|
+
}
|
42
|
+
|
43
|
+
header {
|
44
|
+
padding: 20px 32px;
|
45
|
+
}
|
46
|
+
@media screen and (max-width: 959px) {
|
47
|
+
header {
|
48
|
+
padding: 16px 24px;
|
49
|
+
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
|
50
|
+
}
|
51
|
+
}
|
52
|
+
|
53
|
+
img.app-icon {
|
54
|
+
width: 64px;
|
55
|
+
height: 64px;
|
56
|
+
margin-right: 48px;
|
57
|
+
border-radius: 6px;
|
58
|
+
box-shadow: 0 2px 11px 0 #00000033;
|
59
|
+
background-color: white;
|
60
|
+
}
|
61
|
+
|
62
|
+
section.app-info {
|
63
|
+
padding: 16px 24px;
|
64
|
+
}
|
65
|
+
@media screen and (min-width: 960px) {
|
66
|
+
section.app-info {
|
67
|
+
padding: 16px 24px;
|
68
|
+
width: 560px;
|
69
|
+
margin: 0 auto;
|
70
|
+
}
|
71
|
+
}
|
72
|
+
|
73
|
+
.app-header {
|
74
|
+
display: flex;
|
75
|
+
align-items: center;
|
76
|
+
flex-wrap: wrap;
|
77
|
+
}
|
78
|
+
|
79
|
+
.spacer {
|
80
|
+
flex: 1;
|
81
|
+
}
|
82
|
+
|
83
|
+
.app-name h2,
|
84
|
+
.app-name p {
|
85
|
+
margin: 0;
|
86
|
+
}
|
87
|
+
|
88
|
+
.app-name p {
|
89
|
+
font-size: 12px;
|
90
|
+
color: #333333;
|
91
|
+
}
|
92
|
+
|
93
|
+
h1 {
|
94
|
+
}
|
95
|
+
|
96
|
+
h2 {
|
97
|
+
font-size: 18px;
|
98
|
+
font-weight: 600;
|
99
|
+
line-height: 1.78;
|
100
|
+
}
|
101
|
+
|
102
|
+
p {
|
103
|
+
font-size: 16px;
|
104
|
+
line-height: 1.63;
|
105
|
+
}
|
106
|
+
|
107
|
+
.button {
|
108
|
+
background-color: #2924fb;
|
109
|
+
padding: 12px 30px;
|
110
|
+
margin: 32px 0 0;
|
111
|
+
color: white;
|
112
|
+
border: none;
|
113
|
+
border-radius: 30px;
|
114
|
+
font-family: "Overpass Mono", monospace;
|
115
|
+
font-size: 14px;
|
116
|
+
font-weight: bold;
|
117
|
+
text-decoration: none;
|
118
|
+
}
|
119
|
+
.button img {
|
120
|
+
margin-bottom: -3px;
|
121
|
+
}
|
122
|
+
|
123
|
+
.release-notes-section {
|
124
|
+
padding: 32px 0;
|
125
|
+
}
|
126
|
+
.release-notes-section > h2 {
|
127
|
+
font-family: "Overpass Mono", monospace;
|
128
|
+
font-size: 16px;
|
129
|
+
font-weight: bold;
|
130
|
+
color: #2924fb;
|
131
|
+
margin-bottom: 16px;
|
132
|
+
}
|
133
|
+
.release-notes {
|
134
|
+
padding: 24px;
|
135
|
+
color: black;
|
136
|
+
background-color: #f8f8f8;
|
137
|
+
font-size: 16px;
|
138
|
+
line-height: 1.44;
|
139
|
+
letter-spacing: normal;
|
140
|
+
color: #333333;
|
141
|
+
}
|
142
|
+
|
143
|
+
.release-notes ul {
|
144
|
+
padding: 0;
|
145
|
+
list-style-type: square;
|
146
|
+
list-style-position: inside;
|
147
|
+
}
|
148
|
+
|
149
|
+
.release-notes h1,
|
150
|
+
.release-notes h2,
|
151
|
+
.release-notes h3,
|
152
|
+
.release-notes h4,
|
153
|
+
.release-notes h5,
|
154
|
+
.release-notes h6 {
|
155
|
+
color: black;
|
156
|
+
margin-top: 24px;
|
157
|
+
margin-bottom: 16px;
|
158
|
+
}
|
159
|
+
|
160
|
+
.release-notes h1 {
|
161
|
+
font-size: 26px;
|
162
|
+
font-weight: bold;
|
163
|
+
line-height: 1.27;
|
164
|
+
}
|
165
|
+
|
166
|
+
.release-notes h2 {
|
167
|
+
font-size: 18px;
|
168
|
+
font-weight: 500;
|
169
|
+
line-height: 1.78;
|
170
|
+
}
|
171
|
+
|
172
|
+
.release-notes h3 {
|
173
|
+
font-size: 18px;
|
174
|
+
font-weight: bold;
|
175
|
+
line-height: 1.2;
|
176
|
+
}
|
177
|
+
|
178
|
+
.release-notes h4 {
|
179
|
+
font-weight: 500;
|
180
|
+
font-size: 16px1em;
|
181
|
+
}
|
182
|
+
|
183
|
+
.release-notes h5 {
|
184
|
+
font-weight: 500;
|
185
|
+
font-size: 14px;
|
186
|
+
}
|
187
|
+
|
188
|
+
.release-notes h6 {
|
189
|
+
font-weight: 500;
|
190
|
+
font-size: 13px;
|
191
|
+
}
|
192
|
+
|
193
|
+
.release-notes pre {
|
194
|
+
padding: 0;
|
195
|
+
margin: 0;
|
196
|
+
}
|
197
|
+
.release-notes pre code {
|
198
|
+
margin: 0;
|
199
|
+
padding: 0;
|
200
|
+
font-family: "Overpass Mono", monospace;
|
201
|
+
color: #424242;
|
202
|
+
font-size: 12px;
|
203
|
+
font-weight: bold;
|
204
|
+
line-height: 1.75;
|
205
|
+
}
|
206
|
+
</style>
|
207
|
+
</head>
|
208
|
+
<body>
|
209
|
+
<article class="content">
|
210
|
+
<header><img src="https://s3.eu-central-1.amazonaws.com/fota.polidea.com/mails/images/polidea-logo.png" height="24" /></header>
|
211
|
+
<section class="app-info">
|
212
|
+
<div class="app-header">
|
213
|
+
<img class="app-icon" src="<%= app_icon %>" />
|
214
|
+
<div class="app-name">
|
215
|
+
<h2><%= app_name %></h2>
|
216
|
+
<p>Version <%= app_version %> (<%= build_number %>)</p>
|
217
|
+
</div>
|
218
|
+
<div class="spacer"></div>
|
219
|
+
|
220
|
+
<a class="button" href="<%= url %>">
|
221
|
+
<img
|
222
|
+
src="https://s3.eu-central-1.amazonaws.com/fota.polidea.com/mails/images/install-icon.png"
|
223
|
+
width="16"
|
224
|
+
height="16"
|
225
|
+
/>
|
226
|
+
Install
|
227
|
+
</a>
|
228
|
+
</div>
|
229
|
+
<section class="release-notes-section">
|
230
|
+
<h2>What’s new:</h2>
|
231
|
+
<div class="release-notes">
|
232
|
+
<%= release_notes %>
|
233
|
+
</div>
|
234
|
+
</section>
|
235
|
+
</section>
|
236
|
+
</article>
|
237
|
+
</body>
|
238
|
+
</html>
|