fastlane-plugin-polidea 2.2.0.pre → 3.0.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 (115) 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_mail.rb +13 -3
  5. data/lib/fastlane/plugin/polidea/actions/fota_s3.rb +36 -29
  6. data/lib/fastlane/plugin/polidea/actions/release_notes.rb +1 -1
  7. data/lib/fastlane/plugin/polidea/actions/release_notes_from_commits.rb +1 -1
  8. data/lib/fastlane/plugin/polidea/helper/page_generator.rb +28 -56
  9. data/lib/fastlane/plugin/polidea/helper/qr_generator.rb +7 -42
  10. data/lib/fastlane/plugin/polidea/version.rb +1 -1
  11. data/templates/install.erb +238 -0
  12. data/{lib/fastlane/plugin/polidea/templates/download.erb → templates/mail.erb} +18 -23
  13. metadata +10 -111
  14. data/lib/fastlane/plugin/polidea/actions/extract_app_icon.rb +0 -172
  15. data/lib/fastlane/plugin/polidea/actions/extract_app_name.rb +0 -100
  16. data/lib/fastlane/plugin/polidea/actions/extract_version.rb +0 -106
  17. data/lib/fastlane/plugin/polidea/actions/get_binary_size.rb +0 -57
  18. data/lib/fastlane/plugin/polidea/templates/images/cover-shuttle.jpg +0 -0
  19. data/lib/fastlane/plugin/polidea/templates/images/icon-placeholder.png +0 -0
  20. data/lib/fastlane/plugin/polidea/templates/images/polidea-logo.png +0 -0
  21. data/lib/fastlane/plugin/polidea/templates/images/social-behance.png +0 -0
  22. data/lib/fastlane/plugin/polidea/templates/images/social-dribbble.png +0 -0
  23. data/lib/fastlane/plugin/polidea/templates/images/social-facebook.png +0 -0
  24. data/lib/fastlane/plugin/polidea/templates/images/social-github.png +0 -0
  25. data/lib/fastlane/plugin/polidea/templates/images/social-instagram.png +0 -0
  26. data/lib/fastlane/plugin/polidea/templates/images/social-linkedin.png +0 -0
  27. data/lib/fastlane/plugin/polidea/templates/images/social-twitter.png +0 -0
  28. data/lib/fastlane/plugin/polidea/templates/installation-page/css/installation-page.css +0 -4895
  29. data/lib/fastlane/plugin/polidea/templates/installation-page/css/installation-page.css.map +0 -7
  30. data/lib/fastlane/plugin/polidea/templates/installation-page/img/bg.png +0 -0
  31. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg.jpg +0 -0
  32. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1024.jpg +0 -0
  33. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1280.jpg +0 -0
  34. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1360.jpg +0 -0
  35. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1440.jpg +0 -0
  36. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_1680.jpg +0 -0
  37. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_768.jpg +0 -0
  38. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_ipad_1024.jpg +0 -0
  39. data/lib/fastlane/plugin/polidea/templates/installation-page/img/jenkins_bg_ipad_768.jpg +0 -0
  40. data/lib/fastlane/plugin/polidea/templates/installation-page/img/logo.svg +0 -32
  41. data/lib/fastlane/plugin/polidea/templates/installation-page/img/logo_square.svg +0 -12
  42. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation.min.js +0 -10
  43. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.abide.js +0 -294
  44. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.accordion.js +0 -65
  45. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.alert.js +0 -43
  46. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.clearing.js +0 -558
  47. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.dropdown.js +0 -313
  48. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.equalizer.js +0 -74
  49. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.interchange.js +0 -344
  50. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.joyride.js +0 -915
  51. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.js +0 -625
  52. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.magellan.js +0 -189
  53. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.offcanvas.js +0 -139
  54. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.orbit.js +0 -472
  55. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.reveal.js +0 -443
  56. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.slider.js +0 -231
  57. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.tab.js +0 -167
  58. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.tooltip.js +0 -298
  59. data/lib/fastlane/plugin/polidea/templates/installation-page/js/foundation/foundation.topbar.js +0 -436
  60. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/aes.js +0 -35
  61. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/enc-base64-min.js +0 -8
  62. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/fastclick.js +0 -9
  63. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/jquery.cookie.js +0 -8
  64. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/jquery.js +0 -26
  65. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/modernizr.js +0 -8
  66. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/pbkdf2.js +0 -19
  67. data/lib/fastlane/plugin/polidea/templates/installation-page/js/vendor/placeholder.js +0 -2
  68. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/fonts.scss +0 -64
  69. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation.scss +0 -45
  70. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/_functions.scss +0 -101
  71. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/_settings.scss +0 -1441
  72. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_accordion.scss +0 -156
  73. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_alert-boxes.scss +0 -126
  74. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_block-grid.scss +0 -132
  75. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_breadcrumbs.scss +0 -132
  76. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_button-groups.scss +0 -200
  77. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_buttons.scss +0 -252
  78. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_clearing.scss +0 -247
  79. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_dropdown-buttons.scss +0 -129
  80. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_dropdown.scss +0 -248
  81. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_flex-video.scss +0 -51
  82. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_forms.scss +0 -570
  83. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_global.scss +0 -447
  84. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_grid.scss +0 -275
  85. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_icon-bar.scss +0 -293
  86. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_inline-lists.scss +0 -57
  87. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_joyride.scss +0 -222
  88. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_keystrokes.scss +0 -61
  89. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_labels.scss +0 -105
  90. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_magellan.scss +0 -34
  91. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_offcanvas.scss +0 -510
  92. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_orbit.scss +0 -368
  93. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_pagination.scss +0 -162
  94. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_panels.scss +0 -93
  95. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_pricing-tables.scss +0 -150
  96. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_progress-bars.scss +0 -79
  97. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_range-slider.scss +0 -168
  98. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_reveal.scss +0 -220
  99. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_side-nav.scss +0 -116
  100. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_split-buttons.scss +0 -191
  101. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_sub-nav.scss +0 -125
  102. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_switches.scss +0 -226
  103. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_tables.scss +0 -135
  104. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_tabs.scss +0 -123
  105. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_thumbs.scss +0 -66
  106. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_toolbar.scss +0 -70
  107. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_tooltips.scss +0 -142
  108. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_top-bar.scss +0 -676
  109. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_type.scss +0 -523
  110. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/foundation/components/_visibility.scss +0 -408
  111. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/installation-page.scss +0 -171
  112. data/lib/fastlane/plugin/polidea/templates/installation-page/sass/normalize.scss +0 -425
  113. data/lib/fastlane/plugin/polidea/templates/installation_template.erb +0 -54
  114. data/lib/fastlane/plugin/polidea/templates/mailgun_template.erb +0 -1257
  115. 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: 195dd2dd89017eb5f7bbd37fbed5081b8c2ea42434114e7d2b3930385f7b084b
