@zendesk/zcli-themes
Version:
zcli theme commands live here
43 lines (42 loc) • 1.87 kB
JavaScript
;
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;