UNPKG

ts-sql-codegen

Version:

Generates ts-sql-query table mappings from tbls schema output

79 lines 3.76 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.FileRemover = void 0; const promises_1 = __importDefault(require("node:fs/promises")); const glob_1 = require("glob"); const posix_1 = __importDefault(require("path/posix")); const prompts_1 = __importDefault(require("prompts")); class FileRemover { constructor(opts, writtenFiles, logger) { this.opts = opts; this.writtenFiles = writtenFiles; this.logger = logger; } removeExtraneousFiles() { return __awaiter(this, void 0, void 0, function* () { if (!this.opts.removeExtraneous || this.opts.removeExtraneous === 'never') { return; } const paths = yield (0, glob_1.glob)('*', { cwd: posix_1.default.resolve(this.opts.outputDirPath) }); const extraneousPaths = paths.filter(p => !this.writtenFiles.has(p)); if (!extraneousPaths.length) { return; } let pathsToDelete = []; if (this.opts.removeExtraneous === 'all') { pathsToDelete = extraneousPaths; } else if (this.opts.removeExtraneous === 'interactively') { const { selection } = yield (0, prompts_1.default)({ type: 'select', name: 'selection', message: `${extraneousPaths.length} extraneous files found after code generation. Select ones to delete:`, choices: [ { title: 'All', value: '$all' }, { title: 'None', value: '$none' }, { title: 'Select Individually', value: '$pick' } ] }); switch (selection) { case '$all': { pathsToDelete = extraneousPaths; break; } case '$pick': { const { candidates } = yield (0, prompts_1.default)({ type: 'multiselect', name: 'candidates', message: `Select files to delete:`, choices: extraneousPaths.map(value => ({ title: value, value })), hint: '- Space to select. Return to submit' }); pathsToDelete.push(...candidates); break; } } } this.logger.info(`Deleting ${pathsToDelete.length} files: `, pathsToDelete.join(', ')); yield Promise.all(pathsToDelete.map((p) => promises_1.default.rm(posix_1.default.join(this.opts.outputDirPath, p), { recursive: true }))); }); } } exports.FileRemover = FileRemover; //# sourceMappingURL=file-remover.js.map