run.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #!/usr/bin/env node
  2. 'use strict';
  3. require('colorful').colorful();
  4. require('colorful').isatty = true;
  5. const gulp = require('gulp');
  6. const program = require('commander');
  7. program.on('--help', () => {
  8. // eslint-disable-next-line no-console
  9. console.log(' Usage:'.to.bold.blue.color);
  10. // eslint-disable-next-line no-console
  11. console.log();
  12. });
  13. program.parse(process.argv);
  14. function runTask(toRun) {
  15. const metadata = { task: toRun };
  16. // Gulp >= 4.0.0 (doesn't support events)
  17. const taskInstance = gulp.task(toRun);
  18. if (taskInstance === undefined) {
  19. gulp.emit('task_not_found', metadata);
  20. return;
  21. }
  22. const start = process.hrtime();
  23. gulp.emit('task_start', metadata);
  24. try {
  25. taskInstance.apply(gulp);
  26. metadata.hrDuration = process.hrtime(start);
  27. gulp.emit('task_stop', metadata);
  28. gulp.emit('stop');
  29. } catch (err) {
  30. err.hrDuration = process.hrtime(start);
  31. err.task = metadata.task;
  32. gulp.emit('task_err', err);
  33. }
  34. }
  35. const task = program.args[0];
  36. if (!task) {
  37. program.help();
  38. } else {
  39. // eslint-disable-next-line no-console
  40. console.log('scripts run', task);
  41. require('./gulpfile');
  42. runTask(task);
  43. }