UNPKG

3.01 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);
39
40// Determine download url
41switch (process.platform) {
42 case 'win32':
43 url = urlBase + version + '/nwjs' + buildTypeSuffix + '-v' + version + '-win-' + arch +'.zip';
44 break;
45 case 'darwin':
46 url = urlBase + version + '/nwjs' + buildTypeSuffix + '-v' + version + '-osx-' + arch + '.zip';
47 break;
48 case 'linux':
49 url = urlBase + version + '/nwjs' + buildTypeSuffix + '-v' + version + '-linux-' + arch + '.tar.gz';
50 break;
51}
52
53function logError(e) {
54 console.error(chalk.bold.red((typeof e === 'string') ? e : e.message));
55 process.exit(1);
56}
57
58function cb(error) {
59 if( error != null ) {
60 return logError( error )
61 }
62
63 process.nextTick(function() {
64 process.exit();
65 });
66}
67
68function fileExistsAndAvailable(filepath) {
69 try {
70 return fileExists(filepath);
71 } catch(err) {
72 return false;
73 }
74}
75
76if (!url) logError('Could not find a compatible version of nw.js to download for your platform.');
77
78var dest = path.resolve(__dirname, '..', 'nwjs');
79rimraf.sync(dest);
80
81var bar = createBar({ before: url + ' [' });
82
83var total = 0;
84var progress = 0;
85
86var parsedUrl = urlModule.parse(url);
87var decompressOptions = { strip: 1, mode: '755' };
88var filePath;
89if( parsedUrl.protocol == 'file:' ) {
90 filePath = path.resolve(
91 decodeURIComponent(
92 url.slice( 'file://'.length )
93 )
94 );
95 if ( !fileExistsAndAvailable(filePath) ) logError(
96 'Could not find ' + filePath
97 );
98 new Decompress()
99 .src( filePath )
100 .dest( dest )
101 .use( Decompress.zip(decompressOptions) )
102 .use( Decompress.targz(decompressOptions) )
103 .run( cb );
104} else {
105 download(url, dest, merge({ extract: true }, decompressOptions))
106 .then(function() {cb();})
107 .catch(function(e) {cb(e);});
108}