1. #!/usr/bin/env node
  2. const fs = require('fs');
  3. const { program } = require('commander');
  4. const path = require('path');
  5. program
  6. .version('1.0.0')
  7. .description('Loads text files for an experiment.')
  8. .option('-i, --input <dir>', 'Input directory containing text files', './data')
  9. .option('-o, --output <dir>', 'Output directory to store loaded data', './loaded_data')
  10. .parse(process.argv);
  11. const options = program.opts();
  12. const inputDir = options.input;
  13. const outputDir = options.output;
  14. async function loadTextFiles(inputDir, outputDir) {
  15. try {
  16. // Ensure output directory exists
  17. if (!fs.existsSync(outputDir)) {
  18. fs.mkdirSync(outputDir, { recursive: true });
  19. }
  20. const files = fs.readdirSync(inputDir);
  21. for (const file of files) {
  22. const filePath = path.join(inputDir, file);
  23. const stat = fs.statSync(filePath);
  24. if (stat.isFile() && file.endsWith('.txt')) {
  25. try {
  26. const content = fs.readFileSync(filePath, 'utf8');
  27. const fileName = path.basename(file, '.txt'); //remove extension
  28. const outputFilePath = path.join(outputDir, `${fileName}.json`); //save as json
  29. fs.writeFileSync(outputFilePath, JSON.stringify(content), 'utf8');
  30. console.log(`Loaded ${file} and saved to ${outputFilePath}`);
  31. } catch (err) {
  32. console.error(`Error processing file ${file}:`, err);
  33. }
  34. }
  35. }
  36. } catch (err) {
  37. console.error('Error reading input directory:', err);
  38. }
  39. }
  40. loadTextFiles(inputDir, outputDir);

Add your comment