refactor(shorebird_cli): add releaseTypes ArgResults extension, move release_type.dart (#2033)
This commit is contained in:
@@ -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';
|
||||
|
||||
@@ -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<int> run() async {
|
||||
final patcherFutures = (results['platform'] as List<String>)
|
||||
.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;
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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<int> run() async {
|
||||
final releaserFutures = (results['platform'] as List<String>)
|
||||
.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;
|
||||
|
||||
@@ -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';
|
||||
|
||||
+23
@@ -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<ReleaseType> get releaseTypes {
|
||||
final List<String> releaseTypeCliNames;
|
||||
if (wasParsed('platform')) {
|
||||
releaseTypeCliNames = this['platform'] as List<String>;
|
||||
} 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),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
+1
-1
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
});
|
||||
}
|
||||
@@ -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';
|
||||
|
||||
@@ -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],
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user