#!/usr/bin/env node
const { program } = require('commander');
const { spawn } = require('child_process');
const tasks = [];
program
.version('1.0.0')
.description('CLI for diagnostics tasks');
program
.argument('<task>', 'Task to execute')
.parse(process.argv);
function runTask(task) {
// Basic sanity check: check if the task exists
if (!fs.existsSync(task)) {
console.error(`Error: Task '${task}' does not exist.`);
return;
}
tasks.push({ task, startTime: Date.now() });
console.log(`Queued task: ${task}`);
// Execute the task
const process = spawn(task);
process.stdout.on('data', (data) => {
console.log(`Task ${task} stdout: ${data}`);
});
process.stderr.on('data', (data) => {
console.error(`Task ${task} stderr: ${data}`);
});
process.on('close', (code) => {
const endTime = Date.now();
const duration = (endTime - tasks[0].startTime) / 1000;
console.log(`Task ${task} completed with code ${code} in ${duration}s`);
});
process.on('error', (err) => {
console.error(`Task ${task} failed: ${err}`);
});
}
// Process the queued tasks
if (tasks.length > 0) {
tasks.forEach(taskData => {
runTask(taskData.task);
});
}
Add your comment