1 |
|
2 | (function() {
|
3 | var collectCoffeeFiles, defaultLintOptions, findScript, glob, log, ninjaFactories, setLintOptions, _;
|
4 |
|
5 | ninjaFactories = require('./ninjaFactories');
|
6 |
|
7 | findScript = require('./ninjaCommands').findScript;
|
8 |
|
9 | _ = require('lodash');
|
10 |
|
11 | log = require('yadsil')('index');
|
12 |
|
13 | glob = require('glob');
|
14 |
|
15 | collectCoffeeFiles = function(_arg) {
|
16 | var extensionMark, extensions, paths;
|
17 | extensions = _arg.extensions, paths = _arg.paths;
|
18 | log.info('looking for coffee script files..');
|
19 | extensionMark = '$ext';
|
20 | return _.chain(paths).map(function(path) {
|
21 | return extensions.map(function(ext) {
|
22 | return path.replace(extensionMark, ext);
|
23 | });
|
24 | }).flatten().map(function(path) {
|
25 | return glob.sync(path);
|
26 | }).flatten().value();
|
27 | };
|
28 |
|
29 | defaultLintOptions = {
|
30 | extensions: ['coffee', '_coffee'],
|
31 | paths: ['src/**/*.$ext', 'assets/js/**/*.$ext', 'bin/**/*.$ext', 'Gruntfile.$ext']
|
32 | };
|
33 |
|
34 | setLintOptions = null;
|
35 |
|
36 | exports.configureCoffeelint = function(options) {
|
37 | return setLintOptions = options;
|
38 | };
|
39 |
|
40 | exports.getCoffeelintPaths = function() {
|
41 | return collectCoffeeFiles(setLintOptions != null ? setLintOptions : defaultLintOptions);
|
42 | };
|
43 |
|
44 | exports.defineFactory = ninjaFactories.defineFactory;
|
45 |
|
46 | exports.defineBrowserifyFactory = function(name, sourceFile, targetFile, options) {
|
47 | return exports.defineFactory("browserify-" + name, {
|
48 | makeRules: function(ninja, config) {
|
49 | return ['debug', 'release'].forEach(function(releaseType) {
|
50 | var cli, rule;
|
51 | cli = "$node " + (findScript('browserify-bundle.js'));
|
52 | if (options.extensions) {
|
53 | cli += " --extensions '" + (options.extensions.join(",")) + "'";
|
54 | }
|
55 | if (options.transforms) {
|
56 | cli += " --transforms '" + (options.transforms.join(",")) + "'";
|
57 | }
|
58 | cli += " --out $out --i18n $out.i18n";
|
59 | if (releaseType === 'debug') {
|
60 | cli += " --deps $out.d --debug";
|
61 | }
|
62 | cli += " ./$in";
|
63 | rule = ninja.rule("browserify-" + name + "-" + releaseType);
|
64 | rule.run(cli);
|
65 | if (releaseType === 'debug') {
|
66 | rule.depfile('$out.d');
|
67 | }
|
68 | return rule.description("(" + releaseType + ") BROWSERIFY $in");
|
69 | });
|
70 | },
|
71 | assetFiles: sourceFile,
|
72 | makeAssetEdge: function(ninja, source, target, releaseType) {
|
73 | target = "build/assets/" + releaseType + "/js/" + targetFile;
|
74 | ninja.edge(target).from(source).using("browserify-" + name + "-" + releaseType);
|
75 | return [target];
|
76 | }
|
77 | });
|
78 | };
|
79 |
|
80 | }).call(this);
|
81 |
|
82 |
|