coustomParser method
void
coustomParser(
- ArgResults argResults
)
override
Implementation
@override
void coustomParser(ArgResults argResults) async {
final assetsPath = argResults['path'];
final outputDir = argResults['output'];
final ignorePaths = (argResults['ignore'] as String?)?.split(',') ?? [];
projectPath = await PROJECT_PATH;
final rootDir = Directory(projectPath.join('assets'));
if (!rootDir.existsSync()) rootDir.createSync(recursive: true);
final map = <Directory, Map<String, String>>{};
if (assetsPath == null) {
rootDir.listSync().whereType<Directory>().where((e) => !ignorePaths.contains(e.path.baseName)).forEach((e) => map.putIfAbsent(e, () => {}));
} else {
final dir = Directory(rootDir.path.join(assetsPath));
if (!dir.existsSync()) dir.createSync(recursive: true);
map.putIfAbsent(dir, () => {});
}
// 分析文件夹内容
map.entries.forEach(_parseAssetsFile);
// 创建并写入文件
logger.i('generate file...');
final generateFile = File(projectPath.join('lib/$outputDir/assets.g.dart'));
if (!generateFile.existsSync()) generateFile.createSync(recursive: true);
final list = await _writeFile(generateFile, map);
// 检查资源是否注册到pubspec.yaml文件
await registerAssets(list);
logger.i('\rProcess finished with exit code 0');
}