cloneProject static method
Implementation
static Future<void> cloneProject() async {
final projectName = await AppUtils.readLine(
"project name (snake_case e.g. my_app)",
);
if (projectName.trim().isEmpty) {
stdout.writeln("Project name is required");
return;
}
stdout.write("Enter package name (e.g. com.company.myapp): ");
final packageName = stdin.readLineSync()?.trim() ?? '';
if (packageName.trim().isEmpty) {
stdout.writeln("Package name is required");
return;
}
stdout.writeln("Choose template branch:");
stdout.writeln(" 1) $_branchMain (default)");
stdout.writeln(" 2) $_branchMvvm");
stdout.write("Enter choice (1 or 2) [1]: ");
final branchChoice = stdin.readLineSync()?.trim() ?? '';
final String branch;
if (branchChoice == '2') {
branch = _branchMvvm;
} else {
if (branchChoice.isNotEmpty && branchChoice != '1') {
stdout.writeln("Invalid choice; using $_branchMain.");
}
branch = _branchMain;
}
stdout.writeln(" ====== Cloning project (branch: $branch) ====== ");
final command = await Process.run("git", [
"clone",
"--branch",
branch,
_repoUrl,
projectName,
]);
if (command.exitCode != 0) {
stdout.writeln(command.stderr);
return;
}
_removeGitFolder(projectName);
stdout.writeln(" ====== Configuring project ====== ");
await _replaceInAllFiles(projectName, projectName, packageName);
stdout.writeln(
" ====== Project '$projectName' created successfully! ====== ",
);
stdout.writeln(" ====== Run: cd $projectName && flutter pub get ====== ");
}