parseConfig.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = parseConfig;
  6. var _fs = require('fs');
  7. var _fs2 = _interopRequireDefault(_fs);
  8. var _exists = require('../util/exists');
  9. var _parseArgv = require('./parseArgv');
  10. var _parseArgv2 = _interopRequireDefault(_parseArgv);
  11. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  12. var defaultConfig = 'mocha-webpack.opts';
  13. function handleMissingConfig(config) {
  14. if (config) {
  15. throw new Error('Options file \'' + config + '\' not found');
  16. }
  17. return {};
  18. }
  19. var createStripSurroundingChar = function createStripSurroundingChar(c) {
  20. return function (s) {
  21. if (s.indexOf(c) === 0 && s.lastIndexOf(c) === s.length - 1 && s.indexOf(c) !== s.lastIndexOf(c)) {
  22. return s.substring(1, s.length - 1);
  23. }
  24. return s;
  25. };
  26. };
  27. var stripSingleQuotes = createStripSurroundingChar("'");
  28. var stripDoubleQuotes = createStripSurroundingChar('"');
  29. var removeSurroundingQuotes = function removeSurroundingQuotes(str) {
  30. var stripped = stripDoubleQuotes(str);
  31. if (stripped !== str) {
  32. // strip only once
  33. return stripped;
  34. }
  35. return stripSingleQuotes(str);
  36. };
  37. function parseConfig(explicitConfig) {
  38. var config = explicitConfig || defaultConfig;
  39. if (!(0, _exists.existsFileSync)(config)) {
  40. return handleMissingConfig(explicitConfig);
  41. }
  42. var argv = _fs2.default.readFileSync(config, 'utf8').replace(/\\\s/g, '%20').split(/\s/).filter(Boolean).map(function (value) {
  43. return value.replace(/%20/g, ' ');
  44. }).map(removeSurroundingQuotes);
  45. var defaultOptions = (0, _parseArgv2.default)(argv, true);
  46. return defaultOptions;
  47. }