@extjs/sencha-cmd-linux-32
Version:
Productivity and performance optimization tool for building applications with Sencha Ext JS and Sencha Touch.
106 lines (93 loc) • 2.9 kB
JavaScript
/*
* This file contains the guts of the <x-jsduck> task.
*/
(function () {
var falseRe = /false|0|no|off/i,
fileRe = /^`([^`]+)`$/;
var PATH = function (value, name) {
return '--' + name + '=' + project.resolveFile(value);
},
FILE = function (value, name) {
var match = fileRe.exec(value),
content = value;
if (match) {
content = readFile(project.resolveFile(value));
}
return '--' + name + '=' + content;
},
BOOL = function (value, name) {
if (!value || falseRe.test(value)) {
return null;
}
return '--' + name;
},
TEXT = function (value, name) {
return '--' + name + '=' + value;
}
var handlers = {
outdir: function (value) {
return '--output=' + project.resolveFile(value);
},
"ignore-global": BOOL,
external: TEXT,
"builtin-classes": BOOL,
"meta-tags": PATH,
warnings: function (value) {
if (value == 'none') {
return '--warnings=-all';
}
return '--warnings=' + value;
},
verbose: BOOL,
title: TEXT,
footer: TEXT,
"head-html": FILE,
"body-html": FILE,
welcome: PATH,
guides: PATH,
videos: PATH,
examples: PATH,
stats: BOOL,
categories: PATH,
"pretty-json": BOOL,
images: PATH,
"link-tpl": FILE,
"img-tpl": FILE,
'export': TEXT,
seo: BOOL,
"eg-iframe": PATH,
processes: TEXT,
template: PATH,
"template-links": PATH,
"extjs-path": TEXT,
"local-storage-db": TEXT,
"touch-examples-ui": BOOL,
"ext-namespace": TEXT,
"examples-base-url": TEXT,
config: PATH
};
var args = [],
file, inputs, name, value, s;
// Convert the attributes into options at one arg each:
//
for (name in handlers) {
value = attributes.get(name);
if (value !== null) {
s = handlers[name](String(value), name);
if (s) {
args.push(s);
}
}
}
// For each directory or file specified, append the paths as arguments:
//
for (inputs = new FileSequence({
dirs: elements.get('dir')
}).append(new FileSetSequence({
fileSets: elements.get('files')
}));
(file = inputs.next()); ) {
args.push(file);
}
exec('jsduck', args, { capture: false });
})();