1. /**
  2. * Extracts CLI arguments and configures the application.
  3. * @param {string[]} args - Array of command-line arguments.
  4. */
  5. function loadConfigFromArgs(args) {
  6. // Default configuration values
  7. const config = {
  8. logLevel: 'info',
  9. dataFilePath: 'default_data.txt',
  10. threshold: 0.5,
  11. verbose: false
  12. };
  13. // Parse command-line arguments
  14. for (let i = 0; i < args.length; i++) {
  15. const arg = args[i];
  16. if (arg === '-l' || arg === '--log-level') {
  17. if (i + 1 < args.length) {
  18. config.logLevel = args[i + 1].toLowerCase();
  19. i++; // Skip the value
  20. } else {
  21. console.error('Error: -l/--log-level requires a value.');
  22. return; // Exit if missing value
  23. }
  24. } else if (arg === '-d' || arg === '--data-file') {
  25. if (i + 1 < args.length) {
  26. config.dataFilePath = args[i + 1];
  27. i++; // Skip the value
  28. } else {
  29. console.error('Error: -d/--data-file requires a value.');
  30. return; // Exit if missing value
  31. }
  32. } else if (arg === '-t' || arg === '--threshold') {
  33. if (i + 1 < args.length) {
  34. config.threshold = parseFloat(args[i + 1]);
  35. i++; // Skip the value
  36. } else {
  37. console.error('Error: -t/--threshold requires a value.');
  38. return;
  39. }
  40. } else if (arg === '-v' || arg === '--verbose') {
  41. config.verbose = true;
  42. } else {
  43. console.warn(`Unknown argument: ${arg}`);
  44. }
  45. }
  46. // Log the configuration
  47. console.log('Loaded configuration:', config);
  48. return config;
  49. }
  50. // Example usage (assuming 'process.argv' is available)
  51. // const args = process.argv.slice(2); // Remove Node.js executable path and script path
  52. // const config = loadConfigFromArgs(args);

Add your comment