1 | 'use strict';
|
2 |
|
3 | const Logger = require('../logger');
|
4 | const fs = require('fs-extra');
|
5 | const child_process = require('child_process');
|
6 | const http = require('http');
|
7 | const message = require('../messages');
|
8 | const ROOT = __dirname + '/../..';
|
9 | const prompt = require('readline-sync').question;
|
10 | let kickVersion = fs.readJSONSync(ROOT + '/package.json').version;
|
11 |
|
12 | module.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 | };
|