diff --git a/packages/shorebird_cli/lib/src/commands/patch_new/android_patcher.dart b/packages/shorebird_cli/lib/src/commands/patch_new/android_patcher.dart index f9d370e9..e678f323 100644 --- a/packages/shorebird_cli/lib/src/commands/patch_new/android_patcher.dart +++ b/packages/shorebird_cli/lib/src/commands/patch_new/android_patcher.dart @@ -7,10 +7,10 @@ import 'package:shorebird_cli/src/artifact_builder.dart'; import 'package:shorebird_cli/src/artifact_manager.dart'; import 'package:shorebird_cli/src/code_push_client_wrapper.dart'; import 'package:shorebird_cli/src/commands/patch_new/patcher.dart'; -import 'package:shorebird_cli/src/commands/release_new/release_type.dart'; import 'package:shorebird_cli/src/doctor.dart'; import 'package:shorebird_cli/src/logger.dart'; import 'package:shorebird_cli/src/platform/platform.dart'; +import 'package:shorebird_cli/src/release_type.dart'; import 'package:shorebird_cli/src/shorebird_android_artifacts.dart'; import 'package:shorebird_cli/src/shorebird_flutter.dart'; import 'package:shorebird_cli/src/shorebird_validator.dart'; diff --git a/packages/shorebird_cli/lib/src/commands/patch_new/patch_new_command.dart b/packages/shorebird_cli/lib/src/commands/patch_new/patch_new_command.dart index b98be585..8fe7b782 100644 --- a/packages/shorebird_cli/lib/src/commands/patch_new/patch_new_command.dart +++ b/packages/shorebird_cli/lib/src/commands/patch_new/patch_new_command.dart @@ -5,9 +5,7 @@ import 'package:shorebird_cli/src/archive_analysis/archive_differ.dart'; import 'package:shorebird_cli/src/artifact_manager.dart'; import 'package:shorebird_cli/src/code_push_client_wrapper.dart'; import 'package:shorebird_cli/src/command.dart'; -import 'package:shorebird_cli/src/commands/patch_new/android_patcher.dart'; -import 'package:shorebird_cli/src/commands/patch_new/patcher.dart'; -import 'package:shorebird_cli/src/commands/release_new/release_type.dart'; +import 'package:shorebird_cli/src/commands/patch_new/patch_new.dart'; import 'package:shorebird_cli/src/config/config.dart'; import 'package:shorebird_cli/src/deployment_track.dart'; import 'package:shorebird_cli/src/extensions/arg_results.dart'; @@ -16,6 +14,7 @@ import 'package:shorebird_cli/src/logger.dart'; import 'package:shorebird_cli/src/patch_diff_checker.dart'; import 'package:shorebird_cli/src/platform.dart'; import 'package:shorebird_cli/src/platform/platform.dart'; +import 'package:shorebird_cli/src/release_type.dart'; import 'package:shorebird_cli/src/shorebird_env.dart'; import 'package:shorebird_cli/src/third_party/flutter_tools/lib/flutter_tools.dart'; import 'package:shorebird_cli/src/version.dart'; @@ -102,14 +101,8 @@ NOTE: this is ${styleBold.wrap('not')} recommended. Asset changes cannot be incl @override Future run() async { - final patcherFutures = (results['platform'] as List) - .map( - (platformArg) => ReleaseType.values.firstWhere( - (target) => target.cliName == platformArg, - ), - ) - .map(_resolvePatcher) - .map(createPatch); + final patcherFutures = + results.releaseTypes.map(_resolvePatcher).map(createPatch); for (final patcherFuture in patcherFutures) { await patcherFuture; diff --git a/packages/shorebird_cli/lib/src/commands/patch_new/patcher.dart b/packages/shorebird_cli/lib/src/commands/patch_new/patcher.dart index 5110d1c2..31eb452f 100644 --- a/packages/shorebird_cli/lib/src/commands/patch_new/patcher.dart +++ b/packages/shorebird_cli/lib/src/commands/patch_new/patcher.dart @@ -3,8 +3,8 @@ import 'dart:io'; import 'package:args/args.dart'; import 'package:shorebird_cli/src/archive_analysis/archive_differ.dart'; import 'package:shorebird_cli/src/code_push_client_wrapper.dart'; -import 'package:shorebird_cli/src/commands/release_new/release_type.dart'; import 'package:shorebird_cli/src/platform/platform.dart'; +import 'package:shorebird_cli/src/release_type.dart'; import 'package:shorebird_cli/src/shorebird_env.dart'; /// {@template patcher} diff --git a/packages/shorebird_cli/lib/src/commands/release_new/aar_releaser.dart b/packages/shorebird_cli/lib/src/commands/release_new/aar_releaser.dart index c333f149..e2603a34 100644 --- a/packages/shorebird_cli/lib/src/commands/release_new/aar_releaser.dart +++ b/packages/shorebird_cli/lib/src/commands/release_new/aar_releaser.dart @@ -4,11 +4,11 @@ import 'package:mason_logger/mason_logger.dart'; import 'package:path/path.dart' as p; import 'package:shorebird_cli/src/artifact_builder.dart'; import 'package:shorebird_cli/src/code_push_client_wrapper.dart'; -import 'package:shorebird_cli/src/commands/release_new/release_type.dart'; import 'package:shorebird_cli/src/commands/release_new/releaser.dart'; import 'package:shorebird_cli/src/logger.dart'; import 'package:shorebird_cli/src/platform.dart'; import 'package:shorebird_cli/src/platform/platform.dart'; +import 'package:shorebird_cli/src/release_type.dart'; import 'package:shorebird_cli/src/shorebird_android_artifacts.dart'; import 'package:shorebird_cli/src/shorebird_env.dart'; import 'package:shorebird_cli/src/shorebird_flutter.dart'; diff --git a/packages/shorebird_cli/lib/src/commands/release_new/android_releaser.dart b/packages/shorebird_cli/lib/src/commands/release_new/android_releaser.dart index f78f2964..c4f05c0f 100644 --- a/packages/shorebird_cli/lib/src/commands/release_new/android_releaser.dart +++ b/packages/shorebird_cli/lib/src/commands/release_new/android_releaser.dart @@ -1,7 +1,7 @@ import 'package:mason_logger/mason_logger.dart'; import 'package:shorebird_cli/src/artifact_builder.dart'; import 'package:shorebird_cli/src/code_push_client_wrapper.dart'; -import 'package:shorebird_cli/src/commands/release_new/release_type.dart'; +import 'package:shorebird_cli/src/release_type.dart'; import 'package:shorebird_cli/src/commands/release_new/releaser.dart'; import 'package:shorebird_cli/src/doctor.dart'; import 'package:shorebird_cli/src/logger.dart'; diff --git a/packages/shorebird_cli/lib/src/commands/release_new/ios_framework_releaser.dart b/packages/shorebird_cli/lib/src/commands/release_new/ios_framework_releaser.dart index ddf0e315..6bac65fa 100644 --- a/packages/shorebird_cli/lib/src/commands/release_new/ios_framework_releaser.dart +++ b/packages/shorebird_cli/lib/src/commands/release_new/ios_framework_releaser.dart @@ -5,7 +5,7 @@ import 'package:platform/platform.dart'; import 'package:shorebird_cli/src/artifact_builder.dart'; import 'package:shorebird_cli/src/artifact_manager.dart'; import 'package:shorebird_cli/src/code_push_client_wrapper.dart'; -import 'package:shorebird_cli/src/commands/release_new/release_type.dart'; +import 'package:shorebird_cli/src/release_type.dart'; import 'package:shorebird_cli/src/commands/release_new/releaser.dart'; import 'package:shorebird_cli/src/doctor.dart'; import 'package:shorebird_cli/src/executables/xcodebuild.dart'; diff --git a/packages/shorebird_cli/lib/src/commands/release_new/ios_releaser.dart b/packages/shorebird_cli/lib/src/commands/release_new/ios_releaser.dart index b3925a38..dc7334d0 100644 --- a/packages/shorebird_cli/lib/src/commands/release_new/ios_releaser.dart +++ b/packages/shorebird_cli/lib/src/commands/release_new/ios_releaser.dart @@ -5,13 +5,13 @@ import 'package:shorebird_cli/src/archive_analysis/plist.dart'; import 'package:shorebird_cli/src/artifact_builder.dart'; import 'package:shorebird_cli/src/artifact_manager.dart'; import 'package:shorebird_cli/src/code_push_client_wrapper.dart'; -import 'package:shorebird_cli/src/commands/release_new/release_type.dart'; import 'package:shorebird_cli/src/commands/release_new/releaser.dart'; import 'package:shorebird_cli/src/doctor.dart'; import 'package:shorebird_cli/src/executables/xcodebuild.dart'; import 'package:shorebird_cli/src/logger.dart'; import 'package:shorebird_cli/src/platform.dart'; import 'package:shorebird_cli/src/platform/ios.dart'; +import 'package:shorebird_cli/src/release_type.dart'; import 'package:shorebird_cli/src/shorebird_flutter.dart'; import 'package:shorebird_cli/src/shorebird_validator.dart'; import 'package:shorebird_cli/src/third_party/flutter_tools/lib/flutter_tools.dart'; diff --git a/packages/shorebird_cli/lib/src/commands/release_new/release_new_command.dart b/packages/shorebird_cli/lib/src/commands/release_new/release_new_command.dart index 3865f051..fb217d7c 100644 --- a/packages/shorebird_cli/lib/src/commands/release_new/release_new_command.dart +++ b/packages/shorebird_cli/lib/src/commands/release_new/release_new_command.dart @@ -6,7 +6,7 @@ import 'package:scoped/scoped.dart'; import 'package:shorebird_cli/src/code_push_client_wrapper.dart'; import 'package:shorebird_cli/src/command.dart'; import 'package:shorebird_cli/src/commands/release_new/release_new.dart'; -import 'package:shorebird_cli/src/commands/release_new/release_type.dart'; +import 'package:shorebird_cli/src/release_type.dart'; import 'package:shorebird_cli/src/config/config.dart'; import 'package:shorebird_cli/src/extensions/arg_results.dart'; import 'package:shorebird_cli/src/logger.dart'; @@ -107,14 +107,8 @@ of the iOS app that is using this module.''', @override Future run() async { - final releaserFutures = (results['platform'] as List) - .map( - (platformArg) => ReleaseType.values.firstWhere( - (target) => target.cliName == platformArg, - ), - ) - .map(_resolveReleaser) - .map(createRelease); + final releaserFutures = + results.releaseTypes.map(_resolveReleaser).map(createRelease); for (final future in releaserFutures) { await future; diff --git a/packages/shorebird_cli/lib/src/commands/release_new/releaser.dart b/packages/shorebird_cli/lib/src/commands/release_new/releaser.dart index e2a7bd9b..7fe8027a 100644 --- a/packages/shorebird_cli/lib/src/commands/release_new/releaser.dart +++ b/packages/shorebird_cli/lib/src/commands/release_new/releaser.dart @@ -1,7 +1,7 @@ import 'dart:io'; import 'package:args/args.dart'; -import 'package:shorebird_cli/src/commands/release_new/release_type.dart'; +import 'package:shorebird_cli/src/release_type.dart'; import 'package:shorebird_cli/src/shorebird_env.dart'; import 'package:shorebird_code_push_client/shorebird_code_push_client.dart'; import 'package:shorebird_code_push_protocol/shorebird_code_push_protocol.dart'; diff --git a/packages/shorebird_cli/lib/src/commands/release_new/release_type.dart b/packages/shorebird_cli/lib/src/release_type.dart similarity index 60% rename from packages/shorebird_cli/lib/src/commands/release_new/release_type.dart rename to packages/shorebird_cli/lib/src/release_type.dart index f86d0810..c705ad80 100644 --- a/packages/shorebird_cli/lib/src/commands/release_new/release_type.dart +++ b/packages/shorebird_cli/lib/src/release_type.dart @@ -1,3 +1,5 @@ +import 'package:args/args.dart'; +import 'package:collection/collection.dart'; import 'package:shorebird_code_push_client/shorebird_code_push_client.dart'; /// The different types of shorebird releases that can be created. @@ -42,3 +44,24 @@ enum ReleaseType { } } } + +extension ReleaseTypeArgs on ArgResults { + Iterable get releaseTypes { + final List releaseTypeCliNames; + if (wasParsed('platform')) { + releaseTypeCliNames = this['platform'] as List; + } else { + final platformCliName = arguments.first; + if (ReleaseType.values + .none((target) => target.cliName == platformCliName)) { + throw ArgumentError('Invalid platform: $platformCliName'); + } + releaseTypeCliNames = [platformCliName]; + } + + return releaseTypeCliNames.map( + (cliName) => + ReleaseType.values.firstWhere((target) => target.cliName == cliName), + ); + } +} diff --git a/packages/shorebird_cli/test/src/commands/patch_new/patch_new_command_test.dart b/packages/shorebird_cli/test/src/commands/patch_new/patch_new_command_test.dart index 6b5a7a0f..576ab8f9 100644 --- a/packages/shorebird_cli/test/src/commands/patch_new/patch_new_command_test.dart +++ b/packages/shorebird_cli/test/src/commands/patch_new/patch_new_command_test.dart @@ -8,12 +8,12 @@ import 'package:shorebird_cli/src/artifact_builder.dart'; import 'package:shorebird_cli/src/artifact_manager.dart'; import 'package:shorebird_cli/src/code_push_client_wrapper.dart'; import 'package:shorebird_cli/src/commands/patch_new/patch_new.dart'; -import 'package:shorebird_cli/src/commands/release_new/release_type.dart'; import 'package:shorebird_cli/src/config/config.dart'; import 'package:shorebird_cli/src/deployment_track.dart'; import 'package:shorebird_cli/src/logger.dart'; import 'package:shorebird_cli/src/patch_diff_checker.dart'; import 'package:shorebird_cli/src/platform/platform.dart'; +import 'package:shorebird_cli/src/release_type.dart'; import 'package:shorebird_cli/src/shorebird_env.dart'; import 'package:shorebird_cli/src/shorebird_flutter.dart'; import 'package:shorebird_cli/src/third_party/flutter_tools/lib/flutter_tools.dart'; diff --git a/packages/shorebird_cli/test/src/commands/release_new/aar_releaser_test.dart b/packages/shorebird_cli/test/src/commands/release_new/aar_releaser_test.dart index 4b21a68c..3497528a 100644 --- a/packages/shorebird_cli/test/src/commands/release_new/aar_releaser_test.dart +++ b/packages/shorebird_cli/test/src/commands/release_new/aar_releaser_test.dart @@ -7,7 +7,7 @@ import 'package:scoped/scoped.dart'; import 'package:shorebird_cli/src/artifact_builder.dart'; import 'package:shorebird_cli/src/code_push_client_wrapper.dart'; import 'package:shorebird_cli/src/commands/release_new/aar_releaser.dart'; -import 'package:shorebird_cli/src/commands/release_new/release_type.dart'; +import 'package:shorebird_cli/src/release_type.dart'; import 'package:shorebird_cli/src/engine_config.dart'; import 'package:shorebird_cli/src/logger.dart'; import 'package:shorebird_cli/src/os/operating_system_interface.dart'; diff --git a/packages/shorebird_cli/test/src/commands/release_new/android_releaser_test.dart b/packages/shorebird_cli/test/src/commands/release_new/android_releaser_test.dart index 71cb2aa6..76e59d77 100644 --- a/packages/shorebird_cli/test/src/commands/release_new/android_releaser_test.dart +++ b/packages/shorebird_cli/test/src/commands/release_new/android_releaser_test.dart @@ -7,13 +7,13 @@ import 'package:scoped/scoped.dart'; import 'package:shorebird_cli/src/artifact_builder.dart'; import 'package:shorebird_cli/src/code_push_client_wrapper.dart'; import 'package:shorebird_cli/src/commands/release_new/android_releaser.dart'; -import 'package:shorebird_cli/src/commands/release_new/release_type.dart'; import 'package:shorebird_cli/src/doctor.dart'; import 'package:shorebird_cli/src/engine_config.dart'; import 'package:shorebird_cli/src/logger.dart'; import 'package:shorebird_cli/src/os/operating_system_interface.dart'; import 'package:shorebird_cli/src/platform.dart'; import 'package:shorebird_cli/src/platform/platform.dart'; +import 'package:shorebird_cli/src/release_type.dart'; import 'package:shorebird_cli/src/shorebird_android_artifacts.dart'; import 'package:shorebird_cli/src/shorebird_env.dart'; import 'package:shorebird_cli/src/shorebird_flutter.dart'; diff --git a/packages/shorebird_cli/test/src/commands/release_new/ios_framework_releaser_test.dart b/packages/shorebird_cli/test/src/commands/release_new/ios_framework_releaser_test.dart index f2625bf4..d79d6bf3 100644 --- a/packages/shorebird_cli/test/src/commands/release_new/ios_framework_releaser_test.dart +++ b/packages/shorebird_cli/test/src/commands/release_new/ios_framework_releaser_test.dart @@ -8,12 +8,12 @@ import 'package:shorebird_cli/src/artifact_builder.dart'; import 'package:shorebird_cli/src/artifact_manager.dart'; import 'package:shorebird_cli/src/code_push_client_wrapper.dart'; import 'package:shorebird_cli/src/commands/release_new/ios_framework_releaser.dart'; -import 'package:shorebird_cli/src/commands/release_new/release_type.dart'; import 'package:shorebird_cli/src/doctor.dart'; import 'package:shorebird_cli/src/executables/executables.dart'; import 'package:shorebird_cli/src/logger.dart'; import 'package:shorebird_cli/src/os/operating_system_interface.dart'; import 'package:shorebird_cli/src/platform.dart'; +import 'package:shorebird_cli/src/release_type.dart'; import 'package:shorebird_cli/src/shorebird_env.dart'; import 'package:shorebird_cli/src/shorebird_flutter.dart'; import 'package:shorebird_cli/src/shorebird_process.dart'; diff --git a/packages/shorebird_cli/test/src/commands/release_new/ios_releaser_test.dart b/packages/shorebird_cli/test/src/commands/release_new/ios_releaser_test.dart index 519919d6..4641d12c 100644 --- a/packages/shorebird_cli/test/src/commands/release_new/ios_releaser_test.dart +++ b/packages/shorebird_cli/test/src/commands/release_new/ios_releaser_test.dart @@ -8,13 +8,13 @@ import 'package:shorebird_cli/src/artifact_builder.dart'; import 'package:shorebird_cli/src/artifact_manager.dart'; import 'package:shorebird_cli/src/code_push_client_wrapper.dart'; import 'package:shorebird_cli/src/commands/release_new/ios_releaser.dart'; -import 'package:shorebird_cli/src/commands/release_new/release_type.dart'; import 'package:shorebird_cli/src/doctor.dart'; import 'package:shorebird_cli/src/executables/xcodebuild.dart'; import 'package:shorebird_cli/src/logger.dart'; import 'package:shorebird_cli/src/os/operating_system_interface.dart'; import 'package:shorebird_cli/src/platform.dart'; import 'package:shorebird_cli/src/platform/ios.dart'; +import 'package:shorebird_cli/src/release_type.dart'; import 'package:shorebird_cli/src/shorebird_env.dart'; import 'package:shorebird_cli/src/shorebird_flutter.dart'; import 'package:shorebird_cli/src/shorebird_process.dart'; diff --git a/packages/shorebird_cli/test/src/commands/release_new/release_new_command_test.dart b/packages/shorebird_cli/test/src/commands/release_new/release_new_command_test.dart index e2eea157..e61224d2 100644 --- a/packages/shorebird_cli/test/src/commands/release_new/release_new_command_test.dart +++ b/packages/shorebird_cli/test/src/commands/release_new/release_new_command_test.dart @@ -4,7 +4,7 @@ import 'package:mocktail/mocktail.dart'; import 'package:scoped/scoped.dart'; import 'package:shorebird_cli/src/code_push_client_wrapper.dart'; import 'package:shorebird_cli/src/commands/release_new/release_new.dart'; -import 'package:shorebird_cli/src/commands/release_new/release_type.dart'; +import 'package:shorebird_cli/src/release_type.dart'; import 'package:shorebird_cli/src/config/config.dart'; import 'package:shorebird_cli/src/logger.dart'; import 'package:shorebird_cli/src/shorebird_env.dart'; diff --git a/packages/shorebird_cli/test/src/commands/release_new/release_type_test.dart b/packages/shorebird_cli/test/src/commands/release_new/release_type_test.dart deleted file mode 100644 index b4b14ffb..00000000 --- a/packages/shorebird_cli/test/src/commands/release_new/release_type_test.dart +++ /dev/null @@ -1,21 +0,0 @@ -import 'package:shorebird_cli/src/commands/release_new/release_type.dart'; -import 'package:shorebird_code_push_client/shorebird_code_push_client.dart'; -import 'package:test/test.dart'; - -void main() { - group(ReleaseType, () { - test('cliName', () { - expect(ReleaseType.android.cliName, 'android'); - expect(ReleaseType.ios.cliName, 'ios'); - expect(ReleaseType.iosFramework.cliName, 'ios-framework'); - expect(ReleaseType.aar.cliName, 'aar'); - }); - - test('releasePlatform', () { - expect(ReleaseType.android.releasePlatform, ReleasePlatform.android); - expect(ReleaseType.ios.releasePlatform, ReleasePlatform.ios); - expect(ReleaseType.iosFramework.releasePlatform, ReleasePlatform.ios); - expect(ReleaseType.aar.releasePlatform, ReleasePlatform.android); - }); - }); -} diff --git a/packages/shorebird_cli/test/src/commands/release_new/releaser_test.dart b/packages/shorebird_cli/test/src/commands/release_new/releaser_test.dart index 6d16fc31..8b59c682 100644 --- a/packages/shorebird_cli/test/src/commands/release_new/releaser_test.dart +++ b/packages/shorebird_cli/test/src/commands/release_new/releaser_test.dart @@ -1,7 +1,7 @@ import 'dart:io'; -import 'package:shorebird_cli/src/commands/release_new/release_type.dart'; import 'package:shorebird_cli/src/commands/release_new/releaser.dart'; +import 'package:shorebird_cli/src/release_type.dart'; import 'package:shorebird_code_push_protocol/src/models/release.dart'; import 'package:shorebird_code_push_protocol/src/models/update_release_metadata.dart'; import 'package:test/test.dart'; diff --git a/packages/shorebird_cli/test/src/release_type_test.dart b/packages/shorebird_cli/test/src/release_type_test.dart new file mode 100644 index 00000000..a462b679 --- /dev/null +++ b/packages/shorebird_cli/test/src/release_type_test.dart @@ -0,0 +1,82 @@ +import 'package:args/args.dart'; +import 'package:shorebird_cli/src/release_type.dart'; +import 'package:shorebird_code_push_client/shorebird_code_push_client.dart'; +import 'package:test/test.dart'; + +void main() { + group(ReleaseType, () { + test('cliName', () { + expect(ReleaseType.android.cliName, 'android'); + expect(ReleaseType.ios.cliName, 'ios'); + expect(ReleaseType.iosFramework.cliName, 'ios-framework'); + expect(ReleaseType.aar.cliName, 'aar'); + }); + + test('releasePlatform', () { + expect(ReleaseType.android.releasePlatform, ReleasePlatform.android); + expect(ReleaseType.ios.releasePlatform, ReleasePlatform.ios); + expect(ReleaseType.iosFramework.releasePlatform, ReleasePlatform.ios); + expect(ReleaseType.aar.releasePlatform, ReleasePlatform.android); + }); + + group('releaseTypes', () { + late ArgParser parser; + setUp(() { + parser = ArgParser() + ..addMultiOption( + 'platform', + allowed: ReleaseType.values.map((e) => e.cliName), + ); + }); + + group('when the platform argument is provided', () { + test('parses the release types', () { + expect( + parser.parse(['--platform', 'android']).releaseTypes.toList(), + [ReleaseType.android], + ); + expect( + parser.parse(['--platform', 'ios']).releaseTypes.toList(), + [ReleaseType.ios], + ); + expect( + parser.parse(['--platform', 'ios-framework']).releaseTypes.toList(), + [ReleaseType.iosFramework], + ); + expect( + parser.parse(['--platform', 'aar']).releaseTypes.toList(), + [ReleaseType.aar], + ); + }); + + group('when the platform is provided as a raw arg', () { + test('throws an ArgumentError if the platform is invalid', () { + expect( + () => parser.parse(['foo']).releaseTypes.toList(), + throwsArgumentError, + ); + }); + + test('parses the release types', () { + expect( + parser.parse(['android', 'foo']).releaseTypes.toList(), + [ReleaseType.android], + ); + expect( + parser.parse(['ios', 'foo']).releaseTypes.toList(), + [ReleaseType.ios], + ); + expect( + parser.parse(['ios-framework', 'foo']).releaseTypes.toList(), + [ReleaseType.iosFramework], + ); + expect( + parser.parse(['aar', 'foo']).releaseTypes.toList(), + [ReleaseType.aar], + ); + }); + }); + }); + }); + }); +}