getFileStatus function

Future<GitFileStatus> getFileStatus({
  1. String? cwd,
})

Get file status (tracked vs untracked).

Implementation

Future<GitFileStatus> getFileStatus({String? cwd}) async {
  final result = await _runGit([
    '--no-optional-locks',
    'status',
    '--porcelain',
  ], cwd: cwd);

  final tracked = <String>[];
  final untracked = <String>[];

  for (final line in result.stdout.trim().split('\n')) {
    if (line.isEmpty) continue;
    final status = line.substring(0, 2);
    final filename = line.substring(2).trim();
    if (status == '??') {
      untracked.add(filename);
    } else if (filename.isNotEmpty) {
      tracked.add(filename);
    }
  }

  return GitFileStatus(tracked: tracked, untracked: untracked);
}