aboutsummaryrefslogtreecommitdiff
path: root/node_modules/when/scripts/browserify.js
blob: 7b597540ff320baaf4adc113676496de12473183 (plain)
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
var exec = require('child_process').exec;
var path = require('path');
var fs = require('fs');
var mkdirp = require('mkdirp');
var browserify = require('browserify');
var exorcist = require('exorcist');

var ROOT_DIR = path.resolve(__dirname, '..');

var CONFIGURATIONS = {
	'es6': {
		standaloneName: 'Promise',
		entries: [
			path.resolve(ROOT_DIR, 'es6-shim', 'Promise.browserify-es6.js')
		],
		outputDir: 'es6-shim',
		outputFilename: 'Promise.js'
	},
	'when': {
		standaloneName: 'when',
		entries: [
			path.resolve(ROOT_DIR, 'build', 'when.browserify.js')
		],
		outputDir: path.join('dist', 'browser'),
		outputFilename: 'when.js'
	},
	'debug': {
		standaloneName: 'when',
		entries: [
			path.resolve(ROOT_DIR, 'build', 'when.browserify-debug.js')
		],
		outputDir: path.join('dist', 'browser'),
		outputFilename: 'when.debug.js'
	}
};

function revParse(callback) {
	exec('git rev-parse HEAD', function(err, stdout, stderr) {
		process.stderr.write(stderr);
		if (err) {
			callback(err);
		} else {
			callback(null, stdout.replace(/(^\s+)|(\s+$)/g, ''));
		}
	});
}

var configName = process.argv[2];
var config = CONFIGURATIONS[configName];

if (!config) {
	console.error('Cannot find configuration "' + configName + '"');
	process.exit(1);
	return;
}

mkdirp(config.outputDir, function(mkdirErr) {
	if (mkdirErr) {
		console.error(mkdirErr);
		process.exit(1);
	} else {
		revParse(function(revParseErr, rev) {
			if (revParseErr) {
				console.error(revParseErr);
				process.exit(1);
			} else {
				var rootUrl = 'https://raw.githubusercontent.com/cujojs/when/' + rev;
				var outputMapFile = path.resolve(ROOT_DIR, config.outputDir, config.outputFilename + '.map');
				var outputFile = path.resolve(ROOT_DIR, config.outputDir, config.outputFilename);
				browserify({
					entries: config.entries
				})
					.bundle({
						standalone: config.standaloneName,
						detectGlobals: false,
						debug: true
					})
					.pipe(exorcist(outputMapFile, null, rootUrl, ROOT_DIR))
					.pipe(fs.createWriteStream(outputFile));
			}
		});
	}
});