fastlane-plugin-appcenter 1.5.0 → 1.6.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 +12 -10
- data/lib/fastlane/plugin/appcenter/actions/appcenter_upload_action.rb +91 -35
- data/lib/fastlane/plugin/appcenter/version.rb +1 -1
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 172c940fc1d03ac4d3951cffc2c0f1c1d1b78ee25967f464d0a1058f12d7c7b9
|
4
|
+
data.tar.gz: f6835efe4d035061a6c8834e27c355817061835c9be067fe2090b2ae9dd3b65a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9060632241323fe3a7cbc412b77cbbe457819277176e06a00fdbf155ef72c01aa19453a626214003b211bee5a9388fd4ce509b97a823489e0d9022674b14e908
|
7
|
+
data.tar.gz: 68fce7a6a0755c2fe71363e7f85d1f88d44f3303d7a94876c15d57d810033021ad410461fb399b91fee82aae4710fe1740a033967c2576245495f12360dd2a48
|
data/README.md
CHANGED
@@ -12,6 +12,8 @@ This project is a [_fastlane_](https://github.com/fastlane/fastlane) plugin. To
|
|
12
12
|
fastlane add_plugin appcenter
|
13
13
|
```
|
14
14
|
|
15
|
+
fastlane v2.96.0 or higher is required for all plugin-actions to function properly.
|
16
|
+
|
15
17
|
## About App Center
|
16
18
|
With [App Center](https://appcenter.ms) you can continuously build, test, release, and monitor your apps. This plugin provides a set of actions to interact with App Center.
|
17
19
|
|
@@ -27,6 +29,7 @@ To get started, first, [obtain an API token](https://appcenter.ms/settings/apito
|
|
27
29
|
appcenter_fetch_devices(
|
28
30
|
api_token: "<appcenter token>",
|
29
31
|
owner_name: "<appcenter account name of the owner of the app (username or organization URL name)>",
|
32
|
+
owner_type: "user", # Default is user - set to organization for appcenter organizations
|
30
33
|
app_name: "<appcenter app name>",
|
31
34
|
destinations: "*", # Default is 'Collaborators', use '*' for all distribution groups
|
32
35
|
devices_file: "devices.txt" # Default. If you customize, the extension must be .txt
|
@@ -36,7 +39,8 @@ appcenter_fetch_devices(
|
|
36
39
|
```ruby
|
37
40
|
appcenter_upload(
|
38
41
|
api_token: "<appcenter token>",
|
39
|
-
owner_name: "<appcenter
|
42
|
+
owner_name: "<appcenter account name of the owner of the app (username or organization URL name)>",
|
43
|
+
owner_type: "user", # Default is user - set to organization for appcenter organizations
|
40
44
|
app_name: "<appcenter app name (as seen in app URL)>",
|
41
45
|
file: "<path to android build binary>",
|
42
46
|
notify_testers: true # Set to false if you don't want to notify testers of your new release (default: `false`)
|
@@ -81,15 +85,12 @@ Here is the list of all existing parameters:
|
|
81
85
|
|-----------------|--------------------|
|
82
86
|
| `api_token` <br/> `APPCENTER_API_TOKEN` | API Token for App Center |
|
83
87
|
| `owner_type` <br/> `APPCENTER_OWNER_TYPE` | Owner type, either 'user' or 'organization' (default: `user`) |
|
84
|
-
| `owner_name` <br/> `APPCENTER_OWNER_NAME` | Owner name
|
85
|
-
| `app_name` <br/> `APPCENTER_APP_NAME` | App name as found in the App's URL in App Center
|
88
|
+
| `owner_name` <br/> `APPCENTER_OWNER_NAME` | Owner name as found in the App's URL in App Center |
|
89
|
+
| `app_name` <br/> `APPCENTER_APP_NAME` | App name as found in the App's URL in App Center. If there is no app with such name, you will be prompted to create one |
|
86
90
|
| `app_display_name` <br/> `APPCENTER_APP_DISPLAY_NAME` | App display name to use when creating a new app |
|
87
91
|
| `app_os` <br/> `APPCENTER_APP_OS` | App OS. Used for new app creation, if app 'app_name' was not found |
|
88
92
|
| `app_platform` <br/> `APPCENTER_APP_PLATFORM` | App Platform. Used for new app creation, if app 'app_name' was not found |
|
89
|
-
| `
|
90
|
-
| `aab` <br/> `APPCENTER_DISTRIBUTE_AAB` | Build release path for android app bundle build |
|
91
|
-
| `ipa` <br/> `APPCENTER_DISTRIBUTE_IPA` | Build release path for iOS builds |
|
92
|
-
| `file` <br/> `APPCENTER_DISTRIBUTE_FILE` | Build release path for generic builds (.aab, .app, .app.zip, .apk, .dmg, .ipa, .pkg) |
|
93
|
+
| `file` <br/> `APPCENTER_DISTRIBUTE_FILE` | File path to the release build to publish |
|
93
94
|
| `dsym` <br/> `APPCENTER_DISTRIBUTE_DSYM` | Path to your symbols file. For iOS provide path to app.dSYM.zip |
|
94
95
|
| `upload_dsym_only` <br/> `APPCENTER_DISTRIBUTE_UPLOAD_DSYM_ONLY` | Flag to upload only the dSYM file to App Center (default: `false`) |
|
95
96
|
| `mapping` <br/> `APPCENTER_DISTRIBUTE_ANDROID_MAPPING` | Path to your Android mapping.txt |
|
@@ -101,10 +102,11 @@ Here is the list of all existing parameters:
|
|
101
102
|
| `release_notes` <br/> `APPCENTER_DISTRIBUTE_RELEASE_NOTES` | Release notes (default: `No changelog given`) |
|
102
103
|
| `should_clip` <br/> `APPCENTER_DISTRIBUTE_RELEASE_NOTES_CLIPPING` | Clip release notes if its length is more then 5000, true by default (default: `true`) |
|
103
104
|
| `release_notes_link` <br/> `APPCENTER_DISTRIBUTE_RELEASE_NOTES_LINK` | Additional release notes link |
|
104
|
-
| `build_number` <br/> `APPCENTER_DISTRIBUTE_BUILD_NUMBER` | The build number, required for
|
105
|
-
| `version` <br/> `APPCENTER_DISTRIBUTE_VERSION` | The build version, required for
|
105
|
+
| `build_number` <br/> `APPCENTER_DISTRIBUTE_BUILD_NUMBER` | The build number, required for macOS .pkg and .dmg builds, as well as Android ProGuard `mapping.txt` when using `upload_mapping_only` |
|
106
|
+
| `version` <br/> `APPCENTER_DISTRIBUTE_VERSION` | The build version, required for .pkg, .dmg, .zip and .msi builds, as well as Android ProGuard `mapping.txt` when using `upload_mapping_only` |
|
106
107
|
| `timeout` <br/> `APPCENTER_DISTRIBUTE_TIMEOUT` | Request timeout in seconds |
|
107
|
-
| `dsa_signature` <br/> `APPCENTER_DISTRIBUTE_DSA_SIGNATURE` | DSA signature of the macOS or Windows
|
108
|
+
| `dsa_signature` <br/> `APPCENTER_DISTRIBUTE_DSA_SIGNATURE` | DSA signature of the macOS or Windows release for Sparkle update feed |
|
109
|
+
| `strict` <br/> `APPCENTER_STRICT_MODE` | Strict mode, set to 'true' to fail early in case a potential error was detected |
|
108
110
|
|
109
111
|
|
110
112
|
## Example
|
@@ -2,6 +2,18 @@ module Fastlane
|
|
2
2
|
module Actions
|
3
3
|
module Constants
|
4
4
|
MAX_RELEASE_NOTES_LENGTH = 5000
|
5
|
+
SUPPORTED_EXTENSIONS = {
|
6
|
+
android: %w(.aab .apk),
|
7
|
+
ios: %w(.ipa),
|
8
|
+
mac: %w(.app .app.zip .dmg .pkg),
|
9
|
+
windows: %w(.appx .appxbundle .appxupload .msix .msixbundle .msixupload .zip .msi),
|
10
|
+
custom: %w(.zip)
|
11
|
+
}
|
12
|
+
ALL_SUPPORTED_EXTENSIONS = SUPPORTED_EXTENSIONS.values.flatten.sort!.uniq!
|
13
|
+
STORE_ONLY_EXTENSIONS = %w(.aab)
|
14
|
+
STORE_SUPPORTED_EXTENSIONS = %w(.aab .apk .ipa)
|
15
|
+
VERSION_REQUIRED_EXTENSIONS = %w(.msi .zip)
|
16
|
+
FULL_VERSION_REQUIRED_EXTENSIONS = %w(.dmg .pkg)
|
5
17
|
end
|
6
18
|
|
7
19
|
module SharedValues
|
@@ -64,7 +76,6 @@ module Fastlane
|
|
64
76
|
end
|
65
77
|
|
66
78
|
def self.run_mapping_upload(params)
|
67
|
-
values = params.values
|
68
79
|
api_token = params[:api_token]
|
69
80
|
owner_name = params[:owner_name]
|
70
81
|
app_name = params[:app_name]
|
@@ -131,29 +142,35 @@ module Fastlane
|
|
131
142
|
|
132
143
|
file_ext = Helper::AppcenterHelper.file_extname_full(file)
|
133
144
|
if destination_type == "group"
|
134
|
-
|
145
|
+
self.optional_error("Can't distribute #{file_ext} to groups, please use `destination_type: 'store'`") if Constants::STORE_ONLY_EXTENSIONS.include? file_ext
|
135
146
|
else
|
136
|
-
|
147
|
+
self.optional_error("Can't distribute #{file_ext} to stores, please use `destination_type: 'group'`") unless Constants::STORE_SUPPORTED_EXTENSIONS.include? file_ext
|
137
148
|
end
|
138
149
|
|
150
|
+
release_upload_body = nil
|
139
151
|
unless params[:file].to_s.empty?
|
140
|
-
if
|
141
|
-
|
142
|
-
|
152
|
+
if Constants::FULL_VERSION_REQUIRED_EXTENSIONS.include? file_ext
|
153
|
+
self.optional_error("Fields `version` and `build_number` must be specified to upload a #{file_ext} file") if build_number.to_s.empty? || version.to_s.empty?
|
154
|
+
elsif Constants::VERSION_REQUIRED_EXTENSIONS.include? file_ext
|
155
|
+
self.optional_error("Field `version` must be specified to upload a #{file_ext} file") if version.to_s.empty?
|
143
156
|
else
|
144
|
-
|
157
|
+
self.optional_error("Fields `version` and `build_number` are not supported for files of type #{file_ext}") unless build_number.to_s.empty? && version.to_s.empty?
|
145
158
|
end
|
159
|
+
|
160
|
+
release_upload_body = { build_version: version } unless version.nil?
|
161
|
+
release_upload_body = { build_version: version, build_number: build_number } if !version.nil? && !build_number.nil?
|
146
162
|
end
|
147
163
|
|
148
164
|
if file_ext == ".app" && File.directory?(file)
|
149
165
|
UI.message("App path is a directory, zipping it before upload")
|
150
166
|
zip_file = file + ".zip"
|
151
|
-
if File.
|
167
|
+
if File.exist? zip_file
|
152
168
|
override = UI.interactive? ? UI.confirm("File '#{zip_file}' already exists, do you want to override it?") : true
|
153
169
|
UI.abort_with_message!("Not overriding, aborting publishing operation") unless override
|
154
|
-
UI.message("Deleting zip
|
170
|
+
UI.message("Deleting zip archive: #{zip_file}")
|
155
171
|
File.delete zip_file
|
156
172
|
end
|
173
|
+
UI.message("Creating zip archive: #{zip_file}")
|
157
174
|
file = Actions::ZipAction.run(path: file, output_path: zip_file)
|
158
175
|
end
|
159
176
|
|
@@ -171,7 +188,7 @@ module Fastlane
|
|
171
188
|
release_url = Helper::AppcenterHelper.get_release_url(owner_type, owner_name, app_name, release_id)
|
172
189
|
UI.message("Release '#{release_id}' committed: #{release_url}")
|
173
190
|
|
174
|
-
Helper::AppcenterHelper.update_release(api_token, owner_name, app_name, release_id, release_notes)
|
191
|
+
release = Helper::AppcenterHelper.update_release(api_token, owner_name, app_name, release_id, release_notes)
|
175
192
|
Helper::AppcenterHelper.update_release_metadata(api_token, owner_name, app_name, release_id, dsa_signature)
|
176
193
|
|
177
194
|
destinations_array = destinations.split(',')
|
@@ -196,6 +213,8 @@ module Fastlane
|
|
196
213
|
UI.user_error!("Failed to upload release")
|
197
214
|
end
|
198
215
|
end
|
216
|
+
|
217
|
+
release
|
199
218
|
end
|
200
219
|
|
201
220
|
# checks app existance, if ther is no such - creates it
|
@@ -240,9 +259,14 @@ module Fastlane
|
|
240
259
|
upload_dsym_only = params[:upload_dsym_only]
|
241
260
|
upload_mapping_only = params[:upload_mapping_only]
|
242
261
|
|
262
|
+
Options.strict_mode(params[:strict])
|
263
|
+
|
243
264
|
# if app found or successfully created
|
244
265
|
if self.get_or_create_app(params)
|
245
|
-
self.run_release_upload(params) unless upload_dsym_only || upload_mapping_only
|
266
|
+
release = self.run_release_upload(params) unless upload_dsym_only || upload_mapping_only
|
267
|
+
params[:version] = release['short_version'] if release
|
268
|
+
params[:build_number] = release['version'] if release
|
269
|
+
|
246
270
|
self.run_dsym_upload(params) unless upload_mapping_only
|
247
271
|
self.run_mapping_upload(params) unless upload_dsym_only
|
248
272
|
end
|
@@ -282,7 +306,7 @@ module Fastlane
|
|
282
306
|
type: String,
|
283
307
|
verify_block: proc do |value|
|
284
308
|
accepted_formats = ["user", "organization"]
|
285
|
-
UI.user_error!("Only \"user\" and \"organization\" types are allowed, you provided \"#{
|
309
|
+
UI.user_error!("Only \"user\" and \"organization\" types are allowed, you provided \"#{value}\"") unless accepted_formats.include? value
|
286
310
|
end),
|
287
311
|
|
288
312
|
FastlaneCore::ConfigItem.new(key: :owner_name,
|
@@ -328,6 +352,7 @@ module Fastlane
|
|
328
352
|
description: "Build release path for android build",
|
329
353
|
default_value: Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH],
|
330
354
|
optional: true,
|
355
|
+
deprecated: true,
|
331
356
|
type: String,
|
332
357
|
conflicting_options: [:ipa, :aab, :file],
|
333
358
|
conflict_block: proc do |value|
|
@@ -336,7 +361,7 @@ module Fastlane
|
|
336
361
|
verify_block: proc do |value|
|
337
362
|
accepted_formats = [".apk"]
|
338
363
|
file_extname_full = Helper::AppcenterHelper.file_extname_full(value)
|
339
|
-
|
364
|
+
self.optional_error("Only \".apk\" formats are allowed, you provided \"#{file_extname_full}\"") unless accepted_formats.include? file_extname_full
|
340
365
|
end),
|
341
366
|
|
342
367
|
FastlaneCore::ConfigItem.new(key: :aab,
|
@@ -344,6 +369,7 @@ module Fastlane
|
|
344
369
|
description: "Build release path for android app bundle build",
|
345
370
|
default_value: Actions.lane_context[SharedValues::GRADLE_AAB_OUTPUT_PATH],
|
346
371
|
optional: true,
|
372
|
+
deprecated: true,
|
347
373
|
type: String,
|
348
374
|
conflicting_options: [:ipa, :apk, :file],
|
349
375
|
conflict_block: proc do |value|
|
@@ -351,7 +377,7 @@ module Fastlane
|
|
351
377
|
end,
|
352
378
|
verify_block: proc do |value|
|
353
379
|
accepted_formats = [".aab"]
|
354
|
-
|
380
|
+
self.optional_error("Only \".aab\" formats are allowed, you provided \"#{File.extname(value)}\"") unless accepted_formats.include? File.extname(value)
|
355
381
|
end),
|
356
382
|
|
357
383
|
FastlaneCore::ConfigItem.new(key: :ipa,
|
@@ -359,6 +385,7 @@ module Fastlane
|
|
359
385
|
description: "Build release path for iOS builds",
|
360
386
|
default_value: Actions.lane_context[SharedValues::IPA_OUTPUT_PATH],
|
361
387
|
optional: true,
|
388
|
+
deprecated: true,
|
362
389
|
type: String,
|
363
390
|
conflicting_options: [:apk, :aab, :file],
|
364
391
|
conflict_block: proc do |value|
|
@@ -366,12 +393,12 @@ module Fastlane
|
|
366
393
|
end,
|
367
394
|
verify_block: proc do |value|
|
368
395
|
accepted_formats = [".ipa"]
|
369
|
-
|
396
|
+
self.optional_error("Only \".ipa\" formats are allowed, you provided \"#{File.extname(value)}\"") unless accepted_formats.include? File.extname(value)
|
370
397
|
end),
|
371
398
|
|
372
399
|
FastlaneCore::ConfigItem.new(key: :file,
|
373
400
|
env_name: "APPCENTER_DISTRIBUTE_FILE",
|
374
|
-
description: "
|
401
|
+
description: "File path to the release build to publish",
|
375
402
|
optional: true,
|
376
403
|
type: String,
|
377
404
|
conflicting_options: [:apk, :aab, :ipa],
|
@@ -379,9 +406,14 @@ module Fastlane
|
|
379
406
|
UI.user_error!("You can't use 'file' and '#{value.key}' options in one run")
|
380
407
|
end,
|
381
408
|
verify_block: proc do |value|
|
382
|
-
|
409
|
+
platform = Actions.lane_context[SharedValues::PLATFORM_NAME]
|
410
|
+
accepted_formats = Constants::SUPPORTED_EXTENSIONS[platform.to_sym] if platform
|
411
|
+
unless accepted_formats
|
412
|
+
UI.important("Unknown platform '#{platform}', consider using one of: #{Constants::SUPPORTED_EXTENSIONS.keys}")
|
413
|
+
accepted_formats = Constants::ALL_SUPPORTED_EXTENSIONS
|
414
|
+
end
|
383
415
|
file_ext = Helper::AppcenterHelper.file_extname_full(value)
|
384
|
-
|
416
|
+
self.optional_error("Extension not supported: '#{file_ext}'. Supported formats for platform '#{platform}': #{accepted_formats.join ' '}") unless accepted_formats.include? file_ext
|
385
417
|
end),
|
386
418
|
|
387
419
|
FastlaneCore::ConfigItem.new(key: :dsym,
|
@@ -489,13 +521,13 @@ module Fastlane
|
|
489
521
|
|
490
522
|
FastlaneCore::ConfigItem.new(key: :build_number,
|
491
523
|
env_name: "APPCENTER_DISTRIBUTE_BUILD_NUMBER",
|
492
|
-
description: "The build number, required for
|
524
|
+
description: "The build number, required for macOS .pkg and .dmg builds, as well as Android ProGuard `mapping.txt` when using `upload_mapping_only`",
|
493
525
|
optional: true,
|
494
526
|
type: String),
|
495
527
|
|
496
528
|
FastlaneCore::ConfigItem.new(key: :version,
|
497
529
|
env_name: "APPCENTER_DISTRIBUTE_VERSION",
|
498
|
-
description: "The build version, required for
|
530
|
+
description: "The build version, required for .pkg, .dmg, .zip and .msi builds, as well as Android ProGuard `mapping.txt` when using `upload_mapping_only`",
|
499
531
|
optional: true,
|
500
532
|
type: String),
|
501
533
|
|
@@ -507,7 +539,13 @@ module Fastlane
|
|
507
539
|
|
508
540
|
FastlaneCore::ConfigItem.new(key: :dsa_signature,
|
509
541
|
env_name: "APPCENTER_DISTRIBUTE_DSA_SIGNATURE",
|
510
|
-
description: "DSA signature of the macOS or Windows
|
542
|
+
description: "DSA signature of the macOS or Windows release for Sparkle update feed",
|
543
|
+
optional: true,
|
544
|
+
type: String),
|
545
|
+
|
546
|
+
FastlaneCore::ConfigItem.new(key: :strict,
|
547
|
+
env_name: "APPCENTER_STRICT_MODE",
|
548
|
+
description: "Strict mode, set to 'true' to fail early in case a potential error was detected",
|
511
549
|
optional: true,
|
512
550
|
type: String)
|
513
551
|
]
|
@@ -521,6 +559,8 @@ module Fastlane
|
|
521
559
|
end
|
522
560
|
|
523
561
|
def self.is_supported?(platform)
|
562
|
+
return Constants::SUPPORTED_EXTENSIONS.keys.include?(platform) if Options.strict
|
563
|
+
|
524
564
|
true
|
525
565
|
end
|
526
566
|
|
@@ -529,12 +569,10 @@ module Fastlane
|
|
529
569
|
'appcenter_upload(
|
530
570
|
api_token: "...",
|
531
571
|
owner_name: "appcenter_owner",
|
532
|
-
app_name: "
|
533
|
-
|
572
|
+
app_name: "testing_android_app",
|
573
|
+
file: "./app-release.apk",
|
534
574
|
destinations: "Testers",
|
535
575
|
destination_type: "group",
|
536
|
-
build_number: "3",
|
537
|
-
version: "1.0.0",
|
538
576
|
mapping: "./mapping.txt",
|
539
577
|
release_notes: "release notes",
|
540
578
|
notify_testers: false
|
@@ -542,9 +580,9 @@ module Fastlane
|
|
542
580
|
'appcenter_upload(
|
543
581
|
api_token: "...",
|
544
582
|
owner_name: "appcenter_owner",
|
545
|
-
app_name: "
|
546
|
-
|
547
|
-
destinations: "Testers,
|
583
|
+
app_name: "testing_ios_app",
|
584
|
+
file: "./app-release.ipa",
|
585
|
+
destinations: "Testers,Public",
|
548
586
|
destination_type: "group",
|
549
587
|
dsym: "./app.dSYM.zip",
|
550
588
|
release_notes: "release notes",
|
@@ -553,18 +591,36 @@ module Fastlane
|
|
553
591
|
'appcenter_upload(
|
554
592
|
api_token: "...",
|
555
593
|
owner_name: "appcenter_owner",
|
556
|
-
app_name: "
|
557
|
-
|
594
|
+
app_name: "testing_google_play_app",
|
595
|
+
file: "./app.aab",
|
558
596
|
destinations: "Alpha",
|
559
597
|
destination_type: "store",
|
560
|
-
|
561
|
-
version: "1.0.0",
|
562
|
-
mapping: "./mapping.txt",
|
563
|
-
release_notes: "release notes",
|
564
|
-
notify_testers: false
|
598
|
+
release_notes: "this is a store release"
|
565
599
|
)'
|
566
600
|
]
|
567
601
|
end
|
602
|
+
|
603
|
+
class Options
|
604
|
+
include Singleton
|
605
|
+
|
606
|
+
def self.strict_mode(mode)
|
607
|
+
@strict = mode.to_s == "true"
|
608
|
+
UI.message("Enabled strict mode") if @strict
|
609
|
+
end
|
610
|
+
|
611
|
+
def self.strict
|
612
|
+
@strict
|
613
|
+
end
|
614
|
+
end
|
615
|
+
|
616
|
+
def self.optional_error(message)
|
617
|
+
if Options.strict
|
618
|
+
UI.user_error!(message)
|
619
|
+
else
|
620
|
+
UI.important(message)
|
621
|
+
UI.important("The current operation might fail, trying anyway...")
|
622
|
+
end
|
623
|
+
end
|
568
624
|
end
|
569
625
|
end
|
570
626
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane-plugin-appcenter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Microsoft Corporation
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-11-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 2.
|
33
|
+
version: 2.96.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 2.
|
40
|
+
version: 2.96.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: pry
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec_junit_formatter
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: rubocop
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|