task.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import {inject} from 'aurelia-dependency-injection';
  2. import {Project, ProjectItem, CLIOptions, UI} from 'aurelia-cli';
  3. @inject(Project, CLIOptions, UI)
  4. export default class TaskGenerator {
  5. constructor(project, options, ui) {
  6. this.project = project;
  7. this.options = options;
  8. this.ui = ui;
  9. }
  10. execute() {
  11. return this.ui
  12. .ensureAnswer(this.options.args[0], 'What would you like to call the task?')
  13. .then(name => {
  14. let fileName = this.project.makeFileName(name);
  15. let functionName = this.project.makeFunctionName(name);
  16. this.project.tasks.add(
  17. ProjectItem.text(`${fileName}.js`, this.generateSource(functionName))
  18. );
  19. return this.project.commitChanges()
  20. .then(() => this.ui.log(`Created ${fileName}.`));
  21. });
  22. }
  23. generateSource(functionName) {
  24. return `import gulp from 'gulp';
  25. import changed from 'gulp-changed';
  26. import project from '../aurelia.json';
  27. export default function ${functionName}() {
  28. return gulp.src(project.paths.???)
  29. .pipe(changed(project.paths.output, {extension: '.???'}))
  30. .pipe(gulp.dest(project.paths.output));
  31. }
  32. `;
  33. }
  34. }