UNPKG

sicksync

Version:

Don’t accept the available as the preferable. Go extra mile with extra speed.

160 lines (116 loc) 4.55 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.getLatestVersion = undefined; exports.updateRemote = updateRemote; exports.updateLocal = updateLocal; exports.update = update; exports.notify = notify; exports.check = check; exports.migrate1to2 = migrate1to2; exports.migrateConfig = migrateConfig; var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var _latestVersion = require('latest-version'); var _latestVersion2 = _interopRequireDefault(_latestVersion); var _fsExtra = require('fs-extra'); var _fsExtra2 = _interopRequireDefault(_fsExtra); var _child_process = require('child_process'); var _os = require('os'); var _path = require('path'); var _untildify = require('untildify'); var _untildify2 = _interopRequireDefault(_untildify); var _util = require('./util'); var util = _interopRequireWildcard(_util); var _package = require('../package.json'); var _constants = require('../conf/constants'); var _constants2 = _interopRequireDefault(_constants); var _text = require('../conf/text'); var _text2 = _interopRequireDefault(_text); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const now = Date.now(); const updateInfo = _fsExtra2.default.existsSync(util.getUpdatePath()) ? require(util.getUpdatePath()) : { lastChecked: 0, version: _package.version }; const getLatestVersion = exports.getLatestVersion = _lodash2.default.partial(_lodash2.default.ary(_latestVersion2.default, 2), 'sicksync'); function updateRemote(project) { const ssh = util.shellIntoRemote(project.username + '@' + project.hostname); const updateRemoteOnce = _lodash2.default.once(function (stdin) { stdin.write(_constants2.default.UPDATE_CMD + '\n'); }); // Update devbox ssh.stdout.on('data', data => { const message = data.toString(); if (_lodash2.default.includes(message, 'sicksync@')) { console.info(project.hostname, _text2.default.UPDATE_SUCCESS); return ssh.kill('SIGINT'); } if (_lodash2.default.includes(message, 'ERR!')) { console.info(project.hostname, _text2.default.UPDATE_FAIL); return ssh.kill('SIGINT'); } updateRemoteOnce(ssh.stdin); }); } function updateLocal() { (0, _child_process.exec)(_constants2.default.UPDATE_CMD, (error, stdout, stderr) => { if (!!error || _lodash2.default.includes(stderr, 'ERR!')) { return console.info(_os.hostname, _text2.default.UPDATE_FAIL, error || stderr); } console.info((0, _os.hostname)(), _text2.default.UPDATE_SUCCESS); }); } function update(config, opts) { if (opts.check) { return getLatestVersion(function (err, version) { if (err) return; console.info(_text2.default.UPDATE_AVAILABLE, '\n', 'Current version:', _package.version, '\n', 'Latest version:', version); }); } if (opts.migrateConfig) { return migrateConfig(config); } _lodash2.default.each(config.projects, updateRemote); updateLocal(); } function notify() { if (updateInfo.version !== _package.version) { return console.info(_text2.default.UPDATE_AVAILABLE, '\n', 'Current version:', _package.version, '\n', 'Latest version:', updateInfo.version); } } function check() { if (now - updateInfo.lastChecked >= _constants2.default.UPDATE_INTERVAL) { getLatestVersion(function (err, version) { if (err) return; _fsExtra2.default.writeFileSync(util.getUpdatePath(), JSON.stringify({ version: version, lastChecked: now })); }); } } function migrate1to2(config) { if (_lodash2.default.isEmpty(config)) { const configLocation = (0, _untildify2.default)(_constants2.default.CONFIG_FILE_V1); config = require(configLocation); _fsExtra2.default.delete(configLocation); } config.project = (0, _path.basename)(config.sourceLocation); return { version: _package.version, debug: config.debug, projects: [_lodash2.default.mapKeys(config, (value, key) => { if (key === 'userName') return 'username'; return key; })] }; } function migrateConfig(config) { const configVersion = config.version ? config.version.replace(/\./g, '') : null; if (!configVersion) { util.writeConfig(migrate1to2(config)); } }