fastlane-plugin-polidea 0.4.5 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bc2048df5ee48ec86a710b352eaf9105dd95da36
4
- data.tar.gz: e452a24263ac4839320479f016b84e2fb1b0e19f
3
+ metadata.gz: 29cfc7e9d826bfb2c77feee47a09e2dc935db2cc
4
+ data.tar.gz: ba60a5da2d99437007c682d508a034c7708ea3eb
5
5
  SHA512:
6
- metadata.gz: 8a8d1f497515071bac4e441c1355d49322c64293e280ad9962086f4ffcd5a92671521d71513b67624e58cffb4f2674e7b2eb79b4d726daa23cf7f5f6ed9bad41
7
- data.tar.gz: b1de0ee2b7724f06e08c2c52f5cabc70e44250d68930a0a1b268e317c423056a81e053f921f90fda54ce129ce7d64e1f8fcb36ec9960f3637abdca47a71bb2b3
6
+ metadata.gz: 9e38c360adbd5b9062619f399b90153ab04ebc063e2d79c8319ee82693941ed8464b136515c0163ad49efb8d7848b8fdc4e9333ce76f9bc5916ecab10cd21c7c
7
+ data.tar.gz: 96e19007b8dcf91555fb62d5730084358fc59338eac3bfd85e776fc9848dab0e629a773ba9ada2cedf2da31694f486ef34058f31ec9e7c26d79341b731e3e83a
@@ -123,7 +123,7 @@ module Fastlane
123
123
  end
124
124
 
125
125
  def self.description
126
- "Extracts largest icon from .ipa/.apk"
126
+ "Extracts largest icon from .ipa/.apk, use `extract_app_info` instead"
127
127
  end
128
128
 
129
129
  def self.available_options
@@ -159,6 +159,10 @@ module Fastlane
159
159
  def self.is_supported?(platform)
160
160
  [:ios, :android].include? platform
161
161
  end
162
+
163
+ def self.category
164
+ :deprecated
165
+ end
162
166
  end
163
167
  end
164
168
  end
