UNPKG

sftp-open

Version:

open WinSCP with sftp-config.json

68 lines (46 loc) 1.83 kB
#!/usr/bin/env node 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.commandTemplate = undefined; exports.openWinscpByPath = openWinscpByPath; exports.openWinscp = openWinscp; var _json = require('json5'); var _json2 = _interopRequireDefault(_json); var _fs = require('fs'); var _path = require('path'); var _child_process = require('child_process'); var _package = require('../package'); var _stringFormat = require('string-format'); var _stringFormat2 = _interopRequireDefault(_stringFormat); var _commander = require('commander'); var _commander2 = _interopRequireDefault(_commander); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const commandTemplate = exports.commandTemplate = '"{winscp}" {type}://"{user}":"{password}"@{host}:{port}"{remote_path}" /rawsettings LocalDirectory="{local_path}"'; function openWinscpByPath(sftpConfigPath) { const sftpConfigString = (0, _fs.readFileSync)(sftpConfigPath).toString(); const sftpConfig = _json2.default.parse(sftpConfigString); openWinscp({ type: sftpConfig.type, host: sftpConfig.host, port: sftpConfig.port, user: sftpConfig.user, password: sftpConfig.password, remote_path: sftpConfig.remote_path, local_path: (0, _path.dirname)(sftpConfigPath), winscp: 'WinSCP' }); } function openWinscp(opts) { (0, _child_process.spawn)('sh', ['-c', (0, _stringFormat2.default)(commandTemplate, opts)], { detached: true }).unref(); } exports.default = openWinscp; if (require.main === module) { const app = _commander2.default.version(_package.version).arguments('<sftp-config.json>').action(openWinscpByPath).parse(process.argv); // show help message by default if (app.args.length === 0) { app.help(); } process.exit(); }