Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ Future<void> mainCommand(List<String> args) async {
help: 'What Flame version you would like to use.',
allowed: flameVersions.versions,
);
create.addOption(
create.addMultiOption(
'extra-packages',
help: 'Which packages to use',
allowed: packages.keys.map((e) => e.name).toList(),
Expand Down
25 changes: 23 additions & 2 deletions lib/utils.dart
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,22 @@ String getOption(
return value;
}

List<String> _unwrap(dynamic value) {
if (value == null) {
return [];
} else if (value is String) {
return [value];
} else if (value is List<String>) {
return value;
} else if (value is List) {
return value.map((e) => e.toString()).toList();
} else {
throw ArgumentError(
'Invalid type for value (${value.runtimeType}): $value',
);
}
}

List<String> getMultiOption(
ArgResults results,
String name,
Expand All @@ -85,7 +101,7 @@ List<String> getMultiOption(
List<String> startingOptions = const [],
String? desc,
}) {
var value = results[name] as List<String>? ?? [];
var value = _unwrap(results[name]);
if (!isInteractive) {
if (value.isEmpty) {
if (startingOptions.isNotEmpty) {
Expand All @@ -94,6 +110,8 @@ List<String> getMultiOption(
print('Missing parameter $name is required.');
exit(1);
}
} else {
return value;
}
}
if (value.any((e) => !options.contains(e))) {
Expand All @@ -103,7 +121,10 @@ List<String> getMultiOption(
if (desc != null) {
stdout.write(ansi.darkGray.wrap('\n$desc\u{1B}[1A\r'));
}
value = cbx(message, options, startingOptions);
final selectedOptions = value.isEmpty
? startingOptions
: value;
value = cbx(message, options, selectedOptions);
if (desc != null) {
stdout.write('\r\u{1B}[K');
}
Expand Down