fastlane-plugin-polidea 2.2.0.pre.1 → 3.0.0.pre.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -13
  3. data/lib/fastlane/plugin/polidea.rb +4 -0
  4. data/lib/fastlane/plugin/polidea/actions/fota_s3.rb +36 -28
  5. data/lib/fastlane/plugin/polidea/actions/release_notes.rb +1 -1
  6. data/lib/fastlane/plugin/polidea/helper/page_generator.rb +17 -56
  7. data/lib/fastlane/plugin/polidea/helper/qr_generator.rb +1 -1
  8. data/lib/fastlane/plugin/polidea/version.rb +1 -1
  9. data/templates/install.erb +238 -0
  10. data/{lib/fastlane/plugin/polidea/templates/download.erb → templates/mail.erb} +20 -25
  11. metadata +4 -105
  12. data/lib/fastlane/plugin/polidea/actions/extract_app_icon.rb +0 -172
  13. data/lib/fastlane/plugin/polidea/actions/extract_app_name.rb +0 -100
  14. data/lib/fastlane/plugin/polidea/actions/extract_version.rb +0 -106
  15. data/lib/fastlane/plugin/polidea/actions/get_binary_size.rb +0 -57
  16. data/lib/fastlane/plugin/polidea/templates/images/cover-shuttle.jpg +0 -0
  17. data/lib/fastlane/plugin/polidea/templates/images/icon-placeholder.png +0 -0
  18. data/lib/fastlane/plugin/polidea/templates/images/polidea-logo.png +0 -0
  19. data/lib/fastlane/plugin/polidea/templates/images/social-behance.png +0 -0
  20. data/lib/fastlane/plugin/polidea/templates/images/social-dribbble.png +0 -0
  21. data/lib/fastlane/plugin/polidea/templates/images/social-facebook.png +0 -0
  22. data/lib/fastlane/plugin/polidea/templates/images/social-github.png +0 -0
  23. data/lib/fastlane/plugin/polidea/templates/images/social-instagram.png +0 -0
  24. data/lib/fastlane/plugin/polidea/templates/images/social-linkedin.png +0 -0
  25. data/lib/fastlane/plugin/polidea/templates/images/social-twitter.png +0 -0
  26. data/lib/fastlane/plugin/polidea/templates/installation-page/css/installation-page.css +0 -4895
  27. data/lib/fastlane/plugin/polidea/templates/installation-page/css/installation-page.css.map +0 -7
  28. data/lib/fastlane/plugin/polidea/templates/installation-page/img/bg.png +0 -0
  29. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg.jpg +0 -0
  30. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1024.jpg +0 -0
  31. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1280.jpg +0 -0
  32. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1360.jpg +0 -0
  33. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1440.jpg +0 -0
  34. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1680.jpg +0 -0
  35. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_768.jpg +0 -0
  36. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_ipad_1024.jpg +0 -0
  37. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_ipad_768.jpg +0 -0
  38. data/lib/fastlane/plugin/polidea/templates/installation-page/img/logo.svg +0 -32
  39. data/lib/fastlane/plugin/polidea/templates/installation-page/img/logo_square.svg +0 -12
  40. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation.min.js +0 -10
  41. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.abide.js +0 -294
  42. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.accordion.js +0 -65
  43. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.alert.js +0 -43
  44. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.clearing.js +0 -558
  45. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.dropdown.js +0 -313
  46. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.equalizer.js +0 -74
  47. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.interchange.js +0 -344
  48. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.joyride.js +0 -915
  49. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.js +0 -625
  50. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.magellan.js +0 -189
  51. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.offcanvas.js +0 -139
  52. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.orbit.js +0 -472
  53. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.reveal.js +0 -443
  54. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.slider.js +0 -231
  55. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.tab.js +0 -167
  56. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.tooltip.js +0 -298
  57. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.topbar.js +0 -436
  58. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/aes.js +0 -35
  59. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/enc-base64-min.js +0 -8
  60. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/fastclick.js +0 -9
  61. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/jquery.cookie.js +0 -8
  62. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/jquery.js +0 -26
  63. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/modernizr.js +0 -8
  64. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/pbkdf2.js +0 -19
  65. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/placeholder.js +0 -2
  66. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/fonts.scss +0 -64
  67. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation.scss +0 -45
  68. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/_functions.scss +0 -101
  69. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/_settings.scss +0 -1441
  70. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_accordion.scss +0 -156
  71. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_alert-boxes.scss +0 -126
  72. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_block-grid.scss +0 -132
  73. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_breadcrumbs.scss +0 -132
  74. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_button-groups.scss +0 -200
  75. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_buttons.scss +0 -252
  76. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_clearing.scss +0 -247
  77. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_dropdown-buttons.scss +0 -129
  78. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_dropdown.scss +0 -248
  79. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_flex-video.scss +0 -51
  80. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_forms.scss +0 -570
  81. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_global.scss +0 -447
  82. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_grid.scss +0 -275
  83. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_icon-bar.scss +0 -293
  84. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_inline-lists.scss +0 -57
  85. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_joyride.scss +0 -222
  86. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_keystrokes.scss +0 -61
  87. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_labels.scss +0 -105
  88. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_magellan.scss +0 -34
  89. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_offcanvas.scss +0 -510
  90. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_orbit.scss +0 -368
  91. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_pagination.scss +0 -162
  92. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_panels.scss +0 -93
  93. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_pricing-tables.scss +0 -150
  94. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_progress-bars.scss +0 -79
  95. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_range-slider.scss +0 -168
  96. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_reveal.scss +0 -220
  97. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_side-nav.scss +0 -116
  98. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_split-buttons.scss +0 -191
  99. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_sub-nav.scss +0 -125
  100. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_switches.scss +0 -226
  101. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_tables.scss +0 -135
  102. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_tabs.scss +0 -123
  103. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_thumbs.scss +0 -66
  104. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_toolbar.scss +0 -70
  105. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_tooltips.scss +0 -142
  106. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_top-bar.scss +0 -676
  107. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_type.scss +0 -523
  108. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_visibility.scss +0 -408
  109. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/installation-page.scss +0 -171
  110. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/normalize.scss +0 -425
  111. data/lib/fastlane/plugin/polidea/templates/installation_template.erb +0 -54
  112. data/lib/fastlane/plugin/polidea/templates/mailgun_template.erb +0 -1257
  113. data/lib/fastlane/plugin/polidea/templates/secure_installation_template.erb +0 -130
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a200dfe6c81fc0c43478b1092c96b60a4bb2d516128b8d6e3e82d244b0f0278
4
- data.tar.gz: 9bfa26033bfbe2bdae07e37c2fcd3271f2e0eb897c6a586b4d12430f7922d192
3
+ metadata.gz: 0e49b978d0f9ccc23f99bed241bf7c23c4a02a5742b8ef3497388268c267e245
4
+ data.tar.gz: 0b2a0731c0a81b86e32a37b46444f9d79f55758e86bb3b00e4c68f453dc2e83a
5
5
  SHA512:
