34 lines
1.0 KiB
TypeScript
34 lines
1.0 KiB
TypeScript
|
import * as fs from "fs";
|
||
|
import { exclude } from "tsafe";
|
||
|
import { crawl } from "./tools/crawl";
|
||
|
import { join as pathJoin } from "path";
|
||
|
|
||
|
const themeSrcDirBasename = "keycloak-theme";
|
||
|
|
||
|
export function getThemeSrcDirPath(params: { projectDirPath: string }) {
|
||
|
const { projectDirPath } = params;
|
||
|
|
||
|
const srcDirPath = pathJoin(projectDirPath, "src");
|
||
|
|
||
|
const themeSrcDirPath: string | undefined = crawl(srcDirPath)
|
||
|
.map(fileRelativePath => {
|
||
|
const split = fileRelativePath.split(themeSrcDirBasename);
|
||
|
|
||
|
if (split.length !== 2) {
|
||
|
return undefined;
|
||
|
}
|
||
|
|
||
|
return pathJoin(srcDirPath, split[0] + themeSrcDirBasename);
|
||
|
})
|
||
|
.filter(exclude(undefined))[0];
|
||
|
|
||
|
if (themeSrcDirPath === undefined) {
|
||
|
if (fs.existsSync(pathJoin(srcDirPath, "login")) || fs.existsSync(pathJoin(srcDirPath, "account"))) {
|
||
|
return { "themeSrcDirPath": srcDirPath };
|
||
|
}
|
||
|
return { "themeSrcDirPath": undefined };
|
||
|
}
|
||
|
|
||
|
return { themeSrcDirPath };
|
||
|
}
|