appblocks
Version:
A lightweight javascript library for building micro apps for the front-end.
68 lines (57 loc) • 2.16 kB
JavaScript
;
// Minimal CLI wrapper for scripts/benchmark.js
// Usage:
// node scripts/benchmark-run.js <scenarioModule> --runs=10 [--init-baseline]
// The scenario module should export an async function named `scenario` or a default async function.
const path = require('path');
function parseArgs(argv) {
const args = { runs: 10, initBaseline: false, module: null };
for (let i = 2; i < argv.length; i++) {
const a = argv[i];
if (a.startsWith('--runs=')) args.runs = parseInt(a.split('=')[1], 10) || 10;
else if (a === '--init-baseline') args.initBaseline = true;
else if (!args.module) args.module = a;
}
return args;
}
async function main() {
const args = parseArgs(process.argv);
if (!args.module) {
console.error('Usage: node scripts/benchmark-run.js <scenarioModule> --runs=10 [--init-baseline]');
process.exit(2);
}
const benchmark = require('./benchmark');
if (args.initBaseline) {
try {
await benchmark.initBaseline();
console.log('Initialized baseline (if none existed).');
} catch (err) {
console.error('Failed to init baseline:', err && err.message ? err.message : err);
}
}
// Resolve module path relative to repo root (script location)
const modulePath = path.isAbsolute(args.module) ? args.module : path.resolve(process.cwd(), args.module);
let mod;
try {
mod = require(modulePath);
} catch (err) {
console.error('Failed to load scenario module at', modulePath, err && err.message ? err.message : err);
process.exit(3);
}
const scenario = (typeof mod === 'function') ? mod : (mod && (mod.scenario || mod.default));
if (typeof scenario !== 'function') {
console.error('Scenario module must export an async function (default or named `scenario`).');
process.exit(4);
}
try {
const result = await benchmark.runBenchmark(scenario, args.runs);
console.log('\nBenchmark report:\n');
console.log(result.report);
process.exit(0);
} catch (err) {
console.error('Benchmark failed:', err && err.message ? err.message : err);
process.exit(1);
}
}
if (require.main === module) main();