6
- metadata.gz: 2e1c8608894077d23abd728f70c020af492b2a83d0d1202e9374815336946694bb1b6b75308219258c4d99337b6c84839012ddfa06b5e9832845c53c055939f8
7
- data.tar.gz: a15a41c923351da5092cd8c4bf1b8f32c537a159c3128317c569a87457b3e0c3c96bd778f757c0a756d798c58face121aa526e31eb6bcbef77e07b984a1d5117
6
+ metadata.gz: 8efd5143e60704460f492e8c55fea1130005d20f4f57a1c1019155eed99d43f9d5e33096e59234bca9d3226106f801cc488aa45ed0b122e9f108b95d70baeaad
7
+ data.tar.gz: 47028dd656853ddebf7dc589a8bcfbd69f7f49603a1f65a8eeef6bf697aae41388178709a801750d8920820392b2ee8697ef077c982cfb32a3149db84c3616ee
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # fastlane-plugin-polidea
2
2
 
3
- [![build status](https://gitlab.polidea.com/CICD/fastlane-plugin-polidea/badges/master/pipeline.svg)](https://gitlab.polidea.com/CICD/fastlane-plugin-polidea/pipelines)
3
+ [![build status](https://gitlab.polidea.com/Shuttle/fastlane-plugin-polidea/badges/master/pipeline.svg)](https://gitlab.polidea.com/Shuttle/fastlane-plugin-polidea/pipelines)
4
4
  [![Gem](https://img.shields.io/gem/v/fastlane-plugin-polidea.svg?style=flat)](http://rubygems.org/gems/fastlane-plugin-polidea)
5
5
 
6
6
 
@@ -15,14 +15,13 @@ fastlane add_plugin polidea
15
15
  ## Available actions
16
16
 
17
17
  Plugin contains following actions:
18
- - `extract_app_name`: Extracts application name from .apk/.ipa
19
- - `extract_app_icon`: Extracts largest icon from .ipa/.apk
20
- - `extract_version`: Extracts app version and build number from .ipa/.apk
21
- - `get_binary_size`: Measures binary size in bytes
22
- - `s3`: Custom version of s3 action with Polidea's installation page
18
+ - `extract_app_info`: Extracts application name, icon, version, binary size from .apk/.ipa
19
+ - `release_notes`: Extracts release notes from git tag message
20
+ - `fota_s3`: Custom version of s3 action with Polidea's installation page
23
21
  - `fota_mail`: Custom version of mailgun action with Polidea's mail template
22
+ - `shuttle`: Upload new app to Shuttle
24
23
 
25
- See more details [here](https://gitlab2.polidea.com/CI/fastlane-plugin-polidea/blob/master/docs/Actions.md).
24
+ See more details [here](./docs/Actions.md).
26
25
  To list all available actions run:
27
26
  ```bash
28
27
  fastlane actions
@@ -33,13 +32,10 @@ fastlane actions
33
32
  ```ruby
34
33
  lane :deploy do
35
34
  (some actions that produces .ipa/.apk)
36
- extract_app_name
37
- extract_app_icon
38
- extract_version
39
- get_binary_size
40
- s3
35
+ extract_app_info
36
+ fota_s3
41
37
  fota_mail(
42
- to: "piotr.dubiel@polidea.com"
38
+ to: "hey@polidea.com"
43
39
  )
44
40
  end
45
41
  ```
@@ -13,6 +13,10 @@ module Fastlane
13
13
  @session_id ||= SecureRandom.uuid
14
14
  @session ||= Analytics.new(@session_id)
15
15
  end
16
+
17
+ def self.root
18
+ File.expand_path('../../..', __dir__)
19
+ end
16
20
  end
17
21
  end
18
22
 
@@ -12,22 +12,12 @@ module Fastlane
12
12
  S3_DSYM_OUTPUT_PATH = :S3_DSYM_OUTPUT_PATH
13
13
  S3_PLIST_OUTPUT_PATH = :S3_PLIST_OUTPUT_PATH
14
14
  S3_APK_OUTPUT_PATH = :S3_APK_OUTPUT_PATH
15
+ S3_MAPPING_OUTPUT_PATH = :S3_MAPPING_OUTPUT_PATH
15
16
  S3_HTML_OUTPUT_PATH = :S3_HTML_OUTPUT_PATH
16
17
  S3_VERSION_OUTPUT_PATH = :S3_VERSION_OUTPUT_PATH
17
18
  S3_ICON_OUTPUT_PATH = :S3_ICON_OUTPUT_PATH
18
19
  end
19
20
 
20
- S3_ARGS_MAP = {
21
- ipa: '-f',
22
- dsym: '-d',
23
- access_key: '-a',
24
- secret_access_key: '-s',
25
- bucket: '-b',
26
- region: '-r',
27
- acl: '--acl',
28
- path: '-P'
29
- }
30
-
31
21
  class FotaS3Action < Action
32
22
  def self.run(config)
33
23
  Fastlane::Polidea.session.action_launched("fota_s3", config)
@@ -40,6 +30,7 @@ module Fastlane
40
30
  params[:apk] = config[:apk]
41
31
  params[:icon] = config[:icon]
42
32
  params[:dsym] = config[:dsym]
33
+ params[:mapping] = config[:mapping]
43
34
  params[:access_key] = config[:access_key]
44
35
  params[:secret_access_key] = config[:secret_access_key]
45
36
  params[:bucket] = config[:bucket]
@@ -52,7 +43,6 @@ module Fastlane
52
43
  params[:version_template_path] = config[:version_template_path]
53
44
  params[:version_file_name] = config[:version_file_name]
54
45
  params[:acl] = config[:acl]
55
- params[:installation_password] = config[:installation_password]
56
46
  params[:release_notes] = config[:release_notes]
57
47
  params[:treat_bucket_as_domain_name] = config[:treat_bucket_as_domain_name]
58
48
 
@@ -78,7 +68,6 @@ module Fastlane
78
68
  icon_file = params[:icon]
79
69
  dsym_file = params[:dsym]
80
70
  acl = params[:acl]
81
- installation_password = params[:installation_password]
82
71
  release_notes = params[:release_notes]
83
72
  treat_bucket_as_domain_name = params[:treat_bucket_as_domain_name]
84
73
 
@@ -121,9 +110,7 @@ module Fastlane
121
110
 
122
111
  dsym_url = self.upload_file(bucket, dsym_file_name, dsym_file_data, acl, treat_bucket_as_domain_name)
123
112
 
124
- # Setting action and environment variables
125
- Actions.lane_context[SharedValues::S3_DSYM_OUTPUT_PATH] = dsym_url
126
- ENV[SharedValues::S3_DSYM_OUTPUT_PATH.to_s] = dsym_url
113
+ dsym_file_data.close
127
114
  end
128
115
 
129
116
  if params[:upload_metadata] == false
@@ -169,7 +156,6 @@ module Fastlane
169
156
  # Creates html from template
170
157
  html_render = PageGenerator.installation_page({
171
158
  url: "itms-services://?action=download-manifest&url=#{URI.encode_www_form_component(plist_url)}",
172
- installation_password: installation_password,
173
159
  app_version: bundle_version,
174
160
  build_number: build_number,
175
161
  app_name: app_name,
@@ -224,6 +210,11 @@ module Fastlane
224
210
  ENV[SharedValues::S3_ICON_OUTPUT_PATH.to_s] = icon_url
225
211
  UI.success("Successfully uploaded icon file to '#{Actions.lane_context[SharedValues::S3_ICON_OUTPUT_PATH]}'")
226
212
  end
213
+ if dsym_url
214
+ Actions.lane_context[SharedValues::S3_DSYM_OUTPUT_PATH] = dsym_url
215
+ ENV[SharedValues::S3_DSYM_OUTPUT_PATH.to_s] = dsym_url
216
+ UI.success("Successfully uploaded dsym file to '#{Actions.lane_context[SharedValues::S3_DSYM_OUTPUT_PATH]}'")
217
+ end
227
218
  end
228
219
 
229
220
  def self.upload_android(params)
@@ -234,8 +225,8 @@ module Fastlane
234
225
  s3_bucket = params[:bucket]
235
226
  apk_file = params[:apk]
236
227
  icon_file = params[:icon]
228
+ mapping_file = params[:mapping]
237
229
  acl = params[:acl]
238
- installation_password = params[:installation_password]
239
230
  release_notes = params[:release_notes]
240
231
  treat_bucket_as_domain_name = params[:treat_bucket_as_domain_name]
241
232
 
@@ -266,9 +257,23 @@ module Fastlane
266
257
  Actions.lane_context[SharedValues::S3_APK_OUTPUT_PATH] = apk_url
267
258
  ENV[SharedValues::S3_APK_OUTPUT_PATH.to_s] = apk_url
268
259
 
260
+ if mapping_file
261
+ mapping_file_basename = File.basename(mapping_file)
262
+ mapping_file_name = "#{url_part}#{mapping_file_basename}"
263
+ mapping_file_data = File.open(mapping_file, 'rb')
264
+
265
+ mapping_url = self.upload_file(bucket, mapping_file_name, mapping_file_data, acl, treat_bucket_as_domain_name)
266
+
267
+ # Setting action and environment variables
268
+ Actions.lane_context[SharedValues::S3_MAPPING_OUTPUT_PATH] = mapping_url
269
+ ENV[SharedValues::S3_MAPPING_OUTPUT_PATH.to_s] = mapping_url
270
+
271
+ mapping_file_data.close
272
+ end
273
+
269
274
  #####################################
270
275
  #
271
- # html and plist building
276
+ # html building
272
277
  #
273
278
  #####################################
274
279
 
@@ -283,7 +288,6 @@ module Fastlane
283
288
  # Creates html from template
284
289
  html_render = PageGenerator.installation_page({
285
290
  url: apk_url,
286
- installation_password: installation_password,
287
291
  app_version: app_version,
288
292
  build_number: build_number,
289
293
  app_name: app_name,
@@ -306,6 +310,9 @@ module Fastlane
306
310
  ENV[SharedValues::S3_ICON_OUTPUT_PATH.to_s] = icon_url
307
311
  UI.success("Successfully uploaded icon file to '#{Actions.lane_context[SharedValues::S3_ICON_OUTPUT_PATH]}'")
308
312
  end
313
+ if mapping_url
314
+ UI.success("Successfully uploaded mapping file to '#{Actions.lane_context[SharedValues::S3_MAPPING_OUTPUT_PATH]}'")
315
+ end
309
316
  end
310
317
 
311
318
  def self.validate(params)
@@ -446,19 +453,24 @@ module Fastlane
446
453
  [
447
454
  FastlaneCore::ConfigItem.new(key: :ipa,
448
455
  env_name: "",
449
- description: ".ipa file for the build ",
456
+ description: ".ipa file for the build",
450
457
  optional: true,
451
458
  default_value: Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]),
452
459
  FastlaneCore::ConfigItem.new(key: :dsym,
453
460
  env_name: "",
454
- description: "zipped .dsym package for the build ",
461
+ description: "zipped .dsym package for the build",
455
462
  optional: true,
456
463
  default_value: Actions.lane_context[SharedValues::DSYM_OUTPUT_PATH]),
457
464
  FastlaneCore::ConfigItem.new(key: :apk,
458
465
  env_name: "",
459
- description: ".apk file for the build ",
466
+ description: ".apk file for the build",
460
467
  optional: true,
461
468
  default_value: Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]),
469
+ FastlaneCore::ConfigItem.new(key: :mapping,
470
+ env_name: "",
471
+ description: "The path to the mapping.txt file",
472
+ optional: true,
473
+ default_value: Actions.lane_context[SharedValues::GRADLE_MAPPING_TXT_OUTPUT_PATH]),
462
474
  FastlaneCore::ConfigItem.new(key: :icon,
463
475
  env_name: "",
464
476
  description: "app icon file to upload",
@@ -515,11 +527,6 @@ module Fastlane
515
527
  description: "Uploaded object permissions e.g public_read (default), private, public_read_write, authenticated_read ",
516
528
  optional: true,
517
529
  default_value: "public-read"),
518
- FastlaneCore::ConfigItem.new(key: :installation_password,
519
- env_name: "INSTALLATION_PASSWORD",
520
- description: "Password for installation page",
521
- optional: true,
522
- default_value: nil),
523
530
  FastlaneCore::ConfigItem.new(key: :release_notes,
524
531
  env_name: "S3_RELEASE_NOTES",
525
532
  description: "Release notes",
@@ -540,6 +547,7 @@ module Fastlane
540
547
  ['S3_DSYM_OUTPUT_PATH', 'Direct HTTP link to the uploaded dsym file'],
541
548
  ['S3_PLIST_OUTPUT_PATH', 'Direct HTTP link to the uploaded plist file'],
542
549
  ['S3_APK_OUTPUT_PATH', 'Direct HTTP link to the uploaded apk file'],
550
+ ['S3_MAPPING_OUTPUT_PATH', 'Direct HTTP link to the uploaded mapping.txt file'],
543
551
  ['S3_HTML_OUTPUT_PATH', 'Direct HTTP link to the uploaded HTML file'],
544
552
  ['S3_VERSION_OUTPUT_PATH', 'Direct HTTP link to the uploaded Version file'],
545
553
  ['S3_ICON_OUTPUT_PATH', 'Direct HTTP link to the uploaded icon file']
@@ -21,7 +21,7 @@ module Fastlane
21
21
  end
22
22
 
23
23
  def self.description
24
- "Extracts release notes from git tag messages"
24
+ "Extracts release notes from git tag message"
25
25
  end
26
26
 
27
27
  def self.output
@@ -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
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module Polidea
3
- VERSION = "2.2.0.pre.1"
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>