@@ -0,0 +1,217 @@
1
+ require 'ruby_apk'
2
+
3
+ Zip.warn_invalid_date = false
4
+
5
+ module Fastlane
6
+ module Actions
7
+ module SharedValues
8
+ APP_NAME = :APP_NAME
9
+ APP_IDENTIFIER = :APP_IDENTIFIER
10
+ ICON_OUTPUT_PATH = :ICON_OUTPUT_PATH
11
+ BINARY_SIZE = :BINARY_SIZE
12
+ APP_VERSION = :APP_VERSION
13
+ BUILD_NUMBER = :BUILD_NUMBER
14
+ end
15
+
16
+ class ExtractAppInfoAction < Action
17
+ def self.run(config)
18
+ platform = Actions.lane_context[Actions::SharedValues::PLATFORM_NAME].to_sym
19
+
20
+ icon_output_path = config[:icon_output_path]
21
+
22
+ validate(platform, config)
23
+
24
+ app_name, app_identifier = extract_app_name(platform, config)
25
+ app_icon = extract_icon(platform, config) if icon_output_path
26
+ binary_size = extract_binary_size(platform, config)
27
+ app_version, build_number = extract_version(platform, config)
28
+
29
+ publish_shared_values(
30
+ SharedValues::APP_NAME => app_name,
31
+ SharedValues::APP_IDENTIFIER => app_identifier,
32
+ SharedValues::ICON_OUTPUT_PATH => app_icon.nil? ? nil : icon_output_path,
33
+ SharedValues::BINARY_SIZE => binary_size,
34
+ SharedValues::APP_VERSION => app_version,
35
+ SharedValues::BUILD_NUMBER => build_number
36
+ )
37
+ end
38
+
39
+ def self.validate(platform, config)
40
+ case platform
41
+ when :ios
42
+ UI.user_error!("No IPA file path given, pass using `ipa: 'ipa path'`") unless config[:ipa].to_s.length > 0
43
+ when :android
44
+ UI.user_error!("No APK file path given, pass using `apk: 'apk path'`") unless config[:apk].to_s.length > 0
45
+ end
46
+ end
47
+
48
+ def self.publish_shared_values(config)
49
+ config.each do |key, value|
50
+ if value
51
+ Actions.lane_context[key] = value
52
+ ENV[key.to_s] = value.to_s
53
+ else
54
+ Actions.lane_context[key] = nil
55
+ UI.important("Value for #{key} not found.")
56
+ end
57
+ end
58
+
59
+ FastlaneCore::PrintTable.print_values(config: config,
60
+ hide_keys: [],
61
+ title: "Summary for extract_app_info")
62
+ end
63
+
64
+ def self.extract_app_name(platform, config)
65
+ case platform
66
+ when :ios
67
+ info = FastlaneCore::IpaFileAnalyser.fetch_info_plist_file(config[:ipa])
68
+ return info['CFBundleName'], info['CFBundleIdentifier']
69
+ when :android
70
+ apk = Android::Apk.new(config[:apk])
71
+ return apk.manifest.label, apk.manifest.package_name
72
+ end
73
+ end
74
+
75
+ def self.extract_icon(platform, config)
76
+ case platform
77
+ when :ios
78
+ extract_icon_from_ipa(config[:ipa], config[:icon_output_path])
79
+ when :android
80
+ extract_icon_from_apk(config[:apk], config[:icon_output_path])
81
+ end
82
+ end
83
+
84
+ def self.extract_binary_size(platform, config)
85
+ case platform
86
+ when :ios
87
+ File.open(config[:ipa]).size
88
+ when :android
89
+ File.open(config[:apk]).size
90
+ end
91
+ end
92
+
93
+ def self.extract_version(platform, config)
94
+ case platform
95
+ when :ios
96
+ info = FastlaneCore::IpaFileAnalyser.fetch_info_plist_file(config[:ipa])
97
+ return info['CFBundleShortVersionString'], info['CFBundleVersion'].to_i
98
+ when :android
99
+ apk = Android::Apk.new(config[:apk])
100
+ return apk.manifest.version_name, apk.manifest.version_code
101
+ end
102
+ end
103
+
104
+ def self.extract_icon_from_apk(apk_file, icon_output_path)
105
+ apk = Android::Apk.new(apk_file)
106
+ icon = largest_android_icon(apk)
107
+ return unless icon
108
+ icon_file = File.open(icon_output_path, 'wb')
109
+ icon_file.write icon[:data]
110
+ icon_file
111
+ end
112
+
113
+ def self.largest_android_icon(apk)
114
+ icons = apk.icon
115
+ selected_icon = icons.max_by do |name, _|
116
+ case name
117
+ when /x*hdpi/
118
+ name.count "x"
119
+ when /mdpi/
120
+ -1
121
+ when %r{\/drawable\/}
122
+ -2
123
+ else
124
+ -3
125
+ end
126
+ end
127
+ { name: selected_icon[0], data: selected_icon[1] } if selected_icon
128
+ rescue
129
+ nil
130
+ end
131
+
132
+ def self.extract_icon_from_ipa(ipa_file, icon_output_path)
133
+ info = FastlaneCore::IpaFileAnalyser.fetch_info_plist_file(ipa_file)
134
+ icon_files = ipa_icon_files(info)
135
+ return if icon_files.empty?
136
+ icon_file_name = icon_files.first
137
+ Zip::File.open(ipa_file) do |zipfile|
138
+ icon_file = self.largest_ios_icon(zipfile.glob("**/Payload/**/#{icon_file_name}*.png"))
139
+ return nil unless icon_file
140
+ tmp_path = "/tmp/app_icon.png"
141
+ File.write(tmp_path, zipfile.read(icon_file))
142
+ Actions.sh("xcrun -sdk iphoneos pngcrush -revert-iphone-optimizations #{tmp_path} #{icon_output_path}")
143
+ File.delete(tmp_path)
144
+ end
145
+ end
146
+
147
+ def self.ipa_icon_files(info)
148
+ icons = info['CFBundleIcons']
149
+ unless icons.nil?
150
+ primary_icon = icons['CFBundlePrimaryIcon']
151
+ unless primary_icon.nil?
152
+ return primary_icon['CFBundleIconFiles']
153
+ end
154
+ end
155
+ []
156
+ end
157
+
158
+ def self.largest_ios_icon(icons)
159
+ icons.max_by do |file, _|
160
+ case file.name
161
+ when /@(\d+)x/
162
+ $1.to_i
163
+ else
164
+ 1
165
+ end
166
+ end
167
+ end
168
+
169
+ def self.description
170
+ "Extract information from .ipa/.apk"
171
+ end
172
+
173
+ def self.available_options
174
+ [
175
+ FastlaneCore::ConfigItem.new(key: :ipa,
176
+ env_name: "",
177
+ description: ".ipa file to extract icon",
178
+ optional: true,
179
+ default_value: Actions.lane_context[SharedValues::IPA_OUTPUT_PATH]),
180
+ FastlaneCore::ConfigItem.new(key: :apk,
181
+ env_name: "",
182
+ description: ".apk file to extract icon",
183
+ optional: true,
184
+ default_value: Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH]),
185
+ FastlaneCore::ConfigItem.new(key: :icon_output_path,
186
+ env_name: "",
187
+ description: "icon output path",
188
+ optional: true,
189
+ default_value: "./app_icon.png")
190
+ ]
191
+ end
192
+
193
+ def self.output
194
+ [
195
+ ['APP_NAME', 'App name extracted from .ipa/.apk'],
196
+ ['APP_IDENTIFIER', 'Bundle id or package name extracted from .ipa/.apk'],
197
+ ['ICON_OUTPUT_PATH', 'Path to app icon extracted from .ipa/.apk'],
198
+ ['BINARY_SIZE', 'Size of .ipa/.apk in bytes'],
199
+ ['APP_VERSION', 'App version extracted from .ipa/.apk'],
200
+ ['BUILD_NUMBER', 'Build number extracted from .ipa/.apk']
201
+ ]
202
+ end
203
+
204
+ def self.author
205
+ "Piotrek Dubiel"
206
+ end
207
+
208
+ def self.is_supported?(platform)
209
+ [:ios, :android].include? platform
210
+ end
211
+
212
+ def self.category
213
+ :project
214
+ end
215
+ end
216
+ end
217
+ end
@@ -57,7 +57,7 @@ module Fastlane
57
57
  end
