Refactor file listing in list_files.js to return structured objects for easier machine parsing and consistent output. Update sorting mechanism to ensure files are sorted by path before returning.

This commit is contained in:
sebseb7
2025-08-12 04:19:25 +00:00
parent 60e288454c
commit ff3accdc76

View File

@@ -160,7 +160,8 @@ export async function run(args) {
if (!includeHidden && fileName.startsWith(".")) { if (!includeHidden && fileName.startsWith(".")) {
return { cwd, files: [] }; return { cwd, files: [] };
} }
return { cwd, files: JSON.stringify([[fileName, 'f', stat.size]]) }; // Return structured object for easier machine parsing
return { cwd, files: [{ path: fileName, type: 'f', size: stat.size }] };
} }
// Handle non-directory case // Handle non-directory case
@@ -171,9 +172,13 @@ export async function run(args) {
// Handle directory case // Handle directory case
try { try {
const files = await listEntriesRecursive(resolvedBase, chrootResolved, depth === -1 ? Infinity : depth, includeHidden); const files = await listEntriesRecursive(resolvedBase, chrootResolved, depth === -1 ? Infinity : depth, includeHidden);
// Map to structured objects and sort by path for consistent output
const mapped = files
.map(([p, t, s]) => ({ path: p, type: t, size: s }))
.sort((a, b) => a.path.localeCompare(b.path));
return { return {
cwd, cwd,
files: files.sort((a, b) => a[0].localeCompare(b[0])), // Sort for consistent output files: mapped,
}; };
} catch (err) { } catch (err) {
return { err: `Failed to list files: ${err?.message || String(err)}` }; return { err: `Failed to list files: ${err?.message || String(err)}` };