2021-01-27 22:05:15 +00:00
|
|
|
import { readFileSync, writeFileSync, mkdirSync, rmSync } from 'fs';
|
|
|
|
|
2021-07-17 19:49:12 +00:00
|
|
|
import generateThemeJS from './genericTheme.js';
|
|
|
|
|
|
|
|
export default async (themePath, repo) => {
|
2021-06-20 11:16:56 +00:00
|
|
|
const content = readFileSync(themePath, 'utf8');
|
|
|
|
|
2021-01-27 22:05:15 +00:00
|
|
|
const metaReg = /@([^ ]*) (.*)/g;
|
|
|
|
|
|
|
|
let manifest = {
|
|
|
|
main: 'index.js',
|
2021-06-20 11:16:56 +00:00
|
|
|
tags: ['theme', 'port'],
|
2021-01-27 22:05:15 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
let match;
|
|
|
|
while ((match = metaReg.exec(content)) !== null) {
|
2021-05-05 17:13:59 +00:00
|
|
|
let [_, key, value] = match;
|
2021-01-27 22:05:15 +00:00
|
|
|
if (key === 'import') break;
|
|
|
|
|
2021-05-05 17:12:53 +00:00
|
|
|
value = value.trim();
|
|
|
|
|
2021-06-20 11:16:56 +00:00
|
|
|
// console.log(key, value);
|
2021-01-27 22:05:15 +00:00
|
|
|
|
|
|
|
switch (key) {
|
|
|
|
case 'name':
|
|
|
|
manifest.name = value;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'description':
|
|
|
|
manifest.description = value;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case 'version':
|
|
|
|
manifest.version = value;
|
|
|
|
break;
|
2021-02-09 19:15:04 +00:00
|
|
|
|
|
|
|
case 'author':
|
2021-06-20 11:16:56 +00:00
|
|
|
manifest.authors = [value];
|
2021-02-09 19:15:04 +00:00
|
|
|
break;
|
|
|
|
|
2021-01-27 22:05:15 +00:00
|
|
|
case 'authorId':
|
2021-06-20 11:16:56 +00:00
|
|
|
manifest.authors = [value];
|
2021-01-27 22:05:15 +00:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
rmSync(themePath);
|
|
|
|
mkdirSync(themePath);
|
|
|
|
|
2021-07-17 19:49:12 +00:00
|
|
|
const jsCode = await generateThemeJS(manifest, content, repo);
|
2021-01-27 22:05:15 +00:00
|
|
|
|
|
|
|
writeFileSync(`${themePath}/goosemodModule.json`, JSON.stringify(manifest));
|
|
|
|
writeFileSync(`${themePath}/index.js`, jsCode);
|
|
|
|
};
|