split-args.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.nodeFlagsWithValue = void 0;
  6. exports.splitArgs = splitArgs;
  7. const _nodeFlagsWithValue = require("../data/node-flags-with-value.json");
  8. const nodeFlagsWithValue = exports.nodeFlagsWithValue = new Set(_nodeFlagsWithValue);
  9. const nodeFlagsWithNoFile = new Set(["-p", "--print", "-e", "--eval"]);
  10. function splitArgs(argv, extraOptionsWithValue) {
  11. const programArgs = [];
  12. let explicitSeparator = false;
  13. let ignoreFileName = null;
  14. let i = 0;
  15. for (; i < argv.length; i++) {
  16. const arg = argv[i];
  17. if (arg === "-") break;
  18. if (arg === "--") {
  19. explicitSeparator = true;
  20. i++;
  21. break;
  22. }
  23. if (arg[0] === "-") {
  24. programArgs.push(arg);
  25. if ((nodeFlagsWithValue.has(arg) || extraOptionsWithValue != null && extraOptionsWithValue.has(arg)) && i < argv.length - 1 && argv[i + 1][0] !== "-") {
  26. i++;
  27. programArgs.push(argv[i]);
  28. }
  29. if (nodeFlagsWithNoFile.has(arg)) ignoreFileName != null ? ignoreFileName : ignoreFileName = true;
  30. } else if (i === 0 && arg === "inspect") {
  31. programArgs.push(arg);
  32. ignoreFileName = false;
  33. } else {
  34. break;
  35. }
  36. }
  37. const fileName = !ignoreFileName && i < argv.length ? argv[i++] : null;
  38. const userArgs = argv.slice(i);
  39. return {
  40. programArgs,
  41. fileName,
  42. userArgs,
  43. explicitSeparator
  44. };
  45. }
  46. //# sourceMappingURL=split-args.js.map