push method

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

Implementation

@override
Future<void> push() async {
  final commitsToPush = await _hasCommitsToPush();
  final tagsToPush = await _hasTagsToPush();

  if (!commitsToPush && !tagsToPush) {
    logger.info('Nothing to push: no new commits or tags.');
    return;
  }

  // Push commits and tags separately to avoid pushing tags when commits fail.
  if (commitsToPush) {
    final result = await _runGitOrThrow(['push'], failureMessage: 'Failed to push commits.');
    logger.info(result.stdout.toString());
  }

  if (tagsToPush) {
    final result =
    await _runGitOrThrow(['push', '--tags'], failureMessage: 'Failed to push tags.');
    logger.info(result.stdout.toString());
  }

  logger.info('Push completed.');
}