UNPKG

3.11 kBJavaScriptView Raw
1#!/usr/bin/env node
2
3var download = require('download');
4var rimraf = require('rimraf');
5var semver = require('semver');
6var createBar = require('multimeter')(process);
7var path = require('path');
8var fs = require('fs');
9var merge = require('merge');
10var urlModule = require('url');
11var Decompress = require('decompress');
12var fileExists = require('file-exists');
13var chalk = require('chalk');
14
15var buildType = process.env.npm_config_nwjs_build_type || process.env.NWJS_BUILD_TYPE || 'normal';
16
17var v = semver.parse(require('../package.json').version);
18var version = [v.major, v.minor, v.patch].join('.');
19if (v.prerelease && typeof v.prerelease[0] === 'string') {
20 var prerelease = v.prerelease[0].split('-');
21 if (prerelease.length > 1) {
22 prerelease = prerelease.slice(0, -1);
23 }
24 version += '-' + prerelease.join('-');
25}
26
27if ( version.slice(-4) === '-sdk' ){
28 version = version.slice(0, -4);
29 buildType = 'sdk';
30} else if ( version.slice(-3) === 'sdk' ){
31 version = version.slice(0, -3);
32 buildType = 'sdk';
33}
34
35var url = false;
36var arch = process.env.npm_config_nwjs_process_arch || process.arch;
37var urlBase = process.env.npm_config_nwjs_urlbase || process.env.NWJS_URLBASE || 'https://dl.nwjs.io/v';
38var buildTypeSuffix = buildType === 'normal' ? '' : ('-' + buildType);
39var platform = process.env.npm_config_nwjs_platform || process.env.NWJS_PLATFORM || process.platform;
40
41// Determine download url
42switch (platform) {
43 case 'win32':
44 url = urlBase + version + '/nwjs' + buildTypeSuffix + '-v' + version + '-win-' + arch +'.zip';
45 break;
46 case 'darwin':
47 url = urlBase + version + '/nwjs' + buildTypeSuffix + '-v' + version + '-osx-' + arch + '.zip';
48 break;
49 case 'linux':
50 url = urlBase + version + '/nwjs' + buildTypeSuffix + '-v' + version + '-linux-' + arch + '.tar.gz';
51 break;
52}
53
54function logError(e) {
55 console.error(chalk.bold.red((typeof e === 'string') ? e : e.message));
56 process.exit(1);
57}
58
59function cb(error) {
60 if( error != null ) {
61 return logError( error )
62 }
63
64 process.nextTick(function() {
65 process.exit();
66 });
67}
68
69function fileExistsAndAvailable(filepath) {
70 try {
71 return fileExists(filepath);
72 } catch(err) {
73 return false;
74 }
75}
76
77if (!url) logError('Could not find a compatible version of nw.js to download for your platform.');
78
79var dest = path.resolve(__dirname, '..', 'nwjs');
80rimraf.sync(dest);
81
82var bar = createBar({ before: url + ' [' });
83
84var total = 0;
85var progress = 0;
86
87var parsedUrl = urlModule.parse(url);
88var decompressOptions = { strip: 1, mode: '755' };
89var filePath;
90if( parsedUrl.protocol == 'file:' ) {
91 filePath = path.resolve(
92 decodeURIComponent(
93 url.slice( 'file://'.length )
94 )
95 );
96 if ( !fileExistsAndAvailable(filePath) ) logError(
97 'Could not find ' + filePath
98 );
99 new Decompress()
100 .src( filePath )
101 .dest( dest )
102 .use( Decompress.zip(decompressOptions) )
103 .use( Decompress.targz(decompressOptions) )
104 .run( cb );
105} else {
106 download(url, dest, merge({ extract: true }, decompressOptions))
107 .then(function() {cb();})
108 .catch(function(e) {cb(e);});
109}