58
58
 
59
59
  def self.description
60
- "Extracts application name from .apk/.ipa"
60
+ "Extracts application name from .apk/.ipa, use `extract_app_info` instead"
61
61
  end
62
62
 
63
63
  def self.available_options
@@ -88,6 +88,10 @@ module Fastlane
88
88
  def self.is_supported?(platform)
89
89
  [:ios, :android].include? platform
90
90
  end
91
+
92
+ def self.category
93
+ :deprecated
94
+ end
91
95
  end
92
96
  end
93
97
  end
@@ -61,7 +61,7 @@ module Fastlane
61
61
  end
62
62
 
63
63
  def self.description
64
- "Extracts application version and build number from .ipa/.apk"
64
+ "Extracts application version and build number from .ipa/.apk, use `extract_app_info` instead"
65
65
  end
66
66
 
67
67
  def self.available_options
@@ -93,6 +93,10 @@ module Fastlane
93
93
  def self.is_supported?(platform)
94
94
  [:ios, :android].include? platform
95
95
  end
96
+
97
+ def self.category
98
+ :deprecated
99
+ end
96
100
  end
97
101
  end
98
102
  end
@@ -22,7 +22,7 @@ module Fastlane
22
22
  end
23
23
 
24
24
  def self.description
25
- "Measures binary size in bytes"
25
+ "Measures binary size in bytes, use `extract_app_info` instead"
26
26
  end
27
27
 
28
28
  def self.available_options
@@ -343,7 +343,7 @@ module Fastlane
343
343
  end
344
344
 
345
345
  # Return public url
346
- obj.public_url.to_s
346
+ shorten_url(obj.public_url.to_s)
347
347
  end
348
348
 
