Coverage

76%
96
73
23

dojo.js

76%
96
73
23
LineHitsSource
1// Generated by CoffeeScript 1.4.0
21var connect, exec, path;
3
41connect = require('connect');
5
61path = require('path');
7
81exec = require('child_process').exec;
9
101module.exports = function(options) {
113 var args, count, dir, finish, loading, mapping, plugin, submodules, _finish, _ref, _ref1, _ref2;
123 if (options == null) {
130 options = {};
14 }
153 if ((_ref = options.method) == null) {
161 options.method = 'release';
17 }
183 if ((_ref1 = options.version) == null) {
192 options.version = '1.7.1';
20 }
213 if ((_ref2 = options.repository) == null) {
223 options.repository = '/tmp';
23 }
243 loading = true;
253 submodules = ['dojo', 'dijit', 'dojox', 'util'];
263 mapping = {};
273 args = [];
283 switch (options.method) {
29 case 'release':
301 dir = options.repository + '/dojo-release-' + options.version;
311 mapping = {
32 dojo: dir + '/dojo',
33 dijit: dir + '/dijit',
34 dojox: dir + '/dojox',
35 util: dir + '/util'
36 };
371 path.exists(dir, function(exists) {
381 var cmd, tgz, url;
391 if (exists) {
401 return finish();
41 }
420 url = 'http://download.dojotoolkit.org/release-' + options.version + '/dojo-release-' + options.version + '.tar.gz';
430 tgz = options.repository + '/dojo-release-' + options.version + '.tar.gz';
440 cmd = 'curl ' + url + ' -o ' + tgz + ' && tar -xzf ' + tgz + ' -C ' + options.repository;
450 return exec(cmd, function(err, stdout, stderr) {
460 return finish(err);
47 });
48 });
491 break;
50 case 'git':
512 count = 0;
522 _finish = function() {
538 if (++count !== 4) {
546 return;
55 }
562 return finish();
57 };
582 submodules.forEach(function(submodule) {
598 var checkout, clone, dirname, revision;
608 revision = options[submodule + '_revision'] || 'HEAD';
618 dirname = 'git-' + submodule + '-' + revision;
628 mapping[submodule] = options.repository + '/' + dirname;
638 clone = function(next) {
648 return path.exists(options.repository + '/' + dirname, function(exists) {
658 var cmds, url;
668 if (exists && revision !== 'HEAD') {
674 return _finish();
68 }
694 if (exists) {
704 return next();
71 }
720 url = 'https://github.com/dojo/' + submodule + '.git';
730 cmds = [];
740 cmds.push('cd ' + options.repository);
750 cmds.push('git clone ' + url + ' ' + dirname);
760 cmds = cmds.join(' && ');
770 return exec(cmds, function(err, stdout, stderr) {
780 return next(err);
79 });
80 });
81 };
828 checkout = function(next) {
834 var cmds;
844 cmds = [];
854 cmds.push('cd ' + options.repository + '/' + dirname);
864 cmds.push('git checkout ' + revision);
874 cmds = cmds.join(' && ');
884 return exec(cmds, function(err, stdout, stderr) {
894 return next(err);
90 });
91 };
928 return clone(function(err) {
934 if (err) {
940 return finish(err);
95 }
964 return checkout(function(err) {
974 if (err) {
980 return finish(err);
99 }
1004 return _finish();
101 });
102 });
103 });
1042 break;
105 default:
1060 throw new Error('Invalid method option "' + options.method + '" (expects "download")');
107 }
1083 finish = function(err) {
1093 var arg, _i, _len, _results;
1103 if (err) {
1110 throw err;
112 }
1133 loading = false;
1143 _results = [];
1153 for (_i = 0, _len = args.length; _i < _len; _i++) {
1163 arg = args[_i];
1173 _results.push(plugin.apply(null, arg));
118 }
1193 return _results;
120 };
1213 plugin = function(req, res, next) {
1226 var app, sttc;
1236 if (loading) {
1243 return args.push(arguments);
125 }
1263 app = /^\/(\w+)\/.*/.exec(req.url);
1273 if (app && submodules.indexOf(app[1]) !== -1) {
1280 app = app[1];
1290 req.url = req.url.substr(app.length + 1);
130 /* prior express 1.7
131 # Less
132 connect.compiler({ src: mapping[app], enable: ['less'] })(req, res, (err) ->
133 console.log err if err
134 # Static
135 sttc = connect.static mapping[app]
136 sttc req, res, ->
137 req.url = '/' + app + req.url
138 next()
139 )
140 */
141
1420 sttc = connect["static"](mapping[app]);
1430 return sttc(req, res, function() {
1440 req.url = '/' + app + req.url;
1450 return next();
146 });
147 } else {
1483 return next();
149 }
150 };
1513 return plugin;
152};