fastlane-plugin-polidea 2.2.0.pre.1 → 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 (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>