sftp-open
Version:
open WinSCP with sftp-config.json
68 lines (46 loc) • 1.83 kB
JavaScript
;
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();
}