@unisnips/unisnips
Version:
cli of unisnips project, convert ultisnips snippet to vscode/atom and other targets
106 lines • 3.77 kB
JavaScript
;
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