UNPKG

@unisnips/unisnips

Version:

cli of unisnips project, convert ultisnips snippet to vscode/atom and other targets

106 lines 3.77 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var fs_1 = __importDefault(require("fs")); var path_1 = __importDefault(require("path")); var signale_1 = __importDefault(require("signale")); var mkdirp_1 = __importDefault(require("mkdirp")); var readline_1 = __importDefault(require("readline")); var yargs_1 = __importDefault(require("yargs")); var util_1 = require("../common/util"); var sync_1 = require("../services/sync"); var cwd = process.cwd(); var DEFAULT_OPTIONS = { input: '', output: '', source: '', target: '', }; var SYNC_MODULE = { command: 'sync', describe: 'Sync snippet from one source to another target', builder: { input: { alias: 'i', describe: 'input file path', required: true, }, output: { alias: 'o', describe: 'output directory', }, source: { alias: 's', describe: "Source type, default is 'ultisnips'", }, target: { alias: 't', describe: "Target type, default is 'vscode'", }, }, handler: function (argv) { var options = util_1.getCliOptionsByDefault(argv, DEFAULT_OPTIONS); // console.log('options', options) if (!options.input) { return yargs_1.default.showHelp(); } var fileContent = fs_1.default.readFileSync(options.input).toString(); var syncInfo = sync_1.sync({ source: options.source, target: options.target, inputContent: fileContent, snippetsFilePath: options.input, }); if (!syncInfo) { signale_1.default.error('Sync failed'); return; } if (options.output) { var outputDir_1 = path_1.default.resolve(cwd, options.output); var fileInfos_1 = syncInfo.entries.map(function (entry) { var p = path_1.default.join(outputDir_1, entry.filename); return __assign({ path: p }, entry); }); var filePaths = fileInfos_1.map(function (o) { return o.path; }); signale_1.default.info("Will write to:\n" + filePaths.join('\n')); var rl_1 = readline_1.default.createInterface({ input: process.stdin, output: process.stdout, }); rl_1.question('Confirmed? y/n\n', function (answer) { rl_1.close(); if (answer !== 'y') { return; } mkdirp_1.default.sync(outputDir_1); fileInfos_1.forEach(function (entry) { fs_1.default.writeFileSync(entry.path, entry.content); }); signale_1.default.success("Synced"); }); rl_1.write('y'); } else { signale_1.default.info('No output, just print sync info:'); syncInfo.entries.forEach(function (entry) { signale_1.default.info("Filename: " + entry.filename); console.log(entry.content); }); } }, }; exports.default = SYNC_MODULE; //# sourceMappingURL=sync.js.map