UNPKG

paco

Version:

Node package development/distribution utility kit

94 lines (68 loc) 2.98 kB
'use strict'; var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; })(); function _toArray(arr) { return Array.isArray(arr) ? arr : Array.from(arr); } var exec = require('child_process').exec; var colors = require('colors'); var Q = require('q'); var connectivity = require('./connectivity'); function parseVersion(ver) { var _ver$split = ver.split('-'); var _ver$split2 = _toArray(_ver$split); var numbers = _ver$split2[0]; var suffixes = _ver$split2.slice(1); var _numbers$split$map = numbers.split('.').map(function (num) { return parseInt(num); }); var _numbers$split$map2 = _slicedToArray(_numbers$split$map, 3); var major = _numbers$split$map2[0]; var minor = _numbers$split$map2[1]; var patch = _numbers$split$map2[2]; return { major: major, minor: minor, patch: patch }; } function getVersionDiff(v1, v2) { var ver1 = parseVersion(v1); var ver2 = parseVersion(v2); return { major: ver2.major - ver1.major, minor: ver2.minor - ver1.minor, patch: ver2.patch - ver1.patch }; } function getLatestVersion() { return Q.promise(function (resolve, reject) { exec('npm view paco version', { encoding: 'utf-8' }, function (err, stdout) { if (err) { return reject(err); } resolve(stdout.trim()); }); }); } function isOldVersion(v1, v2) { var diff = getVersionDiff(v1, v2); return diff.major > 0 || diff.minor >= 2; } function logOutdatedInfo(version, latest) { var dot = '· '.red; console.log(dot + '\n' + dot + 'Your version paco is becoming outdated:'.red + '\n' + dot + '\n' + dot + ' Your version: ' + version.yellow + '\n' + dot + ' Latest version: ' + latest.yellow + '\n' + dot + '\n' + dot + 'Run ' + '`npm i -g paco`'.bold + ' to update.\n' + dot + '\n'); } module.exports.checkOutdatedVersion = function () { return connectivity.hasInternetConnection().then(function (connected) { if (!connected) { return false; } var version = require('../../package.json').version; return Q.any([getLatestVersion(), Q.delay(1000)]).then(function (latest) { if (!latest) { return false; } var isOutdated = isOldVersion(version, latest); if (isOutdated) { logOutdatedInfo(version, latest); } return true; }); }).catch(function (err) { return console.error(err); }); };