import * as fs from 'fs'; import * as path from 'path'; import { Parser } from './parser'; import { ensuredir } from './fs/ensuredir'; import { FileAST } from './fs/file-ast'; import { helper } from '../process-helper'; const CWD: string = process.cwd(); let { filesIndex, outIndex, outDir, writeDefinitions, files } = helper(); ensuredir(outDir); let filesContent: string[] = files.map(fileName => { let file: string; let filePath: string = path.join(CWD, fileName) try { file = fs.readFileSync(filePath, 'utf-8'); } catch (e) { throw new Error(e); } return file; }); let filesStringified = filesContent.join('\n'); let parserInstance = new Parser(filesStringified); parserInstance.parse(); if (writeDefinitions) { let output: string[] = []; parserInstance.blocks.forEach(block => { let filesContent: string; let fileAstInstance = new FileAST(block, writeDefinitions); let additional = parserInstance.getByBlock(block); additional.forEach(additional => fileAstInstance.addContent(additional)); output.push(fileAstInstance.toString()); }); fs.writeFile(path.join(outDir, 'ride-components.d.ts'), output.join('\n'), error => { if (error) return console.trace(error); }); } else { parserInstance.blocks.forEach(block => { let filesContent: string; let fileAstInstance = new FileAST(block, writeDefinitions); let additional = parserInstance.getByBlock(block); additional.forEach(additional => fileAstInstance.addContent(additional)); fs.writeFile(path.join(outDir, fileAstInstance.name), fileAstInstance.toString(), error => { console.log(`Created file ${fileAstInstance.name}`) if (error) return console.trace(error); }); }); }