mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-24 10:27:10 +02:00
29 lines
1.0 KiB
TypeScript
29 lines
1.0 KiB
TypeScript
import { Theme } from '../../themes/type';
|
|
import { filename } from '../../path-utils';
|
|
import shim from '../../shim';
|
|
import cssToTheme from './cssToTheme';
|
|
|
|
export default async function(cssBaseDir: string): Promise<Record<string, Theme>> {
|
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Old code before rule was applied
|
|
const themeDirs = (await shim.fsDriver().readDirStats(cssBaseDir)).filter((f: any) => f.isDirectory());
|
|
|
|
const output: Record<string, Theme> = {};
|
|
|
|
for (const themeDir of themeDirs) {
|
|
const themeName = filename(themeDir.path);
|
|
const cssFile = `${cssBaseDir}/${themeDir.path}/colors.css`;
|
|
const cssContent = await shim.fsDriver().readFile(cssFile, 'utf8');
|
|
|
|
let themeId = themeName;
|
|
const manifestFile = `${cssBaseDir}/${themeDir.path}/manifest.json`;
|
|
if (await shim.fsDriver().exists(manifestFile)) {
|
|
const manifest = JSON.parse(await shim.fsDriver().readFile(manifestFile, 'utf8'));
|
|
if (manifest.id) themeId = manifest.id;
|
|
}
|
|
|
|
output[themeId] = cssToTheme(cssContent, cssFile);
|
|
}
|
|
|
|
return output;
|
|
}
|