nextStepsText function

String nextStepsText({
  1. required String projectType,
  2. String? defaultFlavor,
  3. required int appCount,
  4. required List<String> flavorKeys,
})

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');
}