fastlane-plugin-appcenter 1.5.0 → 1.6.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 +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
|