Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | 2x 4x 4x 4x 4x 2x 2x 1x 1x 1x 1x 1x 2x 16x 1x 1x 1x 1x | // Externals
import { ExtensionContext, Uri, window } from "vscode";
// Internals
import BaseCommand from "../base-command";
import { getSingleFolder } from "../helpers";
import allTemplates from "./index";
import SingleTemplate from "./single-template";
class MultiTemplate extends BaseCommand {
static readonly PLACEHOLDER = "Pick templates to create...";
constructor() {
super("templates.create", "Create Template Files", "t");
}
async handler(context: ExtensionContext, ...args: any[]): Promise<void> {
await super.handler(context, ...args);
const picked = await this.showTemplateQuickPick();
if (picked && picked.length) {
const folder = await getSingleFolder();
if (folder) {
const templates = picked
.map((p) => allTemplates.find((t) => t.name === p))
.filter((t): t is SingleTemplate => t !== undefined);
const createdFiles = await this.createTemplateFiles(templates, folder);
await this.showSuccessMessages(templates, createdFiles);
}
}
}
async showTemplateQuickPick(): Promise<string[] | undefined> {
return window.showQuickPick(
allTemplates.map((t) => t.name),
{
canPickMany: true,
placeHolder: MultiTemplate.PLACEHOLDER,
ignoreFocusOut: true,
}
);
}
async createTemplateFiles(
templates: SingleTemplate[],
folder: Uri
): Promise<string[]> {
return Promise.all(
templates.map((template) => template.writeTemplateFile(folder))
);
}
async showSuccessMessages(
templates: SingleTemplate[],
files: string[]
): Promise<void[]> {
return Promise.all(
templates.map((template, i) => template.showSuccessMessage(files[i]))
);
}
}
export default MultiTemplate;
|