feat(cli): implement output abstraction layer

This commit is contained in:
Mohamed Boudra
2026-01-28 22:57:15 +07:00
parent aa5663a854
commit a7f39f79ba
12 changed files with 916 additions and 2 deletions
+27
View File
@@ -0,0 +1,27 @@
/**
* Quiet renderer for CLI output.
*
* Outputs only ID fields, one per line. Useful for scripting and pipelines.
*/
import type { AnyCommandResult, OutputOptions } from './types.js'
/** Extract ID from item using schema definition */
function getId<T>(item: T, idField: keyof T | ((item: T) => string)): string {
if (typeof idField === 'function') {
return idField(item)
}
return String(item[idField])
}
/** Render command result in quiet mode (IDs only) */
export function renderQuiet<T>(
result: AnyCommandResult<T>,
_options: OutputOptions
): string {
if (result.type === 'single') {
return getId(result.data, result.schema.idField)
} else {
return result.data.map((item) => getId(item, result.schema.idField)).join('\n')
}
}