multilingual-absa / .opencode /gsd-core /bin /lib /audit-command-router.cjs
Aryan Mishra
feat: initial commit - Multilingual ABSA project setup with 6 phases, 36 requirements
a6b96c2
Raw
History Blame Contribute Delete
3.06 kB
'use strict';
/**
* Audit command routers β€” CLI dispatchers for `gsd-tools audit-uat` and
* `gsd-tools audit-open`.
*
* ADR-959 (phase 4d-impl-3): audit command family cutover.
* Extracted from the hardcoded `case 'audit-uat':` and `case 'audit-open':`
* arms in gsd-tools.cjs. Behaviour is preserved byte-for-behaviour from the
* prior inline cases; the dispatch path now flows:
* default β†’ dispatchCapabilityCommand β†’
* require(audit-command-router.cjs) β†’ routeAuditUat | routeAuditOpen.
*
* Router signatures: { args, cwd, raw, error } β€” identical to the existing
* host routers. No new handler/arg convention; the capability registry
* discovers these routers by name.
*
* Test seam: pass `_uat` / `_audit` / `_core` in the options object to inject
* recording mocks instead of the real modules. The `_`-prefix follows the
* repo's established seam convention (see graphify-command-router.cts).
* Production callers omit them.
*
* Lazy requires: uat.cjs and audit.cjs are required INSIDE each route function
* so the unneeded module is never loaded (preserves equivalence with the old
* inline case arms which each required only their own module).
*/
// eslint-disable-next-line @typescript-eslint/no-require-imports
const io = require("./io.cjs");
// ─── routeAuditUat ────────────────────────────────────────────────────────────
function routeAuditUat({ args, cwd, raw, error, _uat }) {
// Suppress unused-variable warnings for args/error β€” this command has no
// subcommands and passes raw through directly to the uat module.
void args;
void error;
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-unsafe-assignment
const u = _uat ?? require('./uat.cjs');
u.cmdAuditUat(cwd, raw);
}
// ─── routeAuditOpen ──────────────────────────────────────────────────────────
function routeAuditOpen({ args, cwd, raw, error, _audit, _core }) {
// Suppress unused-variable warning for error β€” audit-open has no subcommand
// dispatch that would call error(); only flag parsing occurs here.
void error;
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-unsafe-assignment
const a = _audit ?? require('./audit.cjs');
const c = _core ?? io;
const wantJson = args.includes('--json');
const result = a.auditOpenArtifacts(cwd);
if (wantJson) {
// io.output JSON-stringifies its first arg; pass the object directly.
c.output(result, raw);
}
else {
// Human-readable report must bypass JSON encoding β€” use the rawValue
// form (third arg) which io.output emits verbatim.
c.output(null, true, a.formatAuditReport(result));
}
}
module.exports = {
routeAuditUat,
routeAuditOpen,
};