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.
Files changed (121) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -13
  3. data/lib/fastlane/plugin/polidea.rb +11 -0
  4. data/lib/fastlane/plugin/polidea/actions/add_prefix_schema.rb +3 -0
  5. data/lib/fastlane/plugin/polidea/actions/extract_app_info.rb +4 -0
  6. data/lib/fastlane/plugin/polidea/actions/fota_mail.rb +4 -0
  7. data/lib/fastlane/plugin/polidea/actions/fota_s3.rb +39 -28
  8. data/lib/fastlane/plugin/polidea/actions/import_provisioning.rb +5 -0
  9. data/lib/fastlane/plugin/polidea/actions/release_notes.rb +6 -1
  10. data/lib/fastlane/plugin/polidea/actions/release_notes_from_commits.rb +54 -0
  11. data/lib/fastlane/plugin/polidea/actions/shuttle.rb +6 -38
  12. data/lib/fastlane/plugin/polidea/helper/analytics.rb +43 -0
  13. data/lib/fastlane/plugin/polidea/helper/page_generator.rb +17 -56
  14. data/lib/fastlane/plugin/polidea/helper/qr_generator.rb +1 -1
  15. data/lib/fastlane/plugin/polidea/helper/shuttle.rb +39 -0
  16. data/lib/fastlane/plugin/polidea/version.rb +1 -1
  17. data/templates/install.erb +238 -0
  18. data/{lib/fastlane/plugin/polidea/templates/download.erb → templates/mail.erb} +19 -24
  19. metadata +21 -105
  20. data/lib/fastlane/plugin/polidea/actions/extract_app_icon.rb +0 -168
  21. data/lib/fastlane/plugin/polidea/actions/extract_app_name.rb +0 -97
  22. data/lib/fastlane/plugin/polidea/actions/extract_version.rb +0 -102
  23. data/lib/fastlane/plugin/polidea/actions/get_binary_size.rb +0 -53
  24. data/lib/fastlane/plugin/polidea/templates/images/cover-shuttle.jpg +0 -0
  25. data/lib/fastlane/plugin/polidea/templates/images/icon-placeholder.png +0 -0
  26. data/lib/fastlane/plugin/polidea/templates/images/polidea-logo.png +0 -0
  27. data/lib/fastlane/plugin/polidea/templates/images/social-behance.png +0 -0
  28. data/lib/fastlane/plugin/polidea/templates/images/social-dribbble.png +0 -0
  29. data/lib/fastlane/plugin/polidea/templates/images/social-facebook.png +0 -0
  30. data/lib/fastlane/plugin/polidea/templates/images/social-github.png +0 -0
  31. data/lib/fastlane/plugin/polidea/templates/images/social-instagram.png +0 -0
  32. data/lib/fastlane/plugin/polidea/templates/images/social-linkedin.png +0 -0
  33. data/lib/fastlane/plugin/polidea/templates/images/social-twitter.png +0 -0
  34. data/lib/fastlane/plugin/polidea/templates/installation-page/css/installation-page.css +0 -4895
  35. data/lib/fastlane/plugin/polidea/templates/installation-page/css/installation-page.css.map +0 -7
  36. data/lib/fastlane/plugin/polidea/templates/installation-page/img/bg.png +0 -0
  37. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg.jpg +0 -0
  38. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1024.jpg +0 -0
  39. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1280.jpg +0 -0
  40. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1360.jpg +0 -0
  41. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1440.jpg +0 -0
  42. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1680.jpg +0 -0
  43. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_768.jpg +0 -0
  44. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_ipad_1024.jpg +0 -0
  45. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_ipad_768.jpg +0 -0
  46. data/lib/fastlane/plugin/polidea/templates/installation-page/img/logo.svg +0 -32
  47. data/lib/fastlane/plugin/polidea/templates/installation-page/img/logo_square.svg +0 -12
  48. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation.min.js +0 -10
  49. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.abide.js +0 -294
  50. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.accordion.js +0 -65
  51. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.alert.js +0 -43
  52. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.clearing.js +0 -558
  53. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.dropdown.js +0 -313
  54. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.equalizer.js +0 -74
  55. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.interchange.js +0 -344
  56. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.joyride.js +0 -915
  57. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.js +0 -625
  58. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.magellan.js +0 -189
  59. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.offcanvas.js +0 -139
  60. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.orbit.js +0 -472
  61. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.reveal.js +0 -443
  62. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.slider.js +0 -231
  63. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.tab.js +0 -167
  64. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.tooltip.js +0 -298
  65. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.topbar.js +0 -436
  66. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/aes.js +0 -35
  67. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/enc-base64-min.js +0 -8
  68. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/fastclick.js +0 -9
  69. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/jquery.cookie.js +0 -8
  70. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/jquery.js +0 -26
  71. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/modernizr.js +0 -8
  72. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/pbkdf2.js +0 -19
  73. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/placeholder.js +0 -2
  74. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/fonts.scss +0 -64
  75. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation.scss +0 -45
  76. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/_functions.scss +0 -101
  77. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/_settings.scss +0 -1441
  78. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_accordion.scss +0 -156
  79. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_alert-boxes.scss +0 -126
  80. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_block-grid.scss +0 -132
  81. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_breadcrumbs.scss +0 -132
  82. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_button-groups.scss +0 -200
  83. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_buttons.scss +0 -252
  84. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_clearing.scss +0 -247
  85. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_dropdown-buttons.scss +0 -129
  86. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_dropdown.scss +0 -248
  87. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_flex-video.scss +0 -51
  88. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_forms.scss +0 -570
  89. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_global.scss +0 -447
  90. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_grid.scss +0 -275
  91. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_icon-bar.scss +0 -293
  92. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_inline-lists.scss +0 -57
  93. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_joyride.scss +0 -222
  94. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_keystrokes.scss +0 -61
  95. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_labels.scss +0 -105
  96. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_magellan.scss +0 -34
  97. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_offcanvas.scss +0 -510
  98. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_orbit.scss +0 -368
  99. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_pagination.scss +0 -162
  100. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_panels.scss +0 -93
  101. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_pricing-tables.scss +0 -150
  102. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_progress-bars.scss +0 -79
  103. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_range-slider.scss +0 -168
  104. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_reveal.scss +0 -220
  105. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_side-nav.scss +0 -116
  106. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_split-buttons.scss +0 -191
  107. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_sub-nav.scss +0 -125
  108. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_switches.scss +0 -226
  109. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_tables.scss +0 -135
  110. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_tabs.scss +0 -123
  111. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_thumbs.scss +0 -66
  112. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_toolbar.scss +0 -70
  113. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_tooltips.scss +0 -142
  114. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_top-bar.scss +0 -676
  115. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_type.scss +0 -523
  116. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_visibility.scss +0 -408
  117. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/installation-page.scss +0 -171
  118. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/normalize.scss +0 -425
  119. data/lib/fastlane/plugin/polidea/templates/installation_template.erb +0 -54
  120. data/lib/fastlane/plugin/polidea/templates/mailgun_template.erb +0 -1257
  121. 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("#{__dir__}/../templates/download.erb")
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] ? "cid:#{config[:app_icon]}" : "https://s3.eu-central-1.amazonaws.com/fota.polidea.com/mails/images/icon-placeholder.png",
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("#{__dir__}/../templates/installation_template.erb")
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
@@ -70,7 +70,7 @@ module Fastlane
70
70
  end
71
71
 
72
72
  def path_to_resources
73
- File.expand_path "#{__dir__}/../templates/images"
73
+ File.expand_path("templates/images", Polidea.root)
74
74
  end
75
75
  end
76
76
  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
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module Polidea
3
- VERSION = "2.1.1.pre"
3
+ VERSION = "3.0.0.pre.1"
4
4
  end
5
5
  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>