4
- data.tar.gz: 3c58ca6693ead25acc9614bcfe4ae20af1f9326d2d69f801f46c4a52e6df7abf
3
+ metadata.gz: 2496e6471bff3fc0eddd90de1a381e635ac1682b867a6512b1c72b5581cb7d99
4
+ data.tar.gz: 6f8463f55cc6cc95938139fcbfb24bf830ba77ed59feb824a456f4db0c9efb62
5
5
  SHA512:
6
- metadata.gz: ce476129578f0e4302a1cc43373ff20e55f01a67dae595d95d13af8d07569d0534d8c961c17e12433e071a7bfe4b56cba8f961c6bf63946d9d128d8565def56a
7
- data.tar.gz: f3e9a3d619bbcdb8c7f1d9df4886f567ee3d02c88eeab03cb56bd889f3494a1848750540a74a0a861e6d97a339f5249bf68cbce6b1edf93bfe1d4fcc4c35c65d
6
+ metadata.gz: 61427c87fc09b20e799aabfdee82e77ccba2081b1d4cb371d3d97b12fdf0c098ad909b5cd1a6f0e4ab2724f74888b40f3f6a198aebc9babb2e01d6ff9373a108
7
+ data.tar.gz: 249482c6403cde339d2e8abcd1c182dee57d4e6e7a28aba34ede81339976c1f96393598b6b05dfadc98aa6c6426635c4283678f86a97d6ce65fa85cc4a70c4fe
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
 
