get method

  1. @override
Future<bool> get({
  1. required Directory directory,
  2. required GgLog ggLog,
  3. bool? automerge,
  4. bool? local,
  5. String? message,
})

Runs can-merge, then runs merge-git if allowed

Implementation

@override
Future<bool> get({
  required Directory directory,
  required GgLog ggLog,
  bool? automerge,
  bool? local,
  String? message,
}) async {
  automerge ??= _automergeOption;
  local ??= _localOption;
  message ??= _messageOption;

  if (local && automerge) {
    throw Exception('Automerge not supported for local merges.');
  }

  if (!local && message != null) {
    ggLog('Warning: --message is ignored for remote merges.');
  }

  final ok = await _canMerge.get(
    directory: directory,
    ggLog: ggLog,
  );
  if (!ok) {
    throw Exception('Not allowed to merge.');
  }

  if (local) {
    await _localMerge.get(
      directory: directory,
      ggLog: ggLog,
      message: message,
    );
    ggLog('✅ Local merge operation successfully completed.');
  } else {
    await _mergeGit.get(
      directory: directory,
      ggLog: ggLog,
      automerge: automerge,
    );
    ggLog('✅ Merge operation successfully started.');
  }
  return true;
}