coustomParser method

  1. @override
void coustomParser(
  1. ArgResults argResults
)
override

Implementation

@override
void coustomParser(ArgResults argResults) async {
  final pw = await PROJECT_PATH;
  //
  logger.i('1). Creating l10n.yaml...');
  final file = File(pw.join('l10n.yaml'))..createIfNotExists();
  await file.writeAsString('''
# arb文件目录
arb-dir: lib/l10n

# 模板文件
template-arb-file: intl_zh.arb

# 转义语法
use-escaping: true

# 避免空检查
nullable-getter: false

# 修改输出目录
output-dir: lib/generated/intl

# 输出文件名称
''');

  //
  logger.i('2). Creating l10n directory...');
  final l10nDirectory = Directory(pw.join('lib', 'l10n'))..createIfNotExists();
  final intl = File(l10nDirectory.path.join('intl_zh.arb'))..createIfNotExists();
  await intl.writeAsString('''
{
"@@locale": "zh",
"@@default-locale": "zh"
}
''');

  logger.i('3). Enable generate...');
  final yamlFile = await getYamlFile();
  final editor = YamlEditor(yamlFile.readAsStringSync());
  final flutterNode = editor.parseAt(['flutter', 'generate'], orElse: () => YamlScalar.wrap(null));
  if (flutterNode.value == null) {
    editor.update(['flutter', 'generate'], true);
    await yamlFile.writeAsString(editor.toString());
  }
  await runExecutableArguments('flutter', ['gen-l10n']);

  logger.i('4). Add dependencies...');
  await runExecutableArguments('dart', [
    'pub',
    'add',
    'tenon_flutter',
    'tenon_flutter_libs',
    'intl',
    'json_annotation',
    'riverpod_annotation',
    'dev:build_runner',
    'dev:json_serializable',
    'dev:riverpod_generator',
  ]);

  logger.i('project initialization finished.');
}