build scripts for copay shell binaries
This commit is contained in:
parent
8080c872f8
commit
c05895f879
3 changed files with 272 additions and 1 deletions
|
|
@ -25,7 +25,8 @@
|
|||
"shell": "node shell/scripts/launch.js",
|
||||
"setup-shell": "node shell/scripts/download-atom-shell.js",
|
||||
"chrome": "source browser-extensions/chrome/build.sh",
|
||||
"firefox": "source browser-extensions/firefox/build.sh"
|
||||
"firefox": "source browser-extensions/firefox/build.sh",
|
||||
"dist": "node shell/scripts/dist.js"
|
||||
},
|
||||
"homepage": "https://github.com/bitpay/copay",
|
||||
"devDependencies": {
|
||||
|
|
|
|||
168
shell/scripts/dist.js
Normal file
168
shell/scripts/dist.js
Normal file
|
|
@ -0,0 +1,168 @@
|
|||
require('shelljs/global');
|
||||
var color = require('cli-color');
|
||||
|
||||
var download = require('./lib/download')();
|
||||
var async = require('async');
|
||||
|
||||
var atom_version = 'v0.13.0';
|
||||
|
||||
var app_root = './';
|
||||
|
||||
var build_dir = 'shell/scripts/build';
|
||||
var dist_dir = 'dist';
|
||||
|
||||
var darwin_app_dir = '/Copay.app/Contents/Resources/app';
|
||||
var linux_app_dir = '/resources/app';
|
||||
var windows_app_dir = '/resources/app';
|
||||
|
||||
rm('-rf', build_dir);
|
||||
rm('-rf', dist_dir);
|
||||
|
||||
async.series([
|
||||
function(callback) {
|
||||
download.atom(atom_version, 'darwin', 'x64', callback);
|
||||
},
|
||||
function(callback){
|
||||
download.atom(atom_version, 'linux', 'x64', callback);
|
||||
},
|
||||
function(callback) {
|
||||
download.atom(atom_version, 'win32', 'ia32', callback);
|
||||
},
|
||||
function() {
|
||||
runBuild();
|
||||
}]);
|
||||
|
||||
function runBuild() {
|
||||
|
||||
mkdir(build_dir);
|
||||
|
||||
/* DARWIN BUILD */
|
||||
|
||||
console.log(color.blue('{copay}'), '');
|
||||
console.log(color.blue('{copay}'), 'Starting DARWIN build');
|
||||
console.log(color.blue('{copay}'), '');
|
||||
|
||||
// Copy the core atom shell
|
||||
cp('-r', app_root + '/shell/scripts/bin/darwin/*', build_dir);
|
||||
mv(build_dir + '/Atom.app', build_dir + '/Copay.app');
|
||||
mv(build_dir + '/Copay.app/Contents/MacOS/Atom', build_dir + '/Copay.app/Contents/MacOS/Copay');
|
||||
|
||||
// Replace Atom darwin assets with Copay assets
|
||||
cp(app_root + '/shell/assets/darwin/copay.icns', build_dir + '/Copay.app/Contents/Resources/copay.icns');
|
||||
cp('-f', app_root + '/shell/assets/darwin/Info.plist', build_dir + '/Copay.app/Contents/Info.plist');
|
||||
rm(build_dir + '/Copay.app/Contents/Resources/atom.icns');
|
||||
|
||||
// Copy Copay sources
|
||||
cp('-r', app_root + '/css', build_dir + darwin_app_dir);
|
||||
cp('-r', app_root + '/js', build_dir + darwin_app_dir);
|
||||
cp('-r', app_root + '/font', build_dir + darwin_app_dir);
|
||||
cp('-r', app_root + '/img', build_dir + darwin_app_dir);
|
||||
cp('-r', app_root + '/lib', build_dir + darwin_app_dir);
|
||||
cp('-r', app_root + '/sound', build_dir + darwin_app_dir);
|
||||
cp('-r', app_root + '/shell/*.js*', build_dir + darwin_app_dir + '/shell');
|
||||
cp('-r', app_root + '/shell/lib/*', build_dir + darwin_app_dir + '/shell/lib');
|
||||
cp(app_root + '*.js', build_dir + darwin_app_dir);
|
||||
cp(app_root + '*.json', build_dir + darwin_app_dir);
|
||||
cp(app_root + '*.html', build_dir + darwin_app_dir);
|
||||
|
||||
cp('-r', app_root + '/node_modules/express', build_dir + darwin_app_dir + "/node_modules");
|
||||
|
||||
// Clean up extra Atom sources
|
||||
rm('-r', build_dir + darwin_app_dir + '/../*.lproj');
|
||||
rm('-r', build_dir + darwin_app_dir + '/../default_app');
|
||||
|
||||
mkdir('-p', app_root + '/dist/darwin');
|
||||
cp('-r', app_root + build_dir + '/*', app_root + '/dist/darwin/');
|
||||
rm('-rf', app_root + build_dir + '/*');
|
||||
|
||||
console.log(color.blue('{copay}'), 'Copied files to ' + 'dist/darwin');
|
||||
|
||||
if (which('hdiutil') != null) {
|
||||
cd(app_root + '/dist/darwin');
|
||||
exec('ln -s /Applications Applications');
|
||||
exec('hdiutil create ../Copay-darwin-x64.dmg -volname "Copay Installer - Drag Copay to Applications Folder" -fs HFS+ -srcfolder "."');
|
||||
exec("rm Applications");
|
||||
cd('../..');
|
||||
}
|
||||
|
||||
/* Linux Build */
|
||||
|
||||
console.log(color.blue('{copay}'), '');
|
||||
console.log(color.blue('{copay}'), 'Starting LINUX build');
|
||||
console.log(color.blue('{copay}'), '');
|
||||
|
||||
// Copy the core atom shell
|
||||
cp('-r', app_root + '/shell/scripts/bin/linux/*', build_dir);
|
||||
mv(build_dir + '/atom', build_dir + '/Copay');
|
||||
|
||||
// Copy Copay sources
|
||||
cp('-r', app_root + '/css', build_dir + linux_app_dir);
|
||||
cp('-r', app_root + '/js', build_dir + linux_app_dir);
|
||||
cp('-r', app_root + '/font', build_dir + linux_app_dir);
|
||||
cp('-r', app_root + '/img', build_dir + linux_app_dir);
|
||||
cp('-r', app_root + '/lib', build_dir + linux_app_dir);
|
||||
cp('-r', app_root + '/sound', build_dir + linux_app_dir);
|
||||
cp('-r', app_root + '/shell/*.js*', build_dir + linux_app_dir + '/shell');
|
||||
cp('-r', app_root + '/shell/lib/*', build_dir + linux_app_dir + '/shell/lib');
|
||||
cp(app_root + '*.js', build_dir + linux_app_dir);
|
||||
cp(app_root + '*.json', build_dir + linux_app_dir);
|
||||
cp(app_root + '*.html', build_dir + linux_app_dir);
|
||||
|
||||
cp('-r', app_root + '/node_modules/express', build_dir + linux_app_dir + "/node_modules");
|
||||
|
||||
// Clean up extra Atom sources
|
||||
rm('-r', build_dir + linux_app_dir + '/../default_app');
|
||||
cp('-r', app_root + build_dir + '/*', app_root + '/dist/linux');
|
||||
rm('-rf', app_root + build_dir + '/*');
|
||||
|
||||
exec('tar czf ./dist/Copay-linux-x64.tar.gz -C ./dist/linux .');
|
||||
|
||||
console.log(color.blue('{copay}'), 'Copied files to ' + 'dist/linux');
|
||||
|
||||
/* Windows Build */
|
||||
|
||||
console.log(color.blue('{copay}'), '');
|
||||
console.log(color.blue('{copay}'), 'Starting WIN32 build');
|
||||
console.log(color.blue('{copay}'), '');
|
||||
|
||||
// Copy the core atom shell
|
||||
cp('-r', app_root + '/shell/scripts/bin/win32/*', build_dir);
|
||||
mv(build_dir + '/atom.exe', build_dir + '/Copay.exe');
|
||||
|
||||
// Copy Copay sources
|
||||
cp('-r', app_root + '/css', build_dir + windows_app_dir);
|
||||
cp('-r', app_root + '/js', build_dir + windows_app_dir);
|
||||
cp('-r', app_root + '/font', build_dir + windows_app_dir);
|
||||
cp('-r', app_root + '/img', build_dir + windows_app_dir);
|
||||
cp('-r', app_root + '/lib', build_dir + windows_app_dir);
|
||||
cp('-r', app_root + '/sound', build_dir + windows_app_dir);
|
||||
cp('-r', app_root + '/shell/*.js*', build_dir + windows_app_dir + '/shell');
|
||||
cp('-r', app_root + '/shell/lib/*', build_dir + windows_app_dir + '/shell/lib');
|
||||
cp(app_root + '*.js', build_dir + windows_app_dir);
|
||||
cp(app_root + '*.json', build_dir + windows_app_dir);
|
||||
cp(app_root + '*.html', build_dir + windows_app_dir);
|
||||
|
||||
cp('-r', app_root + '/node_modules/express', build_dir + windows_app_dir + "/node_modules");
|
||||
|
||||
cp(app_root + "/shell/assets/win32/*", build_dir);
|
||||
|
||||
mkdir('-p', app_root + '/dist/windows');
|
||||
cp('-r', app_root + build_dir + '/*', app_root + '/dist/windows/');
|
||||
|
||||
console.log(color.blue('{copay}'), 'Copied files to ' + 'dist/windows');
|
||||
|
||||
|
||||
// generating windows installer requires makensis
|
||||
// install on OSX with "brew install makensis"
|
||||
if (which('makensis') != null) {
|
||||
console.log(color.blue('{copay}'), 'Running NSIS to generate win32 installer');
|
||||
cd(build_dir);
|
||||
exec('makensis -V2 build-installer.nsi');
|
||||
cd("../../..");
|
||||
cp(build_dir + '/copay-setup.exe', app_root + '/dist/Copay-setup-win32.exe')
|
||||
}
|
||||
|
||||
console.log(color.blue('{copay}'));
|
||||
console.log(color.blue('{copay}'), 'BUILD COMPLETE');
|
||||
console.log(color.blue('{copay}'), 'Files can be found in the dist directory');
|
||||
}
|
||||
102
shell/scripts/lib/download.js
Normal file
102
shell/scripts/lib/download.js
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
var path = require('path');
|
||||
var fs = require('fs');
|
||||
var GitHub = require('github-releases');
|
||||
var async = require('async');
|
||||
var readl = require('readline');
|
||||
var color = require('cli-color');
|
||||
var github = new GitHub({ repo: 'atom/atom-shell' });
|
||||
var exec = require('child_process').exec;
|
||||
var os = require('os');
|
||||
|
||||
var Static = function() {
|
||||
|
||||
return {
|
||||
atom: function(version, platform, arch, callback) {
|
||||
var targetRoot = path.normalize(__dirname + '/../bin/'),
|
||||
target = path.normalize(__dirname + '/../bin/' + platform);
|
||||
|
||||
console.log(color.blue('{copay}'), 'Downloading atom-shell ' + version + ' ' + platform + '-' + arch);
|
||||
|
||||
if(!fs.existsSync(targetRoot)) {
|
||||
fs.mkdirSync(targetRoot);
|
||||
}
|
||||
|
||||
if (!fs.existsSync(target)) {
|
||||
fs.mkdirSync(target);
|
||||
} else {
|
||||
console.log(color.blue('{copay}'), platform + '-' + arch + ' ' + ' already downloaded');
|
||||
callback.call(this, null);
|
||||
}
|
||||
|
||||
|
||||
|
||||
console.log(color.blue('{copay}'), 'getting atom-shell release ' + version);
|
||||
|
||||
github.getReleases({ tag_name: version }, function(err, releases) {
|
||||
var filename = 'atom-shell-' + version + '-' + platform + '-' + arch + '.zip';
|
||||
|
||||
if (err || !releases.length) {
|
||||
return console.log(color.blue('{copay}'), 'Release not found');
|
||||
}
|
||||
|
||||
console.log(color.blue('{copay}'), 'looking for prebuilt binary ' + filename);
|
||||
|
||||
for (var a = 0; a < releases[0].assets.length; a++) {
|
||||
var asset = releases[0].assets[a];
|
||||
|
||||
if (asset.name === filename) {
|
||||
|
||||
console.log(color.blue('{copay}'), 'downloading ' + asset.name);
|
||||
|
||||
var rl = readl.createInterface({
|
||||
input: process.stdin,
|
||||
output: process.stdout
|
||||
});
|
||||
|
||||
rl.write(' bytes received: 0');
|
||||
|
||||
return github.downloadAsset(asset, function(err, inStream) {
|
||||
if (err) {
|
||||
console.log(err);
|
||||
process.exit();
|
||||
}
|
||||
|
||||
var bytes = 0;
|
||||
|
||||
inStream.on('data', function(chunk) {
|
||||
rl.write(null, { ctrl: true, name: 'u' });
|
||||
rl.write(' bytes received: ' + (bytes + chunk.length));
|
||||
bytes += chunk.length;
|
||||
});
|
||||
|
||||
inStream.on('end', function() {
|
||||
rl.close();
|
||||
console.log('');
|
||||
console.log(color.blue('{copay}'), 'downloaded!');
|
||||
});
|
||||
|
||||
var out = target;
|
||||
var tmp = os.tmpDir() + '/atom-shell.zip';
|
||||
var outStream = fs.createWriteStream(tmp);
|
||||
|
||||
outStream.on('finish', function() {
|
||||
console.log(color.blue('{copay}'), 'unzipping archive');
|
||||
exec('unzip -o ' + tmp + ' -d ' + out, function(err, stdout, stderr) {
|
||||
console.log(err || stderr || (color.blue('{copay}') + ' done!'))
|
||||
callback.call(this, null);
|
||||
});
|
||||
});
|
||||
|
||||
inStream.pipe(outStream);
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Static;
|
||||
Loading…
Add table
Add a link
Reference in a new issue