coustomParser method

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

Implementation

@override
void coustomParser(ArgResults argResults) async {
  // 创建build_config.g.dart
  final generateFile = File(join(await PROJECT_PATH, 'lib/generated/build.g.dart'));
  if (!generateFile.existsSync()) generateFile.createSync(recursive: true);
  final contents = generateFile.readAsLinesSync();
  // 判断是否要插入license
  if (!contents.contains(license)) {
    contents.insertAll(0, [license, '']);
  }

  final flavor = argResults['flavor'];
  if (flavor != null) _addOrReplace(contents, 'buildFlavor', flavor);

  _addOrReplace(contents, 'buildBranch', await gitBranch());
  _addOrReplace(contents, 'buildNumber', await gitShort());
  _addOrReplace(contents, 'buildDate', await gitDate());

  final yamlFile = await getYamlFile();
  final editor = YamlEditor(yamlFile.readAsStringSync());
  final version = editor.parseAt(['version'], orElse: () => YamlScalar.wrap('1.0.0+1')).value as String;

  final versionName = version.substring(0, version.contains('+') ? version.indexOf('+') : null);
  final versionCode = await gitCommitCount();

  _addOrReplace(contents, 'versionName', versionName);
  _addOrReplace(contents, 'versionCode', versionCode);

  await generateFile.writeAsString(contents.join('\n'), flush: true);

  editor.update(['version'], YamlScalar.wrap('$versionName${version.contains('+') ? '+$versionCode' : ''}'));
  await yamlFile.writeAsString(editor.toString());

  logger.i('new version $versionName${version.contains('+') ? '+$versionCode' : ''} generated.');

  await runPubGet();
}