#!/usr/bin/env node
const fs = require('fs');
const path = require('path');
const { program } = require('commander');
program
.version('1.0.0')
.description('Truncate data in datasets for temporary use.')
.requiredOption('-i, --input <file>', 'Path to the input dataset file (CSV or JSON).')
.option('-o, --output <file>', 'Path to the output dataset file.')
.option('-n, --numRows <number>', 'Number of rows to keep.', parseInt)
.parse(process.argv);
const options = program.opts();
function truncateDataset(inputFile, outputFile, numRows) {
try {
let data;
let fileType = path.extname(inputFile).toLowerCase();
if (fileType === '.csv') {
data = fs.readFileSync(inputFile, 'utf8').split('\n');
data = data.slice(0, numRows); // Truncate CSV
} else if (fileType === '.json') {
data = JSON.parse(fs.readFileSync(inputFile, 'utf8'));
if (Array.isArray(data)) {
data = data.slice(0, numRows); // Truncate JSON array
} else {
console.error("JSON file does not contain an array.");
process.exit(1);
}
} else {
console.error('Unsupported file type. Only CSV and JSON are supported.');
process.exit(1);
}
if (outputFile) {
if (fileType === '.csv') {
fs.writeFileSync(outputFile, data.join('\n'));
} else if (fileType === '.json') {
fs.writeFileSync(outputFile, JSON.stringify(data, null, 2)); //Pretty print JSON
}
} else {
console.log(JSON.stringify(data, null, 2)); //Output to console if no output file is specified
}
} catch (err) {
console.error('Error:', err.message);
process.exit(1);
}
}
truncateDataset(options.input, options.output, options.numRows);
Add your comment