@@ -1,4 +1,3 @@
1
- # rubocop:disable Metrics/MethodLength
2
1
  require 'redcarpet'
3
2
  require 'fastlane/erb_template_helper'
4
3
 
@@ -118,7 +117,7 @@ module Fastlane
118
117
 
119
118
  def self.qr_code(installation_link)
120
119
  qr_code_path = "/tmp/qr_code.png"
121
- QRGenerator.new(installation_link, false, ::ChunkyPNG::Color.rgb(21, 18, 126)).generate(qr_code_path)
120
+ QRGenerator.new(installation_link, ::ChunkyPNG::Color.rgb(21, 18, 126)).generate(qr_code_path)
122
121
  File.new(qr_code_path)
123
122
  end
124
123
 
@@ -130,7 +129,7 @@ module Fastlane
130
129
  https://api.mailgun.net/v3/#{sandbox_domain}/messages \
131
130
  -F from='#{options[:from]} <#{options[:postmaster]}>' \
132
131
  -F to='#{options[:to]}' \
133
- -F subject='#{options[:app_name]} #{options[:app_version]} (#{options[:build_number]}) for #{options[:platform]} is ready to install' \
132
+ -F subject='#{options[:app_name]} #{options[:app_version]} (#{options[:build_number]}) for #{human_platform(options[:platform])} is ready to install' \
134
133
  --form-string html=#{Shellwords.escape(body)} \ """ + options[:inline].map { |file| "-F inline=@#{file.path}" }.join(" "), print_command: false, print_command_output: false
135
134
 
136
135
  return body
@@ -171,6 +170,17 @@ module Fastlane
171
170
  )
172
171
  premailer.to_inline_css
173
172
  end
173
+
174
+ def self.human_platform(platform)
175
+ case platform
176
+ when :ios
177
+ "iOS"
178
+ when :android
179
+ "Android"
180
+ else
181
+ platform.to_s
182
+ end
183
+ end
174
184
  end
175
185
  end
176
186
  end
@@ -1,5 +1,4 @@
1
1
  # rubocop:disable Metrics/AbcSize
2
- # rubocop:disable Metrics/MethodLength
3
2
  # rubocop:disable Metrics/ClassLength
4
3
  require 'fastlane/erb_template_helper'
5
4
  require 'ostruct'
@@ -12,22 +11,12 @@ module Fastlane
12
11
  S3_DSYM_OUTPUT_PATH = :S3_DSYM_OUTPUT_PATH
13
12
  S3_PLIST_OUTPUT_PATH = :S3_PLIST_OUTPUT_PATH
14
13
  S3_APK_OUTPUT_PATH = :S3_APK_OUTPUT_PATH
14
+ S3_MAPPING_OUTPUT_PATH = :S3_MAPPING_OUTPUT_PATH
15
15
  S3_HTML_OUTPUT_PATH = :S3_HTML_OUTPUT_PATH
16
16
  S3_VERSION_OUTPUT_PATH = :S3_VERSION_OUTPUT_PATH
17
17
  S3_ICON_OUTPUT_PATH = :S3_ICON_OUTPUT_PATH
18
18
  end
19
19
 
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
20
  class FotaS3Action < Action
32
21
  def self.run(config)
33
22
  Fastlane::Polidea.session.action_launched("fota_s3", config)
@@ -40,6 +29,7 @@ module Fastlane
40
29
  params[:apk] = config[:apk]
41
30
  params[:icon] = config[:icon]
