diff --git a/dist/module/Discord Revamp.js b/dist/module/Discord Revamp.js new file mode 100644 index 0000000..7d51887 --- /dev/null +++ b/dist/module/Discord Revamp.js @@ -0,0 +1,3 @@ +parcelRequire=function(e,r,t,n){var i,o="function"==typeof parcelRequire&&parcelRequire,u="function"==typeof require&&require;function f(t,n){if(!r[t]){if(!e[t]){var i="function"==typeof parcelRequire&&parcelRequire;if(!n&&i)return i(t,!0);if(o)return o(t,!0);if(u&&"string"==typeof t)return u(t);var c=new Error("Cannot find module '"+t+"'");throw c.code="MODULE_NOT_FOUND",c}p.resolve=function(r){return e[t][1][r]||r},p.cache={};var l=r[t]=new f.Module(t);e[t][0].call(l.exports,p,l,l.exports,this)}return r[t].exports;function p(e){return f(p.resolve(e))}}f.isParcelRequire=!0,f.Module=function(e){this.id=e,this.bundle=f,this.exports={}},f.modules=e,f.cache=r,f.parent=o,f.register=function(r,t){e[r]=[function(e,r){r.exports=t},{}]};for(var c=0;c exec(`git checkout ${commitHash}`, res)); + if (preprocessor) { + (await import(`./preprocessors/${preprocessor}.js`)).default(`${cloneDir}${moduleDir}`, repo); + } + const manifest = JSON.parse(readFileSync(`${cloneDir}${moduleDir}/goosemodModule.json`)); // console.log(manifest); diff --git a/src/modules/goosemod.js b/src/modules/goosemod.js new file mode 100644 index 0000000..cc235bc --- /dev/null +++ b/src/modules/goosemod.js @@ -0,0 +1,7 @@ +export default +[ + /* ['GooseMod/GMExampleModule', 'ba7c20f44fe88780286ac88b47b933609016c7ef'], + ['GooseMod/GMExampleModule', 'ba7c20f44fe88780286ac88b47b933609016c7ef', '/subModule'], */ + + ['Controlfreak707/GM-Copy-Raw', 'ae3f739f4d53344f87b1b404686d100394a566ee'], +]; \ No newline at end of file diff --git a/src/modules/index.js b/src/modules/index.js new file mode 100644 index 0000000..da10ff3 --- /dev/null +++ b/src/modules/index.js @@ -0,0 +1,6 @@ +import goosemod from './goosemod.js'; +import ms2porter from './ms2porter.js'; +import bdThemes from './ports/bdThemes.js'; + +// export default bdThemes; +export default goosemod.concat(ms2porter).concat(bdThemes); \ No newline at end of file diff --git a/src/modules.js b/src/modules/ms2porter.js similarity index 96% rename from src/modules.js rename to src/modules/ms2porter.js index e3121f6..709381a 100644 --- a/src/modules.js +++ b/src/modules/ms2porter.js @@ -1,9 +1,5 @@ export default [ - ['GooseMod/GMExampleModule', 'ba7c20f44fe88780286ac88b47b933609016c7ef'], - ['GooseMod/GMExampleModule', 'ba7c20f44fe88780286ac88b47b933609016c7ef', '/subModule'], - ['Controlfreak707/GM-Copy-Raw', 'ae3f739f4d53344f87b1b404686d100394a566ee'], - // Auto-generated by MS2Porter ['GooseMod/MS2Porter', '2f7ef4e72aae58d620d71f0cd1c1c922c29429b6', '/modules/avatarDataAttribute'], ['GooseMod/MS2Porter', '2f7ef4e72aae58d620d71f0cd1c1c922c29429b6', '/modules/customCss'], diff --git a/src/modules/ports/bdThemes.js b/src/modules/ports/bdThemes.js new file mode 100644 index 0000000..bc4712a --- /dev/null +++ b/src/modules/ports/bdThemes.js @@ -0,0 +1,3 @@ +export default [ + ['LuckFire/Discord-Revamp', 'a42d833c5fb4bc798e3c41e5f4f1e39c34a18cc9', '/discordrevamp.theme.css', 'bdTheme'], +]; \ No newline at end of file diff --git a/src/preprocessors/bdTheme.js b/src/preprocessors/bdTheme.js new file mode 100644 index 0000000..ff1ae27 --- /dev/null +++ b/src/preprocessors/bdTheme.js @@ -0,0 +1,65 @@ +import { readFileSync, writeFileSync, mkdirSync, rmSync } from 'fs'; + +export default (themePath, repo) => { + const content = readFileSync(themePath); + + const metaReg = /@([^ ]*) (.*)/g; + + let manifest = { + main: 'index.js', + tags: ['theme', 'port'] + }; + + let match; + while ((match = metaReg.exec(content)) !== null) { + const [_, key, value] = match; + if (key === 'import') break; + +// console.log(key, value); + + switch (key) { + case 'name': + manifest.name = value; + break; + + case 'description': + manifest.description = value; + break; + + case 'version': + manifest.version = value; + break; + + case 'authorId': + manifest.authors = [ value ]; + break; + } + } + + rmSync(themePath); + mkdirSync(themePath); + + const jsCode = `// Generated by MS2Builder - bdTheme preprocessor / porter +let style; + +export default { + goosemodHandlers: { + onImport: async () => { + style = document.createElement("style"); + document.head.appendChild(style); + style.appendChild( + document.createTextNode( + \`${content}\` + ) + ); + }, + + onRemove: async () => { + style.remove(); + }, + } +};`; + + writeFileSync(`${themePath}/goosemodModule.json`, JSON.stringify(manifest)); + writeFileSync(`${themePath}/index.js`, jsCode); +};