UNPKG

run-on-ssh

Version:

Run a node.js script on a given ssh server

93 lines (71 loc) 2.92 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray'); var _slicedToArray3 = _interopRequireDefault(_slicedToArray2); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); exports.default = runOnSsh; var _promise = require('promise'); var _promise2 = _interopRequireDefault(_promise); var _ssh = require('./ssh'); var _ssh2 = _interopRequireDefault(_ssh); var _readFolder = require('./read-folder'); var _readFolder2 = _interopRequireDefault(_readFolder); var _copyEntriesToDir = require('./copy-entries-to-dir'); var _copyEntriesToDir2 = _interopRequireDefault(_copyEntriesToDir); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } // remote = {host: ipAddress, port: 22, username: 'root', password} function runOnSsh(_ref) { var remote = _ref.remote; var directory = _ref.directory; var nodeVersion = _ref.nodeVersion; var debug = _ref.debug; nodeVersion = nodeVersion || process.version; function getConnection() { return new _ssh2.default((0, _extends3.default)({ port: 22, username: 'root' }, remote), { debug: debug }); } var connection = getConnection(); var ready = _promise2.default.all([(0, _readFolder2.default)(directory, nodeVersion), connection.ready]).then(function (_ref2) { var _ref3 = (0, _slicedToArray3.default)(_ref2, 1); var dir = _ref3[0]; return connection.exec('cd ~/' + dir.hash).catch(function () { return (0, _copyEntriesToDir2.default)(connection, dir.entries, '~/' + dir.hash).then(function () { return connection.exec(['cd ~/' + dir.hash, 'nvm install ' + nodeVersion, 'npm install']); }); }).then(function () { return dir.hash; }); }).finally(function () { return connection.close(); }); function runCommand(_ref4) { var env = _ref4.env; var args = _ref4.args; env = env || {}; args = args || []; var envString = (0, _keys2.default)(env).map(function (key) { return key + '="' + env[key] + '" '; }).join(' '); var argsString = args.map(function (arg) { return ' "' + arg + '"'; }).join(''); return ready.then(function (dirHash) { var connection = getConnection(); return connection.ready.then(function () { return connection.exec(['cd ~/' + dirHash, 'nvm use ' + nodeVersion, envString + 'node index.js' + argsString], { debug: typeof debug === 'undefined' ? process.env.NODE_ENV !== 'production' : debug }); }).then(function (stdout) { return stdout.replace(/^Now using.*\n/, ''); }).finally(function () { return connection.close(); }); }); } return runCommand; }