42
31
  params[:dsym] = config[:dsym]
32
+ params[:mapping] = config[:mapping]
43
33
  params[:access_key] = config[:access_key]
44
34
  params[:secret_access_key] = config[:secret_access_key]
45
35
  params[:bucket] = config[:bucket]
@@ -52,7 +42,6 @@ module Fastlane
52
42
  params[:version_template_path] = config[:version_template_path]
53
43
  params[:version_file_name] = config[:version_file_name]
54
44
  params[:acl] = config[:acl]
55
- params[:installation_password] = config[:installation_password]
56
45
  params[:release_notes] = config[:release_notes]
57
46
  params[:treat_bucket_as_domain_name] = config[:treat_bucket_as_domain_name]
58
47
 
@@ -78,7 +67,6 @@ module Fastlane
78
67
  icon_file = params[:icon]
79
68
  dsym_file = params[:dsym]
80
69
  acl = params[:acl]
81
- installation_password = params[:installation_password]
82
70
  release_notes = params[:release_notes]
83
71
  treat_bucket_as_domain_name = params[:treat_bucket_as_domain_name]
84
72
 
@@ -121,9 +109,7 @@ module Fastlane
121
109
 
122
110
  dsym_url = self.upload_file(bucket, dsym_file_name, dsym_file_data, acl, treat_bucket_as_domain_name)
123
111
 
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
112
+ dsym_file_data.close
127
113
  end
128
114
 
129
115
  if params[:upload_metadata] == false
@@ -169,7 +155,6 @@ module Fastlane
169
155
  # Creates html from template
