main function
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);
}),
);
}
}