copay/util/build.js

165 lines
4.0 KiB
JavaScript
Raw Normal View History

2014-04-07 11:31:41 -07:00
#!/usr/bin/env node
'use strict';
var fs = require('fs');
var browserify = require('browserify');
var exec = require('child_process').exec;
2014-08-27 07:51:50 -07:00
var shell = require('shelljs');
2014-04-07 11:31:41 -07:00
var puts = function(error, stdout, stderr) {
if (error) console.log(error);
};
2014-08-27 07:51:50 -07:00
var getCommitHash = function() {
//exec git command to get the hash of the current commit
//git rev-parse HEAD
2014-09-05 15:54:44 -07:00
var hash = shell.exec('git rev-parse HEAD', {
silent: true
}).output.trim().substr(0, 7);
2014-08-27 07:51:50 -07:00
return hash;
}
2014-05-14 17:02:01 -07:00
var createVersion = function() {
var json = JSON.parse(fs.readFileSync('./package.json', 'utf8'));
2014-08-27 07:51:50 -07:00
var content = 'module.exports.version="' + json.version + '";';
2014-09-05 15:54:44 -07:00
content = content + '\nmodule.exports.commitHash="' + getCommitHash() + '";';
2014-05-14 17:02:01 -07:00
fs.writeFileSync("./version.js", content);
};
2014-04-07 11:31:41 -07:00
var createBundle = function(opts) {
opts.dir = opts.dir || 'js/';
var bopts = {
debug: true,
standalone: 'copay',
insertGlobals: true
};
var b = browserify(bopts);
b.require('bitcore/node_modules/browserify-buffertools/buffertools.js', {
expose: 'buffertools'
});
2014-08-29 06:50:52 -07:00
b.require('browser-request', {
expose: 'request'
});
2014-10-25 15:57:12 -07:00
b.require('lodash');
2014-10-21 20:14:48 -07:00
b.require('querystring');
2014-09-05 15:54:44 -07:00
b.require('assert');
b.require('preconditions');
2014-04-07 11:31:41 -07:00
b.require('./copay', {
expose: 'copay'
});
2014-05-14 17:02:01 -07:00
b.require('./version');
// b.external('bitcore');
b.require('./js/models/Identity', {
expose: '../js/models/Identity'
});
2014-09-23 11:24:57 -07:00
b.require('./js/models/Wallet');
b.require('./js/models/Wallet', {
expose: '../../js/models/Wallet'
2014-08-11 14:08:18 -07:00
});
2014-09-23 11:24:57 -07:00
b.require('./js/models/Insight', {
expose: '../js/models/Insight'
2014-04-17 13:13:29 -07:00
});
2014-10-27 17:05:22 -07:00
b.require('./js/models/Compatibility', {
expose: '../js/models/Compatibility'
});
2014-09-23 11:24:57 -07:00
b.require('./js/models/PrivateKey', {
expose: '../js/models/PrivateKey'
2014-04-17 13:13:29 -07:00
});
2014-09-23 11:24:57 -07:00
b.require('./js/models/PublicKeyRing', {
expose: '../js/models/PublicKeyRing'
2014-04-17 14:25:53 -07:00
});
2014-09-23 11:24:57 -07:00
b.require('./js/models/HDPath', {
expose: '../js/models/HDPath'
2014-08-14 07:45:52 -07:00
});
2014-09-23 11:24:57 -07:00
b.require('./js/models/PluginManager', {
expose: '../js/models/PluginManager'
2014-09-01 11:40:31 -07:00
});
2014-12-02 07:15:58 -08:00
b.require('./js/util/HTTP', {
expose: '../js/util/HTTP'
});
b.require('./js/util/log', {
expose: '../js/util/log'
});
2014-12-03 11:54:23 -08:00
b.require('./js/util/csv', {
expose: '../js/util/csv'
});
2014-12-02 07:15:58 -08:00
2014-09-01 12:31:35 -07:00
if (!opts.disablePlugins) {
b.require('./js/plugins/GoogleDrive', {
2014-12-03 11:30:43 -08:00
expose: '../js/plugins/GoogleDrive'
2014-09-01 12:31:35 -07:00
});
b.require('./js/plugins/InsightStorage', {
2014-12-03 11:30:43 -08:00
expose: '../js/plugins/InsightStorage'
2014-10-23 11:47:24 -07:00
});
b.require('./js/plugins/InsightStorage', {
expose: '../js/plugins/InsightStorage'
});
b.require('./js/plugins/LocalStorage', {
2014-12-03 11:30:43 -08:00
expose: '../js/plugins/LocalStorage'
2014-09-01 19:44:35 -07:00
});
b.require('./js/plugins/EncryptedInsightStorage', {
2014-12-03 11:30:43 -08:00
expose: '../js/plugins/EncryptedInsightStorage'
});
2014-10-27 06:36:17 -07:00
b.require('./js/plugins/EncryptedLocalStorage', {
2014-12-03 11:30:43 -08:00
expose: '../js/plugins/EncryptedLocalStorage'
2014-10-27 06:36:17 -07:00
});
2014-09-01 12:31:35 -07:00
}
2014-09-23 11:24:57 -07:00
2014-08-14 07:42:25 -07:00
b.require('./config', {
expose: '../config'
});
2014-04-07 11:31:41 -07:00
2014-10-29 14:34:59 -07:00
// The following 2 lines fix karma tests
b.require('sjcl');
2014-08-15 15:03:09 -07:00
if (opts.debug) {
//include dev dependencies
b.require('sinon');
b.require('blanket');
2014-10-29 14:34:59 -07:00
2014-08-15 10:00:33 -07:00
b.require('./test/mocks/FakeBlockchain', {
expose: './mocks/FakeBlockchain'
});
2014-08-29 06:50:52 -07:00
b.require('./test/mocks/FakeBlockchainSocket', {
expose: './mocks/FakeBlockchainSocket'
});
2014-08-15 10:00:33 -07:00
b.require('./test/mocks/FakeNetwork', {
expose: './mocks/FakeNetwork'
});
2014-06-16 13:40:59 -07:00
}
2014-08-15 16:33:32 -07:00
if (!opts.debug) {
2014-04-07 11:31:41 -07:00
b.transform({
global: true
}, 'uglifyify');
}
var bundle = b.bundle();
return bundle;
};
if (require.main === module) {
var list = function(val) {
return val.split(',');
};
var program = require('commander');
program
2014-09-05 15:54:44 -07:00
.version('0.0.1')
.option('-d, --debug', 'Development. Don\'t minify the codem and include debug packages.')
.option('-o, --stdout', 'Specify output as stdout')
.parse(process.argv);
2014-05-14 17:02:01 -07:00
createVersion();
2014-04-07 11:31:41 -07:00
var copayBundle = createBundle(program);
2014-04-10 08:36:17 -07:00
copayBundle.pipe(program.stdout ? process.stdout : fs.createWriteStream('js/copayBundle.js'));
2014-04-07 11:31:41 -07:00
}
module.exports.createBundle = createBundle;