run method

  1. @override
Future<void> run()
override

Implementation

@override
Future<void> run() async {
  if (args.isEmpty) {
    stderr.writeln(
      'Error: Missing part to increment. Use "major", "minor", or "patch".',
    );
    exit(1);
  }
  final partToIncrement = args[0];
  final parts = ['major', 'minor', 'patch'];
  if (!parts.contains(partToIncrement)) {
    stderr.writeln(
      'Error: Invalid part "$partToIncrement". Use "major", "minor", or "patch".',
    );
    exit(1);
  }

  final content = await BaseCommand.getPubspecContent;
  if (content == null) {
    exit(1);
  }

  final currentVersion = CommandService.getVersion(content.content);
  if (currentVersion == null) {
    stderr.writeln('Error: Could not find a valid version to increment.');
    return;
    }

  var newVersionParts = currentVersion['versionName']!
      .split('.')
      .map(int.parse)
      .toList();
  if (partToIncrement == 'major') {
    newVersionParts[0]++;
    newVersionParts[1] = 0;
    newVersionParts[2] = 0;
  } else if (partToIncrement == 'minor') {
    newVersionParts[1]++;
    newVersionParts[2] = 0;
  } else if (partToIncrement == 'patch') {
    newVersionParts[2]++;
  }

  final newVersionName = newVersionParts.join('.');
  final newBuildNumber =
      (int.tryParse(currentVersion['buildNumber'] ?? '0') ?? 0) + 1;

  CommandService.updateVersion(newVersionName, newBuildNumber.toString());
}