1 | 'use strict';
|
2 |
|
3 | var compose = require('./compose');
|
4 | var utils = require('./utils');
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 | module.exports = function(app, queued, options, next) {
|
17 | var generator = queued.generator;
|
18 | var tasks = queued.tasks;
|
19 |
|
20 | compose(app, generator);
|
21 |
|
22 | if (tasks.length === 1 && !generator.tasks.hasOwnProperty(tasks[0])) {
|
23 | if (tasks[0] === 'default') {
|
24 | next();
|
25 | return;
|
26 | }
|
27 | var suffix = queued.name !== 'this' ? ('" in generator: "' + queued.name + '"') : '';
|
28 | console.error('Cannot find task: "' + tasks[0] + suffix);
|
29 | next();
|
30 | return;
|
31 | }
|
32 |
|
33 | utils.merge(generator.options, options);
|
34 |
|
35 | var alias = generator.env ? generator.env.alias : generator._name;
|
36 | app.emit('generate', alias, queued.tasks, generator);
|
37 | if (app._lookup) {
|
38 | app.options.lookup = app._lookup;
|
39 | }
|
40 |
|
41 |
|
42 | if (typeof generator.config !== 'undefined') {
|
43 | var config = app.get('cache.config') || {};
|
44 | generator.config.process(config, build);
|
45 | } else {
|
46 | build();
|
47 | }
|
48 |
|
49 | function build(err) {
|
50 | if (err) return done(err);
|
51 | generator.build(tasks, done);
|
52 | }
|
53 |
|
54 | function done(err) {
|
55 | if (err) {
|
56 | err.queue = queued;
|
57 | utils.handleError(app, queued.name, next)(err);
|
58 | } else {
|
59 | next();
|
60 | }
|
61 | }
|
62 | };
|