UNPKG

qforce

Version:

Commands to help with salesforce development.

79 lines (78 loc) 3.62 kB
"use strict"; 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 = [];