电速宝智配引擎
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

cli-helper.js 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. module.exports = {
  2. getCommandLineHelp: function (command, requiredArgs, optionalArgs) {
  3. var reqArgs = requiredArgs.reduce(function (res, arg) {return res + ' <' + arg.arg + '>';}, '');
  4. var output = 'Usage: ' + command + reqArgs + ' [options]\n';
  5. requiredArgs.forEach(function (argument) {
  6. output += ' <' + argument.arg + '>' + Array(20 - argument.arg.length).join(' ') + argument.desc + '\n';
  7. });
  8. output += '\nOptions:\n';
  9. optionalArgs.forEach(function (argument) {
  10. output += ' --' + argument.arg + Array(20 - argument.arg.length).join(' ') + argument.desc + '\n';
  11. });
  12. return output;
  13. },
  14. mapCommandLineArgs: function (requiredArgs, optionalArgs) {
  15. var options = {}, r, o, a = 2;
  16. for (r = 0; r < requiredArgs.length; r += 1) {
  17. if (a < process.argv.length && process.argv[a].substr(0, 1) !== '-' && process.argv[a] !== 'JASMINE_CONFIG_PATH=./jasmine.json') {
  18. options[requiredArgs[r].option] = process.argv[a++];
  19. } else {
  20. break;
  21. }
  22. }
  23. for (; a < process.argv.length; a += 1) {
  24. for (o = 0; o < optionalArgs.length; o += 1) {
  25. if (optionalArgs[o].alias === process.argv[a].slice(1) || optionalArgs[o].arg === process.argv[a].slice(2)) {
  26. break;
  27. }
  28. }
  29. if (o < optionalArgs.length) {
  30. switch (optionalArgs[o].type) {
  31. case 'file': case 'string': case 'number':
  32. if (a + 1 < process.argv.length) {
  33. a += 1;
  34. options[optionalArgs[o].option] = (optionalArgs[o].type === 'number' ? Number(process.argv[a]) : process.argv[a]);
  35. }
  36. break;
  37. case 'flag':
  38. options[optionalArgs[o].option] = true; break;
  39. }
  40. }
  41. }
  42. return options;
  43. }
  44. };