const path = require('path'); const fs = require('fs'); const prettier = require('prettier'); const prettierConfig = require('../.prettierrc'); const MadaraSources = require('../src/sources/multisrc/madara/MadaraSources.json'); const AllSources = require('../src/sources/sources.json'); const getScraperName = scraperName => { let name = scraperName .replace(/\s+/g, '') .replace(/-/g, 'Dash') .replace(/\./g, 'Dot') .replace('1st', 'First'); return name; }; let content = "/**\n * This file is auto-generated\n */\n\nimport MadaraScraper from './MadaraScraper';\n\n"; MadaraSources.forEach(source => { content = content + `export const ${getScraperName( source.sourceName, )}Scraper = new MadaraScraper(${source.sourceId}, "${source.baseUrl}", "${ source.sourceName }", ${source.options ? JSON.stringify(source.options) : ''});\n\n`; }); content = prettier.format(content, { parser: 'typescript', ...prettierConfig, }); fs.writeFile( path.resolve(process.cwd(), 'src/sources/multisrc/madara/MadaraGenerator.ts'), content, error => { if (error) { console.log(error); } }, ); MadaraSources.forEach(madaraSource => { if (!AllSources.some(source => source.sourceId === madaraSource.sourceId)) { let allSourcesContent = AllSources; allSourcesContent.push({ sourceId: madaraSource.sourceId, sourceName: madaraSource.sourceName, icon: `https://github.com/LNReader/lnreader-sources/blob/main/multisrc/madara/icons/${madaraSource.sourceName .replace(/\s+/g, '') .toLowerCase()}.png?raw=true`, url: madaraSource.baseUrl, lang: madaraSource.options.lang || 'English', }); allSourcesContent = JSON.stringify(allSourcesContent); allSourcesContent = prettier.format(allSourcesContent, { parser: 'json5', quoteProps: 'preserve', trailingComma: 'none', }); fs.writeFile( path.resolve(process.cwd(), 'src/sources/sources.json'), allSourcesContent, error => { if (error) { console.log(error); } }, ); } });