main function

void main(
  1. List<String> arguments
)

Implementation

void main(List<String> arguments) async {
  final params = Params().get(arguments);
  final projectName = params["name"];
  final dirs = params["dir"] != null
      ? params["dir"]?.split(",")
      : ["lib", "scripts", "test", "integration_test", ".vscode"];
  if (projectName == null) return;

  String newProjectName = ReCase(projectName).snakeCase;

  // 删除项目文件夹
  await deleteTargetDirectory();

  final isOk = await editPubspecFile(projectName: newProjectName);
  if (!isOk) return;

  // 重新创建项目
  await createProject(projectName: newProjectName);

  // macos Info.plist
  await addNewKeyValueToPlist(
    "macos/Runner/Info.plist",
    "FLTEnableImpeller",
    "true",
  );

  // iOS Info.plist
  await addNewKeyValueToPlist(
    "ios/Runner/Info.plist",
    "FLTEnableImpeller",
    "true",
  );

  // 批量替换import项目名称
  // 批量替换import项目名称 - 并行方式
  if (dirs != null) {
    await Future.wait(
      dirs.map((dir) async {
        return traverseAndReplaceText("./$dir", oldProjectName, newProjectName);
      }),
    );
  }
}