38 lines
1.3 KiB
TypeScript
38 lines
1.3 KiB
TypeScript
|
import * as fs from 'fs';
|
||
|
import * as gulp from 'gulp';
|
||
|
|
||
|
import {resolve} from 'path';
|
||
|
import {IDefaultsThemeIconVariant} from './../../extensions/interfaces/idefaults';
|
||
|
import {getDefaultValues, getVariantIcons} from './../../extensions/helpers/fs';
|
||
|
import {PATHS} from '../../extensions/consts/paths';
|
||
|
import {CHARSET} from '../../extensions/consts/files';
|
||
|
|
||
|
/**
|
||
|
* For each ThemeIconVariant create a Material-Theme-Icons-{variant}.json
|
||
|
* depends on default Material-Theme-Icons.json
|
||
|
*/
|
||
|
export default gulp.task('build:icons.variants-json', callback => {
|
||
|
try {
|
||
|
const variants: IDefaultsThemeIconVariant = getDefaultValues().themeIconVariants;
|
||
|
const defaults = fs.readFileSync(resolve(`${PATHS.THEMES}/Material-Theme-Icons.json`), 'utf8');
|
||
|
Object.keys(variants).forEach(variantName => {
|
||
|
const jsonDefaults = JSON.parse(defaults);
|
||
|
|
||
|
getVariantIcons().forEach(iconname => {
|
||
|
const newIconPath = jsonDefaults.iconDefinitions[iconname].iconPath.replace('.svg', `${variantName}.svg`);
|
||
|
jsonDefaults.iconDefinitions[iconname].iconPath = newIconPath;
|
||
|
|
||
|
fs.writeFileSync(
|
||
|
`${PATHS.THEMES}/Material-Theme-Icons-${variantName}.json`,
|
||
|
JSON.stringify(jsonDefaults),
|
||
|
{encoding: CHARSET}
|
||
|
);
|
||
|
});
|
||
|
});
|
||
|
} catch (error) {
|
||
|
return callback(error);
|
||
|
}
|
||
|
|
||
|
callback();
|
||
|
});
|