scripts/generate-assets.config.js (50 lines of code) (raw):
// TODO simplify
const TransformRule = require('./../lib/transform-rule');
/**
* @param {File} file
* @param {Archive} archive
* @param {Object<string, Object<width:number, height:number>>} rules
* @return {Promise}
*/
function convertToPNGAndCopyOriginalToArchive(file, archive, rules) {
const isTextLogo = file.basename.endsWith('-text');
const rule = new TransformRule(isTextLogo ? rules.textLogo : rules.logo);
archive.addFile(file.path, file.filename);
if (file.extension === 'svg') {
return rule.transformToPNG(file).then((png) => {
return archive.addFileFromBuffer(png.content, png.filename);
});
}
return Promise.resolve();
}
const rules = {
logo: { width: 2000 },
textLogo: { height: 500 }
};
const sets = [
{
pattern: 'jetbrains/{jetbrains,jetbrains-variant-?}.svg',
archivePath: file => `jetbrains/docs/${file.basename}_logos.zip`,
action: (file, archive) => convertToPNGAndCopyOriginalToArchive(file, archive, rules)
},
{
pattern: 'jetbrains/{jetbrains,jetbrains-variant-?}-grayscale.svg',
archivePath: file => 'jetbrains/docs/jetbrains-grayscale_logos.zip',
action: (file, archive) => convertToPNGAndCopyOriginalToArchive(file, archive, rules)
},
{
pattern: 'jetbrains/{jetbrains,jetbrains-variant-?}-blackandwhite.svg',
archivePath: file => 'jetbrains/docs/jetbrains-blackandwhite_logos.zip',
action: (file, archive) => convertToPNGAndCopyOriginalToArchive(file, archive, rules)
},
{
pattern: 'jetbrains/*-{reseller,partner}.svg',
archivePath: file => `jetbrains/docs/${file.basename}_logos.zip`,
action: (file, archive) => convertToPNGAndCopyOriginalToArchive(file, archive, rules)
},
{
pattern: [
'*/{boxshot.png,*.pdf}',
'!jetbrains/**'
],
archivePath: file => `${file.dirname}/docs/${file.dirname}_logos.zip`,
action: (file, archive) => convertToPNGAndCopyOriginalToArchive(file, archive, rules)
}
];
module.exports = {
rules,
sets
};