All files / src/commands status.ts

53.33% Statements 8/15
61.53% Branches 8/13
100% Functions 1/1
53.33% Lines 8/15

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31                1x 1x 1x     1x       1x 1x 1x 1x                    
import { formatMessageLine } from "../index.js";
import type { CliDeps, RuntimeEnv } from "../index.js";
 
export async function statusCommand(
	opts: { limit: string; lookback: string; json?: boolean },
	deps: CliDeps,
	runtime: RuntimeEnv,
) {
	const limit = Number.parseInt(opts.limit, 10);
	const lookbackMinutes = Number.parseInt(opts.lookback, 10);
	Iif (Number.isNaN(limit) || limit <= 0 || limit > 200) {
		throw new Error("limit must be between 1 and 200");
	}
	Iif (Number.isNaN(lookbackMinutes) || lookbackMinutes <= 0) {
		throw new Error("lookback must be > 0 minutes");
	}
 
	const messages = await deps.listRecentMessages(lookbackMinutes, limit);
	Eif (opts.json) {
		runtime.log(JSON.stringify(messages, null, 2));
		return;
	}
	if (messages.length === 0) {
		runtime.log("No messages found in the requested window.");
		return;
	}
	for (const m of messages) {
		runtime.log(formatMessageLine(m));
	}
}