readPubspec function
Implementation
Future<PackageInfo?> readPubspec(Directory path) async => switch (loadYaml(
await File(
'${path.path}${Platform.pathSeparator}pubspec.yaml',
).readAsString(),
)) {
(final YamlMap doc) => switch ((
doc['name'],
doc['version'],
doc['description'],
doc['topics'],
doc['dev_dependencies'],
doc['app'],
doc['platforms'],
)) {
(
final String name,
final String version,
final String? description,
final YamlList? topics,
final YamlMap deps,
final YamlMap app,
final Object? platforms,
) =>
switch ((
deps['riddance_env'],
app['name'],
app['domain'],
app['orientation'],
app['unsupported'],
app['permissions'],
)) {
(
final String myVersion,
final String appName,
final String domain,
final String? orientation,
final Object? unsupported,
final Object? permissions,
) =>
PackageInfo(
name,
appName,
version,
domain,
description,
topics?.whereType<String>().toList() ?? [],
orientation == 'portrait',
switch ((platforms, unsupported)) {
(final YamlList platforms, final YamlList unsupported) => [
...platforms.whereType<String>().where(
(element) => !unsupported.contains(element),
),
],
(final YamlMap platforms, final YamlList unsupported) => [
...platforms.keys.whereType<String>().where(
(element) => !unsupported.contains(element),
),
],
(final YamlList platforms, final String unsupported) => [
...platforms.whereType<String>().where(
(element) => element != unsupported,
),
],
(final YamlMap platforms, final String unsupported) => [
...platforms.keys.whereType<String>().where(
(element) => element != unsupported,
),
],
(null, final YamlList unsupported) => [
..._allPlatforms.where(
(element) => !unsupported.contains(element),
),
],
(null, final String unsupported) => [
..._allPlatforms.where((element) => element != unsupported),
],
(final YamlList platforms, null) => [
...platforms.whereType<String>(),
],
(final YamlMap platforms, null) => [
...platforms.keys.whereType<String>(),
],
_ => _allPlatforms,
},
switch (permissions) {
(final YamlList permissions) => [
...permissions.whereType<String>(),
],
_ => [],
},
myVersion,
),
_ => null,
},
_ => null,
},
_ => null,
};