fastlane-plugin-aws_s3 0.2.8 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +5 -2
- data/lib/assets/s3_android_html_template.erb +2 -0
- data/lib/assets/s3_ios_html_template.erb +2 -0
- data/lib/fastlane/plugin/aws_s3/actions/aws_s3_action.rb +72 -39
- data/lib/fastlane/plugin/aws_s3/helper/aws_s3_helper.rb +14 -2
- data/lib/fastlane/plugin/aws_s3/version.rb +1 -1
- metadata +17 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a0b71d17903f7045ded444288ab4d579f658b6ae
|
4
|
+
data.tar.gz: 9e8cc661d91204fcdbdffbbed76d08c68ae4d49d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
57
|
-
|
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:
|
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
|
-
|
307
|
-
|
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
|
-
|
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
|
-
|
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 = "#{
|
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
|
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.
|
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-
|
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.
|
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:
|