e602df44c8
* remove lang, descrription in plugin script * remove languages import * Update README.md * fix: missing lang * clean: remove description * feat(Add Sources) (#15) * add many sources * add showToast * feat(Add Source): (#16) * add source * remove descriptions * Early Novel & Fast Novel (#1) * some more plugin * plugin * try something new * yes * try yes * genres is plural * fastnovel full fix * testings * early check * earlynovel fixed * showToast check * earlynovel done * fastnovel fixe * again * showToasts again * fix for fastnovel * done * for pr * Update freenovelupdates.js * MTL Reader and MTL Novel (#2) * first * test * wops * mtlreaders * ok * for PR * Nitro Scans and Novel Hold (#3) * start feature * more feature * something * eslint * yes * maybe * wa * asdasd * amazing * change it up * for pr * WPmangastream and Novelfull (#4) (#17) * source generation * fix json parse error * update plguins * delete fetchApi, nobleMTL (.js) * delete showToast.js * Typescript Support (#18) * Initial TS Config * Initial TS Config * Fix most errors * Fix test webserver * Fix webserver isPlugin not working * Fix typos * Add check if plugins have all the fields * Move exports.protected to the bottom of the plugin * Change username, reponame and branchname * Fix no exports error * Fix type * Fix typo in tsc_fix * Remove const from exports to not re-define consts * Readd const becuause exports may not exist. * Fix plugins to work in-app * Fix NobleMTL * Remove fix_ts.ts * Change template.ts * delete cheerio_space * move api into ./testweb * remove js dir * remove js dir (again) * remove ./js (again) * init multisrc generator (test) * remove module.exports in libs * madara generator * update template * rename generator, TS for hako * fix icon url for madara * fix icon for madara (again) * update Readme, nodemon * export default for all libs * fix madara novelurl * update: pluginId, name, filename for madara * feat: check same id error * update: precommit, fix: require.default * Revert "update: precommit, fix: require.default" This reverts commit c642c5c72241f13eccfe417210c22272c4739ffa. * Port all plugins to ts (#19) - fix cheerio - remove export default - fix spelling * update template * add multisrc noveltl, update generator param, fix web search * fix undefined id for Snailulitka * add rulate multisrc, fix max length textarea * add readwn multisrc * delete: erolate and rulate are in multisrc * Change broken extension and show error on commit for those files (#20) * Change to .broken.ts and show error on commit for those files * remove novelStatus * fix: wrong id in github action * remove mangastream multisrc * update icon for readwn multisrc --------- Co-authored-by: K1ngfish3r <trulyihu@gmail.com> Co-authored-by: Marcin Majewski <skilletssgames@gmail.com>
53 lines
1.5 KiB
TypeScript
53 lines
1.5 KiB
TypeScript
import path from "path";
|
|
import fs from "fs";
|
|
|
|
type GeneratedScript = {
|
|
lang: string;
|
|
filename: string;
|
|
pluginScript: string;
|
|
};
|
|
|
|
export type ScrpitGeneratorFunction = () => GeneratedScript[];
|
|
|
|
const isScriptGenerator = (s: unknown): s is ScrpitGeneratorFunction => {
|
|
return !!s && typeof s === "function";
|
|
};
|
|
|
|
const generate = async (name: string): Promise<boolean> => {
|
|
const generateAll: ScrpitGeneratorFunction | unknown =
|
|
require(`./${name}/generator`).generateAll;
|
|
if (!isScriptGenerator(generateAll)) return false;
|
|
|
|
const sources = generateAll();
|
|
|
|
for (let source of sources) {
|
|
const { lang, filename, pluginScript } = source;
|
|
if(!lang || !filename || !pluginScript){
|
|
console.warn(name, ": lang, filename, pluginScript are required!");
|
|
continue;
|
|
}
|
|
const pluginsDir = path.join(
|
|
path.dirname(path.dirname(__dirname)),
|
|
"plugins"
|
|
);
|
|
const filePath = path.join(pluginsDir, lang.toLowerCase(), filename.replace(/[\s-\.]+/g, "") + `[${name}].ts`);
|
|
fs.writeFileSync(filePath, pluginScript, { encoding: "utf-8" });
|
|
}
|
|
return true;
|
|
};
|
|
|
|
const run = async () => {
|
|
const sources = fs
|
|
.readdirSync(__dirname)
|
|
.filter((name) =>
|
|
fs.lstatSync(path.join(__dirname, name)).isDirectory()
|
|
);
|
|
|
|
for (let name of sources) {
|
|
const success = await generate(name);
|
|
if (success) console.log(name + " OK");
|
|
}
|
|
};
|
|
|
|
run();
|