createIconsFromArguments function
Implementation
Future<void> createIconsFromArguments(List<String> arguments) async {
final ArgParser parser = ArgParser(allowTrailingOptions: true);
parser
..addFlag(helpFlag, abbr: 'h', help: 'Usage help', negatable: false)
// Make default null to differentiate when it is explicitly set
..addOption(
fileOption,
abbr: 'f',
help: 'Path to config file',
defaultsTo: defaultConfigFile,
)
..addFlag(verboseFlag, abbr: 'v', help: 'Verbose output', defaultsTo: false)
..addOption(
prefixOption,
abbr: 'p',
help: 'Generates config in the given path. Only Supports web platform',
defaultsTo: '.',
);
final ArgResults argResults = parser.parse(arguments);
// creating logger based on -v flag
final logger = FLILogger(argResults[verboseFlag]);
logger.verbose('Received args ${argResults.arguments}');
if (argResults[helpFlag]) {
stdout.writeln('Generates icons for iOS and Android');
stdout.writeln(parser.usage);
exit(0);
}
// Flavors management
final flavors = getFlavors();
final hasFlavors = flavors.isNotEmpty;
final String prefixPath = argResults[prefixOption];
// Create icons
if (!hasFlavors) {
// Load configs from given file(defaults to ./flutter_launcher_icons.yaml) or from ./pubspec.yaml
final flutterLauncherIconsConfigs =
loadConfigFileFromArgResults(argResults);
if (flutterLauncherIconsConfigs == null) {
throw NoConfigFoundException(
'No configuration found in $defaultConfigFile or in ${constants.pubspecFilePath}. '
'In case file exists in different directory use --file option',
);
}
try {
await createIconsFromConfig(
flutterLauncherIconsConfigs,
logger,
prefixPath,
);
print('\n✓ Successfully generated launcher icons');
} catch (e) {
stderr.writeln('\n✕ Could not generate launcher icons');
stderr.writeln(e);
exit(2);
}
} else {
try {
for (String flavor in flavors) {
print('\nFlavor: $flavor');
final flutterLauncherIconsConfigs =
Config.loadConfigFromFlavor(flavor, prefixPath);
if (flutterLauncherIconsConfigs == null) {
throw NoConfigFoundException(
'No configuration found for $flavor flavor.',
);
}
await createIconsFromConfig(
flutterLauncherIconsConfigs,
logger,
prefixPath,
flavor,
);
}
print('\n✓ Successfully generated launcher icons for flavors');
} catch (e) {
stderr.writeln('\n✕ Could not generate launcher icons for flavors');
stderr.writeln(e);
exit(2);
}
}
}