qforce
Version:
Commands to help with salesforce development.
79 lines (78 loc) • 3.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const command_1 = require("@oclif/command");
const utility_1 = require("../../helper/utility");
const snippets_1 = require("../../helper/snippets");
const path = require('path');
const fs = require('fs');
const _ = require('lodash');
class DevSnippet extends command_1.Command {
async run() {
const { args, flags } = this.parse(DevSnippet);
let qforceSnippets = {};
let settings;
if (fs.existsSync(utility_1.getAbsolutePath('.qforce/settings.json'))) {
settings = JSON.parse(fs.readFileSync(utility_1.getAbsolutePath('.qforce/settings.json')));
}
if (!fs.existsSync(utility_1.getAbsolutePath('.vscode'))) {
fs.mkdirSync(utility_1.getAbsolutePath('.vscode'), { recursive: true });
}
if (fs.existsSync(utility_1.getAbsolutePath('.vscode/qforce.code-snippets'))) {
qforceSnippets = JSON.parse(fs.readFileSync(utility_1.getAbsolutePath('.vscode/qforce.code-snippets')));
}
if (!qforceSnippets) {
qforceSnippets = snippets_1.migrateSnippets;
}
else {
for (let key in snippets_1.migrateSnippets) {
qforceSnippets[key] = snippets_1.migrateSnippets[key];
}
}
if (!flags.init && !flags.alias) {
this.log('Must provide alias to proceed.');
return;
}
let filePath = flags.path || '';
if (flags.query) {
filePath = settings.queryFilePath;
}
else if (flags.exe) {
filePath = settings.exeFilePath;
}
if (filePath && fs.existsSync(utility_1.getAbsolutePath(filePath))) {
let content = fs.readFileSync(utility_1.getAbsolutePath(filePath), 'utf8');
if (content)
content += '$0';
let snippet = {};
let key = flags.alias || 'q1';
let body = content.split('\n');
_.remove(body, (line) => {
return line.startsWith('//') || line.trim() === '';
});
snippet.prefix = key;
snippet.body = body;
qforceSnippets[key] = snippet;
}
else if (filePath) {
this.log('Path provided lead no where...');
}
fs.writeFileSync(utility_1.getAbsolutePath('.vscode/qforce.code-snippets'), JSON.stringify(qforceSnippets, null, 4), { encoding: 'utf-8' });
}
}
exports.default = DevSnippet;
DevSnippet.description = 'Generates VS Code snippets to help using qforce.';
DevSnippet.aliases = ['snippet', 'dev:snippet'];
DevSnippet.examples = [
'$ qforce snippet --init //Creates a snippets file for saving qforce related snippets.',
'$ qforce snippet -q -a q_1 //Saves contents of queryFilePath into a snippet named q_1.',
'$ qforce snippet -q -e e_1 //Saves contents of exeFilePath into a snippet named e_1.',
];
DevSnippet.flags = {
help: command_1.flags.help({ char: 'h' }),
init: command_1.flags.boolean({ char: 'i', description: 'To initialize snippet file.' }),
query: command_1.flags.boolean({ char: 'q', description: 'Create alias for query at default query path.' }),
exe: command_1.flags.boolean({ char: 'e', description: 'Create alias for anonymous apex at default exe path.' }),
alias: command_1.flags.string({ char: 'a', description: 'Alias for the snippet' }),
path: command_1.flags.string({ char: 'p', description: 'Path to file that needs to be converted to snippet. Required if query/exe flags not passed' })
};
DevSnippet.args = [];