/
queues.js
134 lines (119 loc) · 4.53 KB
/
queues.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
"use strict";
/**
* Queue definitions for building Yui3 modules
*/
var path = require('path'),
Queue = require('buildy').Queue;
/**
* Create a task chain for building yui3 modules from source.
*
* @param component {Object} Component specification.
* @return {Queue} Instance of a queue with component build tasks added.
*/
exports._createSourceQueue = function(component, queueOpts) {
var q = new Queue('collect source files', queueOpts),
component_sourcefiles = component.sourcefiles,
component_buildfiles = component.buildfiles,
component_name = component.component,
component_version = component.version,
component_details = component.details;
q.task('files', component_sourcefiles) // all of these synchronous
.task('jslint')
.task('concat')
.task('template', {
template_file: path.resolve(__dirname + '/../templates/module.handlebars'), // use build spec
template_vars: {
yuivar : 'Y',
component : component_name,
version : component_version,
details : component_details
}
})
.task('fork', {
'debug code' : function() {
this.task('write', { name: component_buildfiles.debug })
.task('log', { message: 'wrote debug code to: ' + component_buildfiles.debug })
.run();
},
'core code' : function() {
this.task('replace', {
regex: '^.*?(?:logger|Y.log).*?(?:;|\\).*;|(?:\r?\n.*?)*?\\).*;).*;?.*?\r?\n',
replace: '',
flags: 'mg'
})
.task('fork', {
'write core' : function(b) {
this.task('write', {
name: component_buildfiles.core
})
.task('log', { message: 'wrote raw code to: ' + component_buildfiles.core })
.run();
},
'minified code' : function(b) {
this.task('jsminify')
.task('write', {
name: component_buildfiles.min
})
.task('log', { message: 'wrote minified code to: ' + component_buildfiles.min })
.run();
}
}).run();
}
});
return q;
};
/**
* Create a task chain for building yui3 skins(css) from source.
*
* @param component {Object} Component specification.
* @return {Queue} Instance
*/
exports._createSkinsQueue = function(component, queueOpts) {
var q = new Queue('collect stylesheets', queueOpts),
component_skin_sourcefile = component.skins.sam.source,
component_skin_buildfile = component.skins.sam.build,
component_skin_corefile = component.skins.core.source;
q.task('files', [component_skin_sourcefile, component_skin_corefile])
.task('concat')
.task('csslint')
.task('cssminify')
.task('log', { message: 'wrote stylesheet (minified) to: ' + component.skins.sam.build })
.task('write', {
name: component_skin_buildfile
});
return q;
};
/**
* Create a task chain for building yui3 assets(images, etc) from source.
*
* @param component {Object} Component specification.
* @return {Queue} Instance
*/
exports._createAssetsQueue = function(component, queueOpts) {
var q = new Queue('collect assets', queueOpts),
component_skin_sourcefile = component.skins.sam.source,
component_skin_corefile = component.skins.core.source,
component_assets_sourcedir = component.assets.source,
component_assets_builddir = component.assets.build;
q.task('copy', {
src: [
component_assets_sourcedir
],
dest: path.dirname(component_assets_builddir),
recursive: true,
excludes: [
path.join(component.sourcedir, 'assets/skins/', component_skin_corefile),
path.join(component.sourcedir, 'assets/skins/sam/', component_skin_sourcefile)
]
});
return q;
};
/**
* Create a task chain for building yui3 documentation from source.
*
* @param component {Object} Component specification.
* @return {Queue} Instance
*/
exports._createDocsQueue = function(component, queueOpts) {
// TODO: documentation generation via yuidocjs
};