coustomParser method

  1. @override
void coustomParser(
  1. 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');
}