stashList method

Future<List<GitStash>> stashList({
  1. String? workDir,
})

Lists all stash entries.

Implementation

Future<List<GitStash>> stashList({String? workDir}) async {
  final result = await _runGit([
    'stash',
    'list',
    '--format=%gd|%gs|%aI',
  ], workDir: workDir ?? defaultWorkDir);
  final output = (result.stdout as String).trim();
  if (output.isEmpty) return [];

  final stashes = <GitStash>[];
  for (final line in LineSplitter.split(output)) {
    final parts = line.split('|');
    if (parts.isEmpty) continue;

    final indexMatch = RegExp(r'stash@\{(\d+)\}').firstMatch(parts[0]);
    final index = indexMatch != null
        ? int.tryParse(indexMatch.group(1)!) ?? 0
        : stashes.length;

    stashes.add(
      GitStash(
        index: index,
        message: parts.length > 1 ? parts[1] : '',
        date: parts.length > 2 ? DateTime.tryParse(parts[2]) : null,
      ),
    );
  }

  return stashes;
}