runGitInit function

Future<GitInitOutcome> runGitInit({
  1. required String canonicalDestination,
  2. required ProcessRunner processRunner,
})

Implementation

Future<GitInitOutcome> runGitInit({
  required String canonicalDestination,
  required ProcessRunner processRunner,
}) async {
  final existing = await processRunner.run('git', const [
    'rev-parse',
    '--is-inside-work-tree',
  ], workingDirectory: canonicalDestination);
  if (existing.exitCode == 0 && existing.stdout.toString().trim() == 'true') {
    return const GitInitOutcome(
      skipped: true,
      ranInit: false,
      failed: false,
      output: 'Already a repository; git init skipped.',
    );
  }

  final result = await processRunner.run('git', const [
    'init',
  ], workingDirectory: canonicalDestination);
  return GitInitOutcome(
    skipped: false,
    ranInit: true,
    failed: result.exitCode != 0,
    exitCode: result.exitCode,
    output: '${result.stdout}${result.stderr}',
  );
}