vsc-material-theme/.gulp/tasks/icons-variants-json.ts

38 lines
1.3 KiB
TypeScript
Raw Normal View History

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();
});