nextStepsText function
The project-type-specific "Next steps" text printed after init writes
appflight.json. Pure move out of init_command.dart (#30) — same
wording, same logic, now returning a String instead of calling
AppLogger directly — which is what makes it unit-testable for the
first time, the way AppsCommand.renderList and KeysCommand .createdMessage already are.
Implementation
String nextStepsText({
required String projectType,
String? defaultFlavor,
required int appCount,
required List<String> flavorKeys,
}) {
final flavor = defaultFlavor ?? (appCount == 1 ? null : flavorKeys.first);
final lines = <String>['Next steps:', ' 1. appflight login'];
if (projectType == 'react-native') {
final gradleTask = flavor != null
? 'assemble${_capitalize(flavor)}Release'
: 'assembleRelease';
lines.add(' 2. cd android && ./gradlew $gradleTask');
} else if (projectType == 'kotlin') {
final gradleTask = flavor != null
? 'assemble${_capitalize(flavor)}Release'
: 'assembleRelease';
lines.add(' 2. ./gradlew $gradleTask');
} else {
final buildArg = flavor != null ? ' --flavor $flavor' : '';
lines.add(' 2. flutter build apk$buildArg --release');
}
lines
.add(' 3. appflight upload${flavor != null ? ' --flavor $flavor' : ''}');
return lines.join('\n');
}