fastlane-plugin-aws_s3 0.2.8 → 1.0.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: a564357e8a8e019e078f37befa103359e490e6dd
4
- data.tar.gz: c2d966375d9b81c60809a2e3dad7e701265e3d13
3
+ metadata.gz: a0b71d17903f7045ded444288ab4d579f658b6ae
4
+ data.tar.gz: 9e8cc661d91204fcdbdffbbed76d08c68ae4d49d
5
5
  SHA512:
6
- metadata.gz: 6193e0f2667f0a03e8c85ffb63bd502f8c4fdbaeb48f017f95b484a9915d1f012f54a53fbdc94035ec704b41ec39ed7f6258ba6a599a433d1012405bb71303e1
7
- data.tar.gz: eba0b2bb6dd4d989308ab957a7663e654da84432a80daa408d5dba9fd0600097d4a03238b941c8ab9cf56b79da3604657be2f532b5883dd2dea79e5cd6b3f805
6
+ metadata.gz: 31ee79f8b36a294738077cfca68ff75057065b9cfe134651dbd54df2683d5fa9281ebdef51ac2a4f7058b3b5d134e8a3d2840e282956605491c61a54e3b9d314
7
+ data.tar.gz: 40d0bd830b8c6c34d152fe5016137a82b19e4866035f77e30b5d04f07f90f7702a0ae3139ecc787e0bd12fe4a6b37af1b99f3b6862d51d0c9af70936f89e43bf
data/README.md CHANGED
@@ -32,10 +32,13 @@ You can also customize a lot of options:
32
32
  ```ruby
33
33
  aws_s3(
34
34
  # All of these are used to make Shenzhen's `ipa distribute:s3` command
35
- access_key: ENV['S3_ACCESS_KEY'], # Required from user.
36
- secret_access_key: ENV['S3_SECRET_ACCESS_KEY'], # Required from user.
35
+ access_key: ENV['S3_ACCESS_KEY'], # Required from user (unless using aws_profile).
36
+ secret_access_key: ENV['S3_SECRET_ACCESS_KEY'], # Required from user (unless using aws_profile).
37
+ aws_profile: ENV['AWS_PROFILE'] # Required from user (unless using access_key and secret_access_key)
37
38
  bucket: ENV['S3_BUCKET'], # Required from user.
38
39
  region: ENV['S3_REGION'], # Required from user.
40
+ acl: ENV['S3_ACL'], # Optional - defaults to 'public-read'
41
+ server_side_encryption: ENV['S3_SERVER_SIDE_ENCRYPTION'] # Optional
39
42
 
40
43
  endpoint: 'https://s3-us-west-1.amazonaws.com', # Optional, for buckets that require a specific endpoint
41
44
  ipa: 'AppName.ipa', # Required (if not uploading an APK).
@@ -57,6 +57,8 @@
57
57
  <a href="<%= apk_url %>" id="text" class="btn btn-lg btn-default" onclick="document.getElementById('finished').id = '';">
58
58
  Install <%= title %> <%= version_name %> (<%= version_code %>)
59
59
  </a>
60
+ <br>
61
+ <p>Built on <%= Date.today.strftime('%a, %e %b %Y %H:%M %p') %></p>
60
62
  </span>
61
63
 
62
64
  <!-- <span class="download" id="android">
@@ -57,6 +57,8 @@
57
57
  <a href="itms-services://?action=download-manifest&url=<%= url_encode(plist_url) %>" id="text" class="btn btn-lg btn-default" onclick="document.getElementById('finished').id = '';">
58
58
  Install <%= title %> <%= bundle_version %> (<%= build_num %>)
59
59
  </a>
60
+ <br>
61
+ <p>Built on <%= Date.today.strftime('%a, %e %b %Y %H:%M %p') %></p>
60
62
  </span>
61
63
 
62
64
  <!-- <span class="download" id="android">
@@ -3,6 +3,7 @@ require 'fastlane/erb_template_helper'
3
3
  include ERB::Util
4
4
  require 'ostruct'
5
5
  require 'cgi'
6
+ require 'mime-types'
6
7
 
7
8
  module Fastlane
8
9
  module Actions
@@ -25,11 +26,13 @@ module Fastlane
25
26
  params[:dsym] = config[:dsym]
26
27
  params[:access_key] = config[:access_key]
27
28
  params[:secret_access_key] = config[:secret_access_key]
29
+ params[:aws_profile] = config[:aws_profile]
28
30
  params[:bucket] = config[:bucket]
29
31
  params[:endpoint] = config[:endpoint]
30
32
  params[:region] = config[:region]
31
33
  params[:app_directory] = config[:app_directory]
32
34
  params[:acl] = config[:acl]
35
+ params[:server_side_encryption] = config[:server_side_encryption]
33
36
  params[:source] = config[:source]
34
37
  params[:path] = config[:path]
35
38
  params[:upload_metadata] = config[:upload_metadata]
@@ -38,6 +41,7 @@ module Fastlane
38
41
  params[:html_template_path] = config[:html_template_path]
39
42
  params[:html_file_name] = config[:html_file_name]
40
43
  params[:skip_html_upload] = config[:skip_html_upload]
44
+ params[:html_in_folder] = config[:html_in_folder]
41
45
  params[:version_template_path] = config[:version_template_path]
42
46
  params[:version_file_name] = config[:version_file_name]
43
47
 
@@ -45,6 +49,7 @@ module Fastlane
45
49
  s3_region = params[:region]
46
50
  s3_access_key = params[:access_key]
47
51
  s3_secret_access_key = params[:secret_access_key]
52
+ s3_profile = params[:aws_profile]
48
53
  s3_bucket = params[:bucket]
49
54
  s3_endpoint = params[:endpoint]
50
55
  apk_file = params[:apk]
@@ -52,17 +57,25 @@ module Fastlane
52
57
  dsym_file = params[:dsym]
53
58
  s3_path = params[:path]
54
59
  acl = params[:acl].to_sym
60
+ server_side_encryption = params[:server_side_encryption]
55
61
 
56
- UI.user_error!("No S3 access key given, pass using `access_key: 'key'`") unless s3_access_key.to_s.length > 0
57
- UI.user_error!("No S3 secret access key given, pass using `secret_access_key: 'secret key'`") unless s3_secret_access_key.to_s.length > 0
62
+ unless s3_profile
63
+ UI.user_error!("No S3 access key given, pass using `access_key: 'key'` (or use `aws_profile: 'profile'`)") unless s3_access_key.to_s.length > 0
64
+ UI.user_error!("No S3 secret access key given, pass using `secret_access_key: 'secret key'` (or use `aws_profile: 'profile'`)") unless s3_secret_access_key.to_s.length > 0
65
+ end
58
66
  UI.user_error!("No S3 bucket given, pass using `bucket: 'bucket'`") unless s3_bucket.to_s.length > 0
59
67
  UI.user_error!("No IPA or APK file path given, pass using `ipa: 'ipa path'` or `apk: 'apk path'`") if ipa_file.to_s.length == 0 && apk_file.to_s.length == 0
60
68
  UI.user_error!("Please only give IPA path or APK path (not both)") if ipa_file.to_s.length > 0 && apk_file.to_s.length > 0
61
69
 
62
70
  require 'aws-sdk'
71
+ if s3_profile
72
+ creds = Aws::SharedCredentials.new(profile_name: s3_profile);
73
+ else
74
+ creds = Aws::Credentials.new(s3_access_key, s3_secret_access_key)
75
+ end
63
76
  Aws.config.update({
64
77
  region: s3_region,
65
- credentials: Aws::Credentials.new(s3_access_key, s3_secret_access_key)
78
+ credentials: creds
66
79
  })
67
80
 
68
81
  s3_client = if s3_endpoint
@@ -71,13 +84,13 @@ module Fastlane
71
84
  Aws::S3::Client.new
72
85
  end
73
86
 
74
- upload_ipa(s3_client, params, s3_region, s3_access_key, s3_secret_access_key, s3_bucket, ipa_file, dsym_file, s3_path, acl) if ipa_file.to_s.length > 0
75
- upload_apk(s3_client, params, s3_region, s3_access_key, s3_secret_access_key, s3_bucket, apk_file, s3_path, acl) if apk_file.to_s.length > 0
87
+ upload_ipa(s3_client, params, s3_region, s3_access_key, s3_secret_access_key, s3_bucket, ipa_file, dsym_file, s3_path, acl, server_side_encryption) if ipa_file.to_s.length > 0
88
+ upload_apk(s3_client, params, s3_region, s3_access_key, s3_secret_access_key, s3_bucket, apk_file, s3_path, acl, server_side_encryption) if apk_file.to_s.length > 0
76
89
 
77
90
  return true
78
91
  end
79
92
 
80
- def self.upload_ipa(s3_client, params, s3_region, s3_access_key, s3_secret_access_key, s3_bucket, ipa_file, dsym_file, s3_path, acl)
93
+ def self.upload_ipa(s3_client, params, s3_region, s3_access_key, s3_secret_access_key, s3_bucket, ipa_file, dsym_file, s3_path, acl, server_side_encryption)
81
94
 
82
95
  s3_path = "v{CFBundleShortVersionString}_b{CFBundleVersion}/" unless s3_path
83
96
 
@@ -87,6 +100,7 @@ module Fastlane
87
100
  plist_file_name = params[:plist_file_name]
88
101
  html_template_path = params[:html_template_path]
89
102
  html_file_name = params[:html_file_name]
103
+ generate_html_in_folder = params[:html_in_folder]
90
104
  version_template_path = params[:version_template_path]
91
105
  version_file_name = params[:version_file_name]
92
106
 
@@ -96,7 +110,7 @@ module Fastlane
96
110
  ipa_file_name = "#{url_part}#{ipa_file_basename}"
97
111
  ipa_file_data = File.open(ipa_file, 'rb')
98
112
 
99
- ipa_url = self.upload_file(s3_client, s3_bucket, app_directory, ipa_file_name, ipa_file_data, acl)
113
+ ipa_url = self.upload_file(s3_client, s3_bucket, app_directory, ipa_file_name, ipa_file_data, acl, server_side_encryption)
100
114
 
101
115
  # Setting action and environment variables
102
116
  Actions.lane_context[SharedValues::S3_IPA_OUTPUT_PATH] = ipa_url
@@ -107,7 +121,7 @@ module Fastlane
107
121
  dsym_file_name = "#{url_part}#{dsym_file_basename}"
108
122
  dsym_file_data = File.open(dsym_file, 'rb')
109
123
 
110
- dsym_url = self.upload_file(s3_client, s3_bucket, app_directory, dsym_file_name, dsym_file_data, acl)
124
+ dsym_url = self.upload_file(s3_client, s3_bucket, app_directory, dsym_file_name, dsym_file_data, acl, server_side_encryption)
111
125
 
112
126
  # Setting action and environment variables
113
127
  Actions.lane_context[SharedValues::S3_DSYM_OUTPUT_PATH] = dsym_url
@@ -164,7 +178,7 @@ module Fastlane
164
178
  # plist uploading
165
179
  #
166
180
  #####################################
167
- plist_url = self.upload_file(s3_client, s3_bucket, app_directory, plist_file_name, plist_render, acl)
181
+ plist_url = self.upload_file(s3_client, s3_bucket, app_directory, plist_file_name, plist_render, acl, server_side_encryption)
168
182
 
169
183
  # Creates html from template
170
184
  if html_template_path && File.exist?(html_template_path)
@@ -202,11 +216,11 @@ module Fastlane
202
216
  # html uploading
203
217
  #
204
218
  #####################################
205
-
219
+
206
220
  skip_html = params[:skip_html_upload]
207
-
208
- html_url = self.upload_file(s3_client, s3_bucket, app_directory, html_file_name, html_render, acl) unless skip_html
209
- version_url = self.upload_file(s3_client, s3_bucket, app_directory, version_file_name, version_render, acl)
221
+ html_file_name = "#{url_part}#{html_file_name}" if generate_html_in_folder
222
+ html_url = self.upload_file(s3_client, s3_bucket, app_directory, html_file_name, html_render, acl, server_side_encryption) unless skip_html
223
+ version_url = self.upload_file(s3_client, s3_bucket, app_directory, version_file_name, version_render, acl, server_side_encryption)
210
224
 
211
225
  # Setting action and environment variables
212
226
  Actions.lane_context[SharedValues::S3_PLIST_OUTPUT_PATH] = plist_url
@@ -217,14 +231,14 @@ module Fastlane
217
231
 
218
232
  Actions.lane_context[SharedValues::S3_VERSION_OUTPUT_PATH] = version_url
219
233
  ENV[SharedValues::S3_VERSION_OUTPUT_PATH.to_s] = version_url
220
-
221
- self.upload_source(s3_client, params, s3_bucket, params[:source], s3_path, acl)
234
+
235
+ self.upload_source(s3_client, params, s3_bucket, params[:source], s3_path, acl, server_side_encryption)
222
236
 
223
237
  UI.success("Successfully uploaded ipa file to '#{Actions.lane_context[SharedValues::S3_IPA_OUTPUT_PATH]}'")
224
238
  UI.success("iOS app can be downloaded at '#{Actions.lane_context[SharedValues::S3_HTML_OUTPUT_PATH]}'") unless skip_html
225
239
  end
226
240
 
227
- def self.upload_apk(s3_client, params, s3_region, s3_access_key, s3_secret_access_key, s3_bucket, apk_file, s3_path, acl)
241
+ def self.upload_apk(s3_client, params, s3_region, s3_access_key, s3_secret_access_key, s3_bucket, apk_file, s3_path, acl, server_side_encryption)
228
242
  version = get_apk_version(apk_file)
229
243
 
230
244
  version_code = version[0]
@@ -237,6 +251,7 @@ module Fastlane
237
251
 
238
252
  html_template_path = params[:html_template_path]
239
253
  html_file_name = params[:html_file_name]
254
+ generate_html_in_folder = params[:html_in_folder]
240
255
  version_template_path = params[:version_template_path]
241
256
  version_file_name = params[:version_file_name]
242
257
 
@@ -246,7 +261,7 @@ module Fastlane
246
261
  apk_file_name = "#{url_part}#{apk_file_basename}"
247
262
  apk_file_data = File.open(apk_file, 'rb')
248
263
 
249
- apk_url = self.upload_file(s3_client, s3_bucket, app_directory, apk_file_name, apk_file_data, acl)
264
+ apk_url = self.upload_file(s3_client, s3_bucket, app_directory, apk_file_name, apk_file_data, acl, server_side_encryption)
250
265
 
251
266
  # Setting action and environment variables
252
267
  Actions.lane_context[SharedValues::S3_APK_OUTPUT_PATH] = apk_url
@@ -300,11 +315,11 @@ module Fastlane
300
315
  # html and plist uploading
301
316
  #
302
317
  #####################################
303
-
304
- skip_html = params[:skip_html_upload]
305
318
 
306
- html_url = self.upload_file(s3_client, s3_bucket, app_directory, html_file_name, html_render, acl) unless skip_html
307
- version_url = self.upload_file(s3_client, s3_bucket, app_directory, version_file_name, version_render, acl)
319
+ skip_html = params[:skip_html_upload]
320
+ html_file_name = "#{url_part}#{html_file_name}" if generate_html_in_folder
321
+ html_url = self.upload_file(s3_client, s3_bucket, app_directory, html_file_name, html_render, acl, server_side_encryption) unless skip_html
322
+ version_url = self.upload_file(s3_client, s3_bucket, app_directory, version_file_name, version_render, acl, server_side_encryption)
308
323
 
309
324
  Actions.lane_context[SharedValues::S3_HTML_OUTPUT_PATH] = html_url unless skip_html
310
325
  ENV[SharedValues::S3_HTML_OUTPUT_PATH.to_s] = html_url unless skip_html
@@ -312,33 +327,33 @@ module Fastlane
312
327
  Actions.lane_context[SharedValues::S3_VERSION_OUTPUT_PATH] = version_url
313
328
  ENV[SharedValues::S3_VERSION_OUTPUT_PATH.to_s] = version_url
314
329
 
315
- self.upload_source(s3_client, params, s3_bucket, params[:source], s3_path, acl)
316
-
330
+ self.upload_source(s3_client, params, s3_bucket, params[:source], s3_path, acl, server_side_encryption)
331
+
317
332
  UI.success("Successfully uploaded apk file to '#{Actions.lane_context[SharedValues::S3_APK_OUTPUT_PATH]}'")
318
333
  UI.success("Android app can be downloaded at '#{Actions.lane_context[SharedValues::S3_HTML_OUTPUT_PATH]}'") unless skip_html
319
334
  end
320
-
321
- def self.upload_source(s3_client, params, s3_bucket, source_directory, s3_path, acl)
335
+
336
+ def self.upload_source(s3_client, params, s3_bucket, source_directory, s3_path, acl, server_side_encryption)
322
337
  if source_directory && File.directory?(source_directory)
323
338
  source_directory = File.absolute_path source_directory
324
339
  output_file_path = Tempfile.new('aws_s3_source').path
325
-
340
+
326
341
  output_file_path = other_action.zip(
327
342
  path: source_directory,
328
343
  output_path: output_file_path.gsub(/(?<!.zip)$/, ".zip")
329
344
  )
330
-
345
+
331
346
  s3_path = "#{version_code}_#{version_name}/" unless s3_path
332
347
  app_directory = params[:app_directory]
333
348
  url_part = s3_path
334
349
  zip_file_name = "#{url_part}source.zip"
335
-
350
+
336
351
  output_path_data = File.open("#{output_file_path}", 'rb')
337
- source_url = self.upload_file(s3_client, s3_bucket, app_directory, zip_file_name, output_path_data, acl)
338
-
352
+ source_url = self.upload_file(s3_client, s3_bucket, app_directory, zip_file_name, output_path_data, acl, server_side_encryption)
353
+
339
354
  Actions.lane_context[SharedValues::S3_SOURCE_OUTPUT_PATH] = source_url
340
355
  ENV[SharedValues::S3_SOURCE_OUTPUT_PATH.to_s] = source_url
341
-
356
+
342
357
  UI.success("Source can be downloaded at '#{Actions.lane_context[SharedValues::S3_SOURCE_OUTPUT_PATH]}'")
343
358
  end
344
359
  end
@@ -381,18 +396,21 @@ module Fastlane
381
396
  [versionCode, versionName, name]
382
397
  end
383
398
 
384
- def self.upload_file(s3_client, bucket_name, app_directory, file_name, file_data, acl)
399
+ def self.upload_file(s3_client, bucket_name, app_directory, file_name, file_data, acl, server_side_encryption)
385
400
 
386
401
  if app_directory
387
402
  file_name = "#{app_directory}/#{file_name}"
388
403
  end
389
404
 
390
405
  bucket = Aws::S3::Bucket.new(bucket_name, client: s3_client)
391
- obj = bucket.put_object({
406
+ details = {
392
407
  acl: acl,
393
408
  key: file_name,
394
- body: file_data
395
- })
409
+ body: file_data,
410
+ content_type: MIME::Types.type_for(File.extname(file_name)).first.to_s
411
+ }
412
+ details = details.merge(server_side_encryption: server_side_encryption) if server_side_encryption.length > 0
413
+ obj = bucket.put_object(details)
396
414
 
397
415
  # When you enable versioning on a S3 bucket,
398
416
  # writing to an object will create an object version
@@ -478,6 +496,12 @@ module Fastlane
478
496
  optional: true,
479
497
  default_value: false,
480
498
  is_string: false),
499
+ FastlaneCore::ConfigItem.new(key: :html_in_folder,
500
+ env_name: "",
501
+ description: "move the uploaded html file into the version folder",
502
+ optional: true,
503
+ default_value: false,
504
+ is_string: false),
481
505
  FastlaneCore::ConfigItem.new(key: :version_template_path,
482
506
  env_name: "",
483
507
  description: "version erb template path",
@@ -496,12 +520,17 @@ module Fastlane
496
520
  description: "AWS Secret Access Key ",
497
521
  optional: true,
498
522
  default_value: ENV['AWS_SECRET_ACCESS_KEY']),
523
+ FastlaneCore::ConfigItem.new(key: :aws_profile,
524
+ env_name: "S3_PROFILE",
525
+ description: "AWS profile to use for credentials",
526
+ optional: true,
527
+ default_value: ENV['AWS_PROFILE']),
499
528
  FastlaneCore::ConfigItem.new(key: :bucket,
500
529
  env_name: "S3_BUCKET",
501
530
  description: "AWS bucket name",
502
531
  optional: true,
503
532
  default_value: ENV['AWS_BUCKET_NAME']),
504
- FastlaneCore::ConfigItem.new(key: :region,
533
+ FastlaneCore::ConfigItem.new(key: :region,
505
534
  env_name: "S3_REGION",
506
535
  description: "AWS region (for bucket creation) ",
507
536
  optional: true,
@@ -522,14 +551,18 @@ module Fastlane
522
551
  env_name: "S3_ACL",
523
552
  description: "Uploaded object permissions e.g public_read (default), private, public_read_write, authenticated_read ",
524
553
  optional: true,
525
- default_value: "public-read"
526
- ),
554
+ default_value: "public-read"),
555
+ FastlaneCore::ConfigItem.new(key: :server_side_encryption,
556
+ env_name: "S3_SERVER_SIDE_ENCRYPTION",
557
+ description: "Enable encryption of the uploaded S3 object (set it to 'AES256' for example)",
558
+ optional: true,
559
+ default_value: ""),
527
560
  FastlaneCore::ConfigItem.new(key: :endpoint,
528
561
  env_name: "S3_ENDPOINT",
529
562
  description: "The base endpoint for your S3 bucket",
530
563
  optional: true,
531
564
  default_value: nil
532
- ),
565
+ ),
533
566
  ]
534
567
  end
535
568
 
@@ -14,8 +14,7 @@ module Fastlane
14
14
  #
15
15
  require "erb"
16
16
  def self.load(template_name)
17
- path = "#{Helper.gem_path('fastlane-plugin-aws_s3')}/lib/assets/#{template_name}.erb"
18
- puts "path #{path}"
17
+ path = "#{gem_path('fastlane-plugin-aws_s3')}/lib/assets/#{template_name}.erb"
19
18
  load_from_path(path)
20
19
  end
21
20
 
@@ -29,6 +28,19 @@ module Fastlane
29
28
  def self.render(template, template_vars_hash)
30
29
  Fastlane::ErbalT.new(template_vars_hash).render(template)
31
30
  end
31
+
32
+ #
33
+ # Taken from https://github.com/fastlane/fastlane/blob/f0dd4d0f4ecc74d9f7f62e0efc33091d975f2043/fastlane_core/lib/fastlane_core/helper.rb#L248-L259
34
+ # Unsure best other way to do this so using this logic for now since its deprecated in fastlane proper
35
+ #
36
+ def self.gem_path(gem_name)
37
+ if !Helper.is_test? and Gem::Specification.find_all_by_name(gem_name).any?
38
+ return Gem::Specification.find_by_name(gem_name).gem_dir
39
+ else
40
+ return './'
41
+ end
42
+ end
43
+
32
44
  end
33
45
  end
34
46
  end
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
2
  module AwsS3
3
- VERSION = "0.2.8"
3
+ VERSION = "1.0.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane-plugin-aws_s3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.8
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Holtz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-05-19 00:00:00.000000000 Z
11
+ date: 2017-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0.7'
41
+ - !ruby/object:Gem::Dependency
42
+ name: mime-types
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.1'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.1'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: pry
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -131,9 +145,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
145
  version: '0'
132
146
  requirements: []
133
147
  rubyforge_project:
134
- rubygems_version: 2.5.1
148
+ rubygems_version: 2.5.2
135
149
  signing_key:
136
150
  specification_version: 4
137
151
  summary: Upload IPA and APK to S3
138
152
  test_files: []
139
- has_rdoc: