#!/usr/bin/env node
const { program } = require('commander');
const axios = require('axios');
const fs = require('fs/promises');
const path = require('path');
program
.version('1.0.0')
.description('CLI for batch processing API endpoints');
program
.command('process')
.description('Process a batch file')
.option('-f, --file <file>', 'Path to the batch file')
.option('-u, --url <url>', 'API endpoint URL')
.option('-d, --data <data>', 'Data to send in the request body (JSON string)')
.action(async (options) => {
const { file, url, data } = options;
if (!file) {
console.error('Error: --file is required');
program.help();
return;
}
try {
const batchData = await fs.readFile(file, 'utf8');
const batchItems = JSON.parse(batchData);
if (!Array.isArray(batchItems)) {
console.error('Error: Batch file must contain a JSON array');
return;
}
for (const item of batchItems) {
try {
const response = await axios.post(url, item, {
headers: {
'Content-Type': 'application/json',
},
});
console.log(`Processed item: ${item}. Status: ${response.status}`);
} catch (error) {
console.error(`Error processing item: ${item}. Error: ${error.message}`);
}
}
} catch (error) {
console.error(`Error reading or parsing batch file: ${error.message}`);
}
});
program.parse(process.argv);
Add your comment