UNPKG

@skybloxsystems/ticket-bot

Version:
36 lines (28 loc) 1.07 kB
const path = require('path'); const fs = require('fs-extra'); class SaveResourceToFileSystemPlugin { apply (registerAction) { let absoluteDirectoryPath, loadedResources = []; registerAction('beforeStart', ({options}) => { if (!options.directory || typeof options.directory !== 'string') { throw new Error(`Incorrect directory ${options.directory}`); } absoluteDirectoryPath = path.resolve(process.cwd(), options.directory); if (fs.existsSync(absoluteDirectoryPath)) { throw new Error(`Directory ${absoluteDirectoryPath} exists`); } }); registerAction('saveResource', async ({resource}) => { const filename = path.join(absoluteDirectoryPath, resource.getFilename()); const text = resource.getText(); await fs.outputFile(filename, text, { encoding: 'binary' }); loadedResources.push(resource); }); registerAction('error', async () => { if (loadedResources.length > 0) { await fs.remove(absoluteDirectoryPath); } }); } } module.exports = SaveResourceToFileSystemPlugin;