scripts/generate-assets.js (39 lines of code) (raw):

const path = require('path'); const Promise = require('bluebird'); const { FileSet, Archive, utils } = require('../lib'); const config = require('./generate-assets.config'); const cli = utils.getCLIArgs(); if (!cli['dist']) { console.error('--dist key is missing'); process.exit(1); } const rootDir = path.resolve(__dirname, '..'); const logosDir = path.resolve(rootDir, 'web'); const distDir = path.resolve(rootDir, cli['dist']); const archives = new Map(); Promise.map(config.sets, (data) => { const pattern = typeof data.pattern === 'string' ? [data.pattern] : data.pattern; const absPattern = pattern.map(p => `${logosDir}/${p}`); const setData = Object.assign(data, { pattern: absPattern }); return FileSet.create(setData).then((set) => Promise.map(set.files, (file) => { const archivePath = setData.archivePath(file); let archive = archives.get(archivePath); if (!archives.has(archivePath)) { const archiveAbsPath = path.resolve(distDir, archivePath); archive = new Archive(archiveAbsPath); archives.set(archivePath, archive); } return setData.action(file, archive).then(() => { const p = path.relative(logosDir, file.path); console.log(p); }); })); }) .then(() => Promise.map(archives.values(), (arch) => { return arch.finalize(); })) .then(() => process.exit(0)) .catch((e) => { console.log(e); process.exit(1); });