mirror of
https://github.com/callstack/agent-device.git
synced 2026-09-14 20:06:34 +08:00
fa1c1d55da
* refactor: localize command surface modules * refactor: localize command runtime modules * refactor: tighten localized command exports * refactor: address command localization review * refactor: deepen batch command policy * refactor: split provider progress model * refactor: collapse command client facets * refactor: run progress metrics as TypeScript * refactor: remove obsolete command shims * fix: update localized snapshot output import * fix: preserve debug command localization
107 lines
3.2 KiB
JavaScript
107 lines
3.2 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
import {
|
|
buildIntegrationProgressFailures,
|
|
buildIntegrationProgressModel,
|
|
formatPercent,
|
|
} from './integration-progress-model.ts';
|
|
|
|
const CHECK_MODE = process.argv.includes('--check');
|
|
const progress = buildIntegrationProgressModel({ root: process.cwd() });
|
|
|
|
console.log('Provider-backed integration status');
|
|
console.log('');
|
|
console.log('| Measure | Value |');
|
|
console.log('| --- | ---: |');
|
|
for (const [name, value] of progress.summaryRows) {
|
|
console.log(`| ${name} | ${value} |`);
|
|
}
|
|
|
|
if (progress.mockHeavyHandlerRows.length > 0) {
|
|
console.log('');
|
|
console.log('Mock-heavy handler unit tests');
|
|
console.log('');
|
|
console.log('| Tests | LOC | File |');
|
|
console.log('| ---: | ---: | --- |');
|
|
for (const file of progress.mockHeavyHandlerRows) {
|
|
console.log(`| ${file.tests} | ${file.lines} | ${file.file} |`);
|
|
}
|
|
}
|
|
|
|
if (progress.missingPublicCommands.length > 0) {
|
|
console.log('');
|
|
console.log('Public command coverage gaps');
|
|
console.log('');
|
|
console.log('| Command |');
|
|
console.log('| --- |');
|
|
for (const command of progress.missingPublicCommands) {
|
|
console.log(`| ${command.command} |`);
|
|
}
|
|
}
|
|
|
|
if (progress.missingFlagRows.length > 0) {
|
|
console.log('');
|
|
console.log('Device-observable workflow flag coverage gaps');
|
|
console.log('');
|
|
console.log('| Flag | Intended integration coverage |');
|
|
console.log('| --- | --- |');
|
|
for (const flag of progress.missingFlagRows) {
|
|
console.log(`| ${flag.key} | ${flag.reason} |`);
|
|
}
|
|
}
|
|
|
|
if (progress.excludedFlagRows.length > 0) {
|
|
console.log('');
|
|
console.log('Public CLI flag coverage outside provider-backed integration');
|
|
console.log('');
|
|
console.log('| Bucket | Flags | Coverage owner |');
|
|
console.log('| --- | --- | --- |');
|
|
for (const group of progress.excludedFlagRows) {
|
|
console.log(`| ${group.name} | ${group.keys.join(', ')} | ${group.owner} |`);
|
|
}
|
|
}
|
|
|
|
if (progress.unclassifiedFlagKeys.length > 0) {
|
|
console.log('');
|
|
console.log('Unclassified public CLI flags');
|
|
console.log('');
|
|
console.log('| Flag |');
|
|
console.log('| --- |');
|
|
for (const key of progress.unclassifiedFlagKeys) {
|
|
console.log(`| ${key} |`);
|
|
}
|
|
}
|
|
|
|
if (progress.providerPressureRows.length > 0) {
|
|
console.log('');
|
|
console.log('Provider transcript pressure');
|
|
console.log('');
|
|
console.log('| Contract surface | References | Files |');
|
|
console.log('| --- | ---: | ---: |');
|
|
for (const pressure of progress.providerPressureRows) {
|
|
console.log(`| ${pressure.name} | ${pressure.references} | ${pressure.files} |`);
|
|
}
|
|
}
|
|
|
|
if (progress.lowCoverageFiles.length > 0) {
|
|
console.log('');
|
|
console.log('Lowest covered implementation files');
|
|
console.log('');
|
|
console.log('| Missing statements | Statements | Statement coverage | File |');
|
|
console.log('| ---: | ---: | ---: | --- |');
|
|
for (const file of progress.lowCoverageFiles) {
|
|
console.log(
|
|
`| ${file.missingStatements} | ${file.statementTotal} | ${formatPercent(file.statementPercent)} | ${file.file} |`,
|
|
);
|
|
}
|
|
}
|
|
|
|
if (CHECK_MODE) {
|
|
const failures = buildIntegrationProgressFailures(progress);
|
|
if (failures.length > 0) {
|
|
console.error('');
|
|
console.error(`provider-backed integration progress check failed: ${failures.join('; ')}`);
|
|
process.exit(1);
|
|
}
|
|
}
|