170
156
  html_render = PageGenerator.installation_page({
171
157
  url: "itms-services://?action=download-manifest&url=#{URI.encode_www_form_component(plist_url)}",
172
- installation_password: installation_password,
173
158
  app_version: bundle_version,
174
159
  build_number: build_number,
175
160
  app_name: app_name,
@@ -224,6 +209,11 @@ module Fastlane
224
209
  ENV[SharedValues::S3_ICON_OUTPUT_PATH.to_s] = icon_url
225
210
  UI.success("Successfully uploaded icon file to '#{Actions.lane_context[SharedValues::S3_ICON_OUTPUT_PATH]}'")
226
211
  end
212
+ if dsym_url
213
+ Actions.lane_context[SharedValues::S3_DSYM_OUTPUT_PATH] = dsym_url
214
+ ENV[SharedValues::S3_DSYM_OUTPUT_PATH.to_s] = dsym_url
215
+ UI.success("Successfully uploaded dsym file to '#{Actions.lane_context[SharedValues::S3_DSYM_OUTPUT_PATH]}'")
216
+ end
227
217
  end
228
218
 
229
219
  def self.upload_android(params)
@@ -234,8 +224,8 @@ module Fastlane
234
224
  s3_bucket = params[:bucket]
235
225
  apk_file = params[:apk]
236
226
  icon_file = params[:icon]
227
+ mapping_file = params[:mapping]
237
228
  acl = params[:acl]
238
- installation_password = params[:installation_password]
239
229
  release_notes = params[:release_notes]
240
230
  treat_bucket_as_domain_name = params[:treat_bucket_as_domain_name]
241
231
 
@@ -266,9 +256,23 @@ module Fastlane
266
256
  Actions.lane_context[SharedValues::S3_APK_OUTPUT_PATH] = apk_url
267
257
  ENV[SharedValues::S3_APK_OUTPUT_PATH.to_s] = apk_url
268
258
 
259
+ if mapping_file
260
+ mapping_file_basename = File.basename(mapping_file)
261
+ mapping_file_name = "#{url_part}#{mapping_file_basename}"
262
+ mapping_file_data = File.open(mapping_file, 'rb')
263
+
264
+ mapping_url = self.upload_file(bucket, mapping_file_name, mapping_file_data, acl, treat_bucket_as_domain_name)
265
+
266
+ # Setting action and environment variables
267
+ Actions.lane_context[SharedValues::S3_MAPPING_OUTPUT_PATH] = mapping_url
268
+ ENV[SharedValues::S3_MAPPING_OUTPUT_PATH.to_s] = mapping_url
269
+
270
+ mapping_file_data.close
271
+ end
272
+
269
273
  #####################################
270
274
  #
271
- # html and plist building
275
+ # html building
272
276
  #
273
277
  #####################################
274
278
 
@@ -283,7 +287,6 @@ module Fastlane
283
287
  # Creates html from template
284
288
  html_render = PageGenerator.installation_page({
285
289
  url: apk_url,
286
- installation_password: installation_password,
287
290
  app_version: app_version,
288
291
  build_number: build_number,
289
292
  app_name: app_name,
@@ -306,6 +309,9 @@ module Fastlane
306
309
  ENV[SharedValues::S3_ICON_OUTPUT_PATH.to_s] = icon_url
307
310
  UI.success("Successfully uploaded icon file to '#{Actions.lane_context[SharedValues::S3_ICON_OUTPUT_PATH]}'")
308
311
  end
312
+ if mapping_url
313
+ UI.success("Successfully uploaded mapping file to '#{Actions.lane_context[SharedValues::S3_MAPPING_OUTPUT_PATH]}'")
314
+ end
309
315
  end
310
316
 
311
317
  def self.validate(params)
@@ -446,19 +452,24 @@ module Fastlane
446
452
  [
447
453
  FastlaneCore::ConfigItem.new(key: :ipa,
448
454
  env_name: "",
449
- description: ".ipa file for the build ",
455
+ description: ".ipa file for the build",
450
456
  optional: true,
451
457
  default_value: Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]),
452
458
  FastlaneCore::ConfigItem.new(key: :dsym,
453
459
  env_name: "",
454
- description: "zipped .dsym package for the build ",
460
+ description: "zipped .dsym package for the build",
455
461
  optional: true,
456
462
  default_value: Actions.lane_context[SharedValues::DSYM_OUTPUT_PATH]),
457
463
  FastlaneCore::ConfigItem.new(key: :apk,
458
464
  env_name: "",
459
- description: ".apk file for the build ",
465
+ description: ".apk file for the build",
460
466
  optional: true,
461
467
  default_value: Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]),
468
+ FastlaneCore::ConfigItem.new(key: :mapping,
469
+ env_name: "",
470
+ description: "The path to the mapping.txt file",
471
+ optional: true,
472
+ default_value: Actions.lane_context[SharedValues::GRADLE_MAPPING_TXT_OUTPUT_PATH]),
462
473
  FastlaneCore::ConfigItem.new(key: :icon,
463
474
  env_name: "",
464
475
  description: "app icon file to upload",
@@ -515,11 +526,6 @@ module Fastlane
515
526
  description: "Uploaded object permissions e.g public_read (default), private, public_read_write, authenticated_read ",
516
527
  optional: true,
517
528
  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
529
  FastlaneCore::ConfigItem.new(key: :release_notes,
524
530
  env_name: "S3_RELEASE_NOTES",
525
531
  description: "Release notes",
@@ -540,6 +546,7 @@ module Fastlane
540
546
  ['S3_DSYM_OUTPUT_PATH', 'Direct HTTP link to the uploaded dsym file'],
541
547
  ['S3_PLIST_OUTPUT_PATH', 'Direct HTTP link to the uploaded plist file'],
542
548
  ['S3_APK_OUTPUT_PATH', 'Direct HTTP link to the uploaded apk file'],
549
+ ['S3_MAPPING_OUTPUT_PATH', 'Direct HTTP link to the uploaded mapping.txt file'],
543
550
  ['S3_HTML_OUTPUT_PATH', 'Direct HTTP link to the uploaded HTML file'],
544
551
  ['S3_VERSION_OUTPUT_PATH', 'Direct HTTP link to the uploaded Version file'],
545
552
  ['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
@@ -29,7 +29,7 @@ module Fastlane
29
29
  def self.available_options
30
30
  [
31
31
  FastlaneCore::ConfigItem.new(key: :current_version,
32
- env_name: "VERSION_NAME",
32
+ env_name: "",
33
33
  description: "Git ref of current version",
34
34
  optional: true,
35
35
  default_value: 'HEAD')
@@ -1,18 +1,20 @@
1
- require 'openssl'
2
- require 'base64'
3
1
  require 'json'
4
2
 
5
3
  module Fastlane
6
4
  module PageGenerator
5
+ PLACEHOLDER_URL = "https://s3.eu-central-1.amazonaws.com/fota.polidea.com/mails/images/icon-placeholder.jpg"
6
+
7
7
  def self.mail(config)
8
8
  UI.message("Generating e-mail...")
9
9
  eth = Fastlane::ErbTemplateHelper
10
- html_template = eth.load_from_path("#{__dir__}/../templates/download.erb")
10
+ html_template = eth.load_from_path(
11
+ File.expand_path("templates/mail.erb", Polidea.root)
12
+ )
11
13
  eth.render(html_template, {
12
14
  author: config[:author],
13
15
  last_commit: config[:last_commit],
14
16
  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",
17
+ app_icon: mail_app_icon_or_placholder(config[:app_icon]),
16
18
  app_name: config[:app_name],
17
19
  app_version: config[:app_version],
18
20
  build_number: config[:build_number],
@@ -26,68 +28,20 @@ module Fastlane
26
28
  end
27
29
 
28
30
  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
31
  UI.message("Generating public installation page...")
57
32
  eth = Fastlane::ErbTemplateHelper
58
- html_template = eth.load_from_path("#{__dir__}/../templates/installation_template.erb")
33
+ html_template = eth.load_from_path(
34
+ File.expand_path("templates/install.erb", Polidea.root)
35
+ )
59
36
  eth.render(html_template, {
60
37
  url: config[:url],
61
38
  app_version: config[:app_version],
62
39
  build_number: config[:build_number],
63
40
  app_name: config[:app_name],
64
- app_icon: config[:app_icon],
65
- platform: config[:platform],
41
+ app_icon: app_icon_or_placholder(config[:app_icon]),
66
42
  release_notes: parse_release_notes(config[:release_notes])
67
43
  })
68
44
  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
45
 
92
46
  def self.parse_release_notes(release_notes)
93
47
  renderer = Redcarpet::Render::HTML.new({
@@ -103,5 +57,23 @@ module Fastlane
103
57
  markdown.render(release_notes || "No release notes.")
104
58
  end
105
59
  private_class_method :parse_release_notes
60
+
61
+ def self.mail_app_icon_or_placholder(app_icon)
62
+ if app_icon.nil?
63
+ PLACEHOLDER_URL
64
+ else
65
+ "cid:#{app_icon}"
66
+ end
67
+ end
68
+ private_class_method :mail_app_icon_or_placholder
69
+
70
+ def self.app_icon_or_placholder(app_icon)
71
+ if app_icon.nil?
72
+ PLACEHOLDER_URL
73
+ else
74
+ app_icon
75
+ end
76
+ end
77
+ private_class_method :app_icon_or_placholder
106
78
  end
107
79
  end
@@ -2,34 +2,22 @@ require 'rqrcode_png'
2
2
 
3
3
  module Fastlane
4
4
  class QRGenerator
5
- def initialize(data, auto_awesome = false, dark_color = ::ChunkyPNG::Color::BLACK)
5
+ def initialize(data, dark_color = ::ChunkyPNG::Color::BLACK)
6
6
  @qr_code = RQRCode::QRCode.new(data, size: 10, level: :m)
7
- @auto_awesome = auto_awesome
8
7
  @dark_color = dark_color
8
+ @light_color = ::ChunkyPNG::Color::WHITE
9
9
 
10
10
  @margin = 20
11
- @image = ::ChunkyPNG::Image.new(2 * @margin + @qr_code.qrcode.module_count * 5, 2 * @margin + @qr_code.qrcode.module_count * 5, ::ChunkyPNG::Color::WHITE)
12
-
13
- @logo = ::ChunkyPNG::Image.from_file("#{path_to_resources}/polidea-logo.png")
14
- @logo = @logo.resize(2 * @margin + @qr_code.qrcode.module_count * 5, 2 * @margin + @qr_code.qrcode.module_count * 5)
11
+ @image = ::ChunkyPNG::Image.new(2 * @margin + @qr_code.qrcode.module_count * 5, 2 * @margin + @qr_code.qrcode.module_count * 5, @light_color)
15
12
  end
16
13
 
17
14
  def generate(path)
18
- white = ::ChunkyPNG::Color::WHITE
19
- blue = ::ChunkyPNG::Color.rgb(26, 159, 217)
20
-
21
- if !@auto_awesome
22
- dark_color = @dark_color
23
- else
24
- dark_color = blue
25
- end
26
-
27
15
  @qr_code.modules.each_index do |row|
28
16
  @qr_code.modules[row].each_index do |column|
29
17
  if @qr_code.modules[row][column]
30
- print_symbol(dark_color, column, row, (column < 8 && row < 8) || (column < 8 && row >= @qr_code.qrcode.module_count - 8) || (column >= @qr_code.qrcode.module_count - 8 && row < 8))
18
+ print_symbol(@dark_color, column, row, (column < 8 && row < 8) || (column < 8 && row >= @qr_code.qrcode.module_count - 8) || (column >= @qr_code.qrcode.module_count - 8 && row < 8))
31
19
  else
32
- print_symbol(white, column, row, (column < 8 && row < 8) || (column < 8 && row >= @qr_code.qrcode.module_count - 8) || (column >= @qr_code.qrcode.module_count - 8 && row < 8))
20
+ print_symbol(@light_color, column, row, (column < 8 && row < 8) || (column < 8 && row >= @qr_code.qrcode.module_count - 8) || (column >= @qr_code.qrcode.module_count - 8 && row < 8))
33
21
  end
34
22
  end
35
23
  end
@@ -40,37 +28,14 @@ module Fastlane
40
28
 
41
29
  def print_symbol(color, column, row, interpolate)
42
30
  (0..4).each do |i|
43
- if i < 4 && i > 0
44
- print_symbol_row(interpolated_color(color, 5 * column + i, 5 * row, true), 5 * column + i, row, interpolate)
45
- else
46
- print_symbol_row(interpolated_color(color, 5 * column + i, 5 * row, interpolate), 5 * column + i, row, interpolate)
47
- end
31
+ print_symbol_row(color, 5 * column + i, row, interpolate)
48
32
  end
49
33
  end
50
34
 
51
- def interpolated_color(color, column, row, interpolate)
52
- if !@auto_awesome
53
- interpolated_color = color
54
- elsif interpolate
55
- interpolated_color = ::ChunkyPNG::Color.interpolate_quick(color, @logo[@margin + column, @margin + row], 255)
56
- else
57
- interpolated_color = ::ChunkyPNG::Color.interpolate_quick(color, @logo[@margin + column, @margin + row], 40)
58
- end
59
- interpolated_color
60
- end
61
-
62
35
  def print_symbol_row(color, column, row, interpolate)
63
36
  (0..4).each do |i|
64
- if i < 4 && i > 0
65
- @image[@margin + column, @margin + 5 * row + i] = interpolated_color(color, column, 5 * row + i, true)
66
- else
67
- @image[@margin + column, @margin + 5 * row + i] = interpolated_color(color, column, 5 * row + i, interpolate)
68
- end
37
+ @image[@margin + column, @margin + 5 * row + i] = color
69
38
  end
70
39
  end
71
-
72
- def path_to_resources
73
- File.expand_path "#{__dir__}/../templates/images"
74
- end
75
40
  end
76
41
  end