doctor method

Future<void> doctor()

Validates the application's signing configuration.

Implementation

Future<void> doctor() async {
  LoggerService.section('Signing Doctor');

  final keyProperties = File('android/key.properties');

  if (!keyProperties.existsSync()) {
    LoggerService.error('android/key.properties missing');

    return;
  }

  LoggerService.success('key.properties found');

  final content = await keyProperties.readAsString();

  final storeFileMatch = RegExp(r'storeFile=(.*)').firstMatch(content);

  if (storeFileMatch == null) {
    LoggerService.error('storeFile missing in key.properties');

    return;
  }

  final storeFile = storeFileMatch.group(1)!.trim();

  final keystorePath = 'android/app/$storeFile';

  if (!File(keystorePath).existsSync()) {
    LoggerService.error('Keystore missing: $keystorePath');

    return;
  }

  LoggerService.success('Keystore found');

  final gradleKts = File('android/app/build.gradle.kts');

  final gradleGroovy = File('android/app/build.gradle');

  if (!gradleKts.existsSync() && !gradleGroovy.existsSync()) {
    LoggerService.error('Gradle build file not found');

    return;
  }

  LoggerService.success('Gradle file found');

  LoggerService.blank();

  LoggerService.success('Signing setup looks valid.');
}