import { Colour } from './colour'; import { ColoursFile } from './files'; import { helper } from '../process-helper'; import { IColourMap } from './icolour-map'; import { ensuredir } from '../classnames/fs/ensuredir'; import * as path from 'path'; import * as fs from 'fs'; const CWD: string = process.cwd(); let { filesIndex, outIndex, outDir, writeDefinitions, files } = helper(); if (outIndex) ensuredir(outDir); files.forEach(file => { let colours: Colour[]; let coloursFile: string[] = []; let coloursMap: IColourMap = {}; let lines: string[]; let fileContent = fs.readFileSync(file, 'utf-8'); lines = fileContent.split(/\n/) .filter(line => line.indexOf('//')) .filter(line => line && line.length) colours = lines.map(line => new Colour(line)); colours.forEach(colour => coloursMap[colour.groupname] = []); colours.forEach(colour => coloursMap[colour.groupname].push(colour)); Object.keys(coloursMap).forEach(colourName => { let colourFile: ColoursFile = new ColoursFile(colourName, outDir, coloursMap); colourFile.makeOutput(writeDefinitions); if (!writeDefinitions) colourFile.write(); coloursFile.push(colourFile.toString()); }); if (writeDefinitions) { fs.writeFileSync( path.join(outDir, './ride-components-colours.d.ts'), coloursFile.join('\n') ); } });