list method

  1. @override
Future<List<WsEntry>> list(
  1. String absPath
)
override

Lists the entries of directory absPath.

Implementation

@override
Future<List<WsEntry>> list(String absPath) async {
  // `-Ap` lists dotfiles (minus . / ..) and appends `/` to directory names.
  final r = await _run('ls -Ap -- ${_q(absPath)}');
  if (r.exitCode != 0) {
    throw WorkspaceException('cannot list $absPath: ${r.stderrText.trim()}');
  }
  final out = <WsEntry>[];
  for (final raw in const LineSplitter().convert(r.stdoutText)) {
    final name = raw.trimRight();
    if (name.isEmpty) continue;
    final isDir = name.endsWith('/');
    out.add(
      WsEntry(
        isDir ? name.substring(0, name.length - 1) : name,
        isDir: isDir,
      ),
    );
  }
  return out;
}