UNPKG

1.74 kBJavaScriptView Raw
1'use strict';
2
3const Logger = require('../logger');
4const fs = require('fs-extra');
5const child_process = require('child_process');
6const http = require('http');
7const message = require('../messages');
8const ROOT = __dirname + '/../..';
9const prompt = require('readline-sync').question;
10let kickVersion = fs.readJSONSync(ROOT + '/package.json').version;
11
12module.exports = function () {
13 Logger.log(message.upgrade.checking);
14
15 http.get('http://registry.npmjs.org/kick/latest', (response) => {
16 let body = '';
17
18 response.on('data', (data) => body += data);
19 response.on('end', () => {
20 const newVersion = JSON.parse(body).version;
21
22 if (kickVersion === newVersion) {
23 Logger.log(message.upgrade.alreadyLatest(kickVersion));
24 } else {
25 Logger.blankLine();
26 Logger.log(message.upgrade.available(newVersion));
27 Logger.log(message.upgrade.yourVersion(kickVersion));
28
29 Logger.log(message.upgrade.upgradeQuestion);
30 const answer = prompt(' Yes'.green + ' or ' + 'No: '.red);
31
32 switch (answer.toLowerCase()) {
33 case '':
34 case 'yes':
35 case 'y':
36 Logger.blankLine();
37 upgradeKick();
38 break;
39 default:
40 Logger.blankLine();
41 Logger.log(message.upgrade.yourself);
42 Logger.blankLine();
43 return;
44 }
45 }
46 });
47 });
48
49 function upgradeKick() {
50 Logger.log('Updating kick...'.white);
51
52 child_process.execSync('npm install -g kick');
53 kickVersion = fs.readJSONSync(ROOT + '/package.json').version;
54 Logger.log('Your kick version is now: '.green + kickVersion.blue);
55 Logger.done();
56 }
57};