fixIssue static method

Future<bool> fixIssue(
  1. IssueModel issue, {
  2. bool dryRun = false,
  3. bool backup = false,
})

Fix a specific issue

Implementation

static Future<bool> fixIssue(
  IssueModel issue, {
  bool dryRun = false,
  bool backup = false,
}) async {
  if (!FileSystemUtils.fileExists(issue.filePath)) {
    return false;
  }

  if (backup) {
    await FileSystemUtils.backupFile(issue.filePath);
  }

  final fileContent = await FileSystemUtils.readFile(issue.filePath);
  String updatedContent = fileContent;

  if (issue.description.contains('Gradle version is outdated')) {
    updatedContent = _updateGradleVersion(
      fileContent,
      issue.recommendedValue,
    );
  } else if (issue.description.contains(
    'Android Gradle Plugin version is outdated',
  )) {
    updatedContent = _updateAgpVersion(fileContent, issue.recommendedValue);
  } else if (issue.description.contains('compileSdkVersion')) {
    updatedContent = _updateSdkVersion(
      fileContent,
      'compileSdk',
      issue.recommendedValue,
    );
  } else if (issue.description.contains('minSdkVersion')) {
    updatedContent = _updateSdkVersion(
      fileContent,
      'minSdk',
      issue.recommendedValue,
    );
  } else if (issue.description.contains('targetSdkVersion')) {
    updatedContent = _updateSdkVersion(
      fileContent,
      'targetSdk',
      issue.recommendedValue,
    );
  } else if (issue.description.contains('jvmTarget')) {
    updatedContent = _updateJvmTarget(fileContent, issue.recommendedValue);
  } else {
    return false;
  }

  if (updatedContent != fileContent) {
    if (!dryRun) {
      await FileSystemUtils.writeFile(issue.filePath, updatedContent);
    }
    return true;
  }

  return false;
}