codess
Version:
vscode代码片段管理器,通过 本地包(本地某个文件夹) 或官网的 远程包(代码片段集合) 生成本地项目的 vscode 代码片段配置。
105 lines (104 loc) • 3.78 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.saveDefSnippets = saveDefSnippets;
exports.clearSnippets = clearSnippets;
exports.saveSnippetsConfig = saveSnippetsConfig;
exports.getSnippetsSaveName = getSnippetsSaveName;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const packageJSON_1 = require("./config/packageJSON");
const seting_1 = require("./seting");
const fs_2 = require("./utils/fs");
const snippet_1 = require("./snippet");
function saveDefSnippets() {
let items = [
{
prefix: packageJSON_1.packageJSON.name,
type: 'group',
body: '',
children: [
{
type: 'snippet',
prefix: 'separate',
body: ['## ${1:prefix}', '${2:description}', '```${3:language}', '', '```'].join('\n'),
description: 'snippet template',
},
],
},
{
type: 'snippet',
prefix: packageJSON_1.packageJSON.name,
body: [
`\${0:Welcome to use${packageJSON_1.packageJSON.name}`,
packageJSON_1.packageJSON.description,
`Official website: ${seting_1.seting.officialWebsite}}`,
].join('\n'),
description: packageJSON_1.packageJSON.description,
},
];
saveSnippetsConfig(JSON.stringify((0, snippet_1.toSnippetConfig)(items), undefined, 4), packageJSON_1.packageJSON.name);
}
function clearSnippets(packageIgnores = []) {
var _a;
let fileIgnores = [
...packageIgnores,
{
type: '',
package: packageJSON_1.packageJSON.name,
},
].map((_) => {
return getSnippetsSaveName(_.package, _.type);
});
let vscodePath = path_1.default.join(process.cwd(), './.vscode/');
if ((_a = (0, fs_2.statSync)(vscodePath)) === null || _a === void 0 ? void 0 : _a.isDirectory()) {
fs_1.default.readdirSync(vscodePath).forEach((i) => {
var _a;
if (new RegExp(`\\.${packageJSON_1.packageJSON.name}\\.code-snippets`).test(i) &&
!fileIgnores.includes(i) &&
((_a = (0, fs_2.statSync)(path_1.default.join(vscodePath, i))) === null || _a === void 0 ? void 0 : _a.isFile())) {
(0, fs_2.rmSync)(path_1.default.join(vscodePath, i));
}
});
}
}
function saveSnippetsConfig(str, packageName, type) {
let vscodePath = path_1.default.join(process.cwd(), './.vscode/');
try {
fs_1.default.mkdirSync(vscodePath);
}
catch (_a) {
}
let _path = path_1.default.join(vscodePath, getSnippetsSaveName(packageName, type));
if (str) {
fs_1.default.writeFileSync(_path, [
`// ${packageName}`,
`// Generated by ${packageJSON_1.packageJSON.name},Please do not modify it`,
`// ${packageJSON_1.packageJSON.name} Official website: ${seting_1.seting.officialWebsite}`,
str,
].join('\n'));
}
else {
try {
(0, fs_2.rmSync)(_path);
}
catch (_b) { }
}
}
function getSnippetsSaveName(packageName, type) {
let str = '';
switch (type) {
case 'file':
str = encodeURIComponent(packageName);
break;
case 'web':
str = packageName;
break;
case 'github':
str = encodeURIComponent(packageName);
break;
}
return `${str ? str + '.' : ''}${packageJSON_1.packageJSON.name}.code-snippets`;
}