UNPKG

@zendesk/zcli-themes

Version:

zcli theme commands live here

43 lines (42 loc) 1.87 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createZipArchive = void 0; const core_1 = require("@oclif/core"); const fs = require("fs"); const archiver = require("archiver"); const createZipArchive = (pkgPath, themePath, pkgName) => { const archive = archiver('zip'); return new Promise((resolve, reject) => { const output = fs.createWriteStream(pkgPath); output.on('error', (err) => { reject(err); }); output.on('close', () => { resolve(archive); }); archive.directory(`${themePath}/assets`, `${pkgName}/assets`); archive.directory(`${themePath}/settings`, `${pkgName}/settings`); archive.directory(`${themePath}/templates`, `${pkgName}/templates`); archive.directory(`${themePath}/translations`, `${pkgName}/translations`); archive.file(`${themePath}/manifest.json`, { name: `${pkgName}/manifest.json` }); archive.file(`${themePath}/script.js`, { name: `${pkgName}/script.js` }); archive.file(`${themePath}/style.css`, { name: `${pkgName}/style.css` }); archive.file(`${themePath}/thumbnail.png`, { name: `${pkgName}/thumbnail.png` }); archive.pipe(output); archive.finalize(); }); }; exports.createZipArchive = createZipArchive; async function createThemePackage(themePath) { core_1.CliUx.ux.action.start('Creating theme package'); const dateTimeFileName = new Date().toISOString().replace(/[^0-9]/g, ''); const pkgName = `theme-${dateTimeFileName}`; const pkgPath = `${themePath}/${pkgName}.zip`; await (0, exports.createZipArchive)(pkgPath, themePath, pkgName); core_1.CliUx.ux.action.stop('Ok'); return { file: fs.readFileSync(pkgPath), removePackage: () => fs.unlinkSync(pkgPath) }; } exports.default = createThemePackage;