349
349
  def self.upload_directory(bucket, directory_name, directory_path, acl)
@@ -423,6 +423,11 @@ module Fastlane
423
423
  self.upload_file(bucket, icon_file_name, icon_file, acl)
424
424
  end
425
425
 
426
+ def self.shorten_url(url)
427
+ uri = URI.parse(url)
428
+ uri.scheme + ':/' + uri.path
429
+ end
430
+
426
431
  def self.description
427
432
  "Generates a plist file and uploads all to AWS S3"
428
433
  end
@@ -0,0 +1,216 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+ require 'json'
4
+
5
+ module Fastlane
6
+ module Actions
7
+ class ShuttleAction < Action
8
+ def self.run(params)
9
+ platform = Actions.lane_context[Actions::SharedValues::PLATFORM_NAME].to_sym
10
+ options = {
11
+ api_token: params[:api_token],
12
+ plist_url: params[:plist_url],
13
+ prefix_schema: params[:prefix_schema],
14
+ apk_url: params[:apk_url],
15
+ app_identifier: params[:app_identifier],
16
+ app_version: params[:app_version],
17
+ build_number: params[:build_number],
18
+ binary_size: params[:binary_size],
19
+ release_notes: params[:release_notes],
20
+ releaser: params[:releaser]
21
+ }
22
+ validate(platform, options)
23
+ config = get_config(platform, options)
24
+ notify(platform, config)
25
+
26
+ UI.success("Successfully uploaded to #{params[:app_identifier]} #{params[:app_version]}.#{params[:build_number]} to Shuttle")
27
+ end
28
+
29
+ #####################################################
30
+ # @!group Documentation
31
+ #####################################################
32
+
33
+ def self.description
34
+ "Shuttle upload action"
35
+ end
36
+
37
+ def self.details
38
+ "Notify Shuttle about new app version"
39
+ end
40
+
41
+ def self.author
42
+ ["Piotrek Dubiel"]
43
+ end
44
+
45
+ def self.available_options
46
+ [
47
+ FastlaneCore::ConfigItem.new(key: :api_token,
48
+ env_name: "SHUTTLE_API_TOKEN",
49
+ description: "API Token for Shuttle",
50
+ verify_block: proc do |api_token|
51
+ UI.user_error!("No API token for Shuttle given, pass using `api_token: 'token'`") unless api_token and !api_token.empty?
52
+ end),
53
+ FastlaneCore::ConfigItem.new(key: :plist_url,
54
+ env_name: "SHUTTLE_PLIST_URL",
55
+ description: "Url to uploaded plist",
56
+ default_value: Actions.lane_context[SharedValues::S3_PLIST_OUTPUT_PATH],
57
+ optional: true),
58
+ FastlaneCore::ConfigItem.new(key: :prefix_schema,
59
+ env_name: "SHUTTLE_PREFIX_SCHEMA",
60
+ description: "Prefix schema in uploaded app",
61
+ default_value: Actions.lane_context[SharedValues::PREFIX_SCHEMA],
62
+ optional: true),
63
+ FastlaneCore::ConfigItem.new(key: :apk_url,
64
+ env_name: "SHUTTLE_APK_URL",
65
+ description: "Url to uploaded apk",
66
+ default_value: Actions.lane_context[SharedValues::S3_APK_OUTPUT_PATH],
67
+ optional: true),
68
+ FastlaneCore::ConfigItem.new(key: :app_identifier,
69
+ description: "App identifier, either bundle id or package name",
70
+ type: String,
71
+ default_value: Actions.lane_context[SharedValues::APP_IDENTIFIER]),
72
+ FastlaneCore::ConfigItem.new(key: :app_version,
73
+ description: "App version, eg. '1.0.0''",
74
+ type: String,
75
+ default_value: Actions.lane_context[SharedValues::APP_VERSION]),
76
+ FastlaneCore::ConfigItem.new(key: :build_number,
77
+ description: "Build number, eg. 1337",
78
+ is_string: false,
79
+ default_value: Actions.lane_context[SharedValues::BUILD_NUMBER],
80
+ verify_block: proc do |build_number|
81
+ UI.user_error!("No value found for 'build_number'") unless build_number and build_number.kind_of? Integer
82
+ end),
83
+ FastlaneCore::ConfigItem.new(key: :binary_size,
84
+ description: ".ipa/.apk binary size in bytes",
85
+ is_string: false,
86
+ default_value: Actions.lane_context[SharedValues::BINARY_SIZE],
87
+ verify_block: proc do |binary_size|
88
+ UI.user_error!("No value found for 'binary_size'") unless binary_size and binary_size.kind_of? Integer
89
+ end),
90
+ FastlaneCore::ConfigItem.new(key: :release_notes,
91
+ description: "Release notes to be attached to uploaded version",
92
+ type: String,
93
+ optional: true,
94
+ default_value: Actions.lane_context[SharedValues::RELEASE_NOTES]),
95
+ FastlaneCore::ConfigItem.new(key: :releaser,
96
+ description: "Releaser email",
97
+ type: String,
98
+ optional: true)
99
+ ]
100
+ end
101
+
102
+ def self.is_supported?(platform)
103
+ [:ios, :android].include? platform
104
+ end
105
+
106
+ def self.validate(platform, params)
107
+ case platform
108
+ when :android
109
+ apk_url = params[:apk_url]
110
+ UI.user_error!("No apk url given, pass using `apk_url: 'url'` or make sure s3 action succeded and exposed S3_APK_OUTPUT_PATH shared value") unless apk_url and !apk_url.empty?
111
+ when :ios
112
+ plist_url = params[:plist_url]
113
+ UI.user_error!("No plist url given, pass using `plist_url: 'url'` or make sure s3 action succeded and exposed S3_PLIST_OUTPUT_PATH shared value") unless plist_url and !plist_url.empty?
114
+ url_scheme = params[:prefix_schema]
115
+ UI.user_error!("No prefix scheme given. Make sure `add_prefix_schema` action succeded before build action") if url_scheme.nil?
116
+ end
117
+ end
118
+
119
+ def self.get_config(platform, params)
120
+ api_token = params[:api_token]
121
+ app_identifier = params[:app_identifier]
122
+ app_version = params[:app_version]
123
+ build_number = params[:build_number]
124
+ binary_size = params[:binary_size]
125
+ release_notes = params[:release_notes]
126
+ releaser = params[:releaser] || commit_author
127
+
128
+ case platform
129
+ when :ios
130
+ href = itms_href(params[:plist_url])
131
+ prefix_schema = params[:prefix_schema]
132
+ when :android
133
+ href = params[:apk_url]
134
+ end
135
+
136
+ {
137
+ api_token: api_token,
138
+ app_identifier: app_identifier,
139
+ app_version: app_version,
140
+ build_number: build_number,
141
+ href: href,
142
+ release_notes: release_notes,
143
+ releaser: releaser,
144
+ binary_size: binary_size,
145
+ prefix_schema: prefix_schema
146
+ }
147
+ end
148
+
149
+ def self.notify(platform, params)
150
+ uri = URI.parse(url(platform, params[:app_identifier]))
151
+
152
+ build = {
153
+ href: params[:href],
154
+ version: params[:app_version],
155
+ releaseNotes: params[:release_notes],
156
+ bytes: params[:binary_size],
157
+ releaserEmail: params[:releaser]
158
+ }
159
+
160
+ build[:prefixSchema] = params[:prefix_schema] if platform == :ios
161
+ build[:versionCode] = params[:build_number] if platform == :android
162
+
163
+ make_request(uri, create_request(uri, params[:api_token], {
164
+ build: build
165
+ }))
166
+ end
167
+ private_class_method :notify
168
+
169
+ def self.url(platform, app_identifier)
170
+ "#{base_url}/cd/apps/#{platform}/#{app_identifier}/builds"
171
+ end
172
+ private_class_method :url
173
+
174
+ def self.base_url
175
+ "https://store2.polidea.com"
176
+ end
177
+ private_class_method :base_url
178
+
179
+ def self.create_request(uri, access_token, params)
180
+ req = Net::HTTP::Post.new(uri.request_uri)
181
+ req['Content-Type'] = 'application/json'
182
+ req['Access-Token'] = access_token
183
+ req.body = JSON.generate(params)
184
+ req
185
+ end
186
+
187
+ def self.itms_href(plist_url)
188
+ "itms-services://?action=download-manifest&url=#{URI.encode_www_form_component(plist_url)}"
189
+ end
190
+ private_class_method :itms_href
191
+
192
+ def self.commit_author
193
+ sh("git --no-pager show -s --format='%ae'", print_command: false, print_command_output: false).strip
194
+ end
195
+ private_class_method :commit_author
196
+
197
+ def self.make_request(uri, request, limit = 10)
198
+ raise ArgumentError, 'HTTP redirect too deep' if limit.zero?
199
+
200
+ http = Net::HTTP.new(uri.host, uri.port)
201
+
202
+ if uri.instance_of?(URI::HTTPS)
203
+ http.use_ssl = true
204
+ end
205
+
206
+ response = http.request(request)
207
+ case response
208
+ when Net::HTTPSuccess then response
209
+ when Net::HTTPRedirection then make_request(URI.parse(response['location']), request, limit - 1)
210
+ else
211
+ UI.user_error! JSON.parse(response.body)['message']
212
+ end
213
+ end
214
+ end
215
+ end
216
+ end
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module Polidea
3
- VERSION = "0.4.5"
3
+ VERSION = "0.5.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-polidea
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.5
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Piotrek Dubiel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-26 00:00:00.000000000 Z
11
+ date: 2016-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: plist
@@ -156,20 +156,34 @@ dependencies:
156
156
  - - ">="
157
157
  - !ruby/object:Gem::Version
158
158
  version: '0'
159
+ - !ruby/object:Gem::Dependency
160
+ name: simplecov
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
159
173
  - !ruby/object:Gem::Dependency
160
174
  name: fastlane
161
175
  requirement: !ruby/object:Gem::Requirement
162
176
  requirements:
163
177
  - - ">="
164
178
  - !ruby/object:Gem::Version
165
- version: 1.94.1
179
+ version: 1.100.0
166
180
  type: :development
167
181
  prerelease: false
168
182
  version_requirements: !ruby/object:Gem::Requirement
169
183
  requirements:
170
184
  - - ">="
171
185
  - !ruby/object:Gem::Version
172
- version: 1.94.1
186
+ version: 1.100.0
173
187
  description:
174
188
  email: piotr.dubiel@polidea.com
175
189
  executables: []
@@ -181,6 +195,7 @@ files:
181
195
  - lib/fastlane/plugin/polidea.rb
182
196
  - lib/fastlane/plugin/polidea/actions/add_prefix_schema.rb
183
197
  - lib/fastlane/plugin/polidea/actions/extract_app_icon.rb
198
+ - lib/fastlane/plugin/polidea/actions/extract_app_info.rb
184
199
  - lib/fastlane/plugin/polidea/actions/extract_app_name.rb
185
200
  - lib/fastlane/plugin/polidea/actions/extract_version.rb
186
201
  - lib/fastlane/plugin/polidea/actions/get_binary_size.rb
@@ -189,6 +204,7 @@ files:
189
204
  - lib/fastlane/plugin/polidea/actions/polidea_store.rb
190
205
  - lib/fastlane/plugin/polidea/actions/release_notes.rb
191
206
  - lib/fastlane/plugin/polidea/actions/s3.rb
207
+ - lib/fastlane/plugin/polidea/actions/shuttle.rb
192
208
  - lib/fastlane/plugin/polidea/helper/page_generator.rb
193
209
  - lib/fastlane/plugin/polidea/helper/qr_generator.rb
194
210
  - lib/fastlane/plugin/polidea/templates/images/icon-placeholder.png
@@ -306,7 +322,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
306
322
  version: '0'
307
323
  requirements: []
308
324
  rubyforge_project:
309
- rubygems_version: 2.6.6
325
+ rubygems_version: 2.6.7
310
326
  signing_key:
311
327
  specification_version: 4
312
328
  summary: Polidea's fastlane action