Spaces:
Runtime error
Runtime error
Aryan Mishra
feat: initial commit - Multilingual ABSA project setup with 6 phases, 36 requirements
a6b96c2 | ; | |
| /** | |
| * Graphify command router β CLI subcommand dispatcher for `gsd-tools graphify`. | |
| * | |
| * ADR-959 (phase 4d-impl-2) pilot: first real capability command cutover. | |
| * Extracted from the hardcoded `case 'graphify':` arm in gsd-tools.cjs. | |
| * Behaviour is preserved byte-for-behaviour from the prior inline case; | |
| * the dispatch path now flows: default β dispatchCapabilityCommand β | |
| * require(graphify-command-router.cjs) β routeGraphifyCommand. | |
| * | |
| * Router signature: { args, cwd, raw, error } β identical to the 12 existing | |
| * host routers. No new handler/arg convention; the capability registry | |
| * discovers this router by name. | |
| * | |
| * Arg indexing (preserved exactly from the original case): | |
| * args[0] = 'graphify' (family β matched by dispatchCapabilityCommand) | |
| * args[1] = subcommand (query | status | diff | build) | |
| * args[2] = term (query) | 'snapshot' (build snapshot) | |
| * args.indexOf('--budget') + 1 = budget value | |
| * | |
| * Test seam: pass `_graphify` in the options object to inject a recording mock | |
| * instead of the real graphify module. The `_`-prefix follows the repo's | |
| * established seam convention (see other routers). Production callers omit it. | |
| */ | |
| // eslint-disable-next-line @typescript-eslint/no-require-imports | |
| const graphify = require("./graphify.cjs"); | |
| // eslint-disable-next-line @typescript-eslint/no-require-imports | |
| const io = require("./io.cjs"); | |
| const { output, ERROR_REASON } = io; | |
| // βββ Implementation βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| function routeGraphifyCommand({ args, cwd, raw, error, _graphify }) { | |
| const subcommand = args[1]; | |
| const g = _graphify ?? graphify; | |
| if (subcommand === 'query') { | |
| const term = args[2]; | |
| if (!term) { | |
| error('Usage: gsd-tools graphify query <term>', ERROR_REASON.USAGE); | |
| return; | |
| } | |
| const budgetIdx = args.indexOf('--budget'); | |
| let budget = null; | |
| if (budgetIdx !== -1) { | |
| const rawBudget = args[budgetIdx + 1]; | |
| if (rawBudget === undefined || Number.isNaN(parseInt(rawBudget, 10))) { | |
| error('Usage: gsd-tools graphify query <term> [--budget <N>]', ERROR_REASON.USAGE); | |
| return; | |
| } | |
| budget = parseInt(rawBudget, 10); | |
| } | |
| output(g.graphifyQuery(cwd, term, { budget }), raw); | |
| } | |
| else if (subcommand === 'status') { | |
| output(g.graphifyStatus(cwd), raw); | |
| } | |
| else if (subcommand === 'diff') { | |
| output(g.graphifyDiff(cwd), raw); | |
| } | |
| else if (subcommand === 'build') { | |
| if (args[2] === 'snapshot') { | |
| output(g.writeSnapshot(cwd), raw); | |
| } | |
| else { | |
| output(g.graphifyBuild(cwd), raw); | |
| } | |
| } | |
| else { | |
| error('Unknown graphify subcommand. Available: build, query, status, diff', ERROR_REASON.SDK_UNKNOWN_COMMAND); | |
| } | |
| } | |
| module.exports = { | |
| routeGraphifyCommand, | |
| }; | |