2023-04-02 03:10:16 +02:00
|
|
|
import * as fs from "fs";
|
|
|
|
import { exclude } from "tsafe";
|
|
|
|
import { crawl } from "./tools/crawl";
|
|
|
|
import { join as pathJoin } from "path";
|
2023-06-21 18:06:12 +02:00
|
|
|
import { themeTypes } from "./keycloakify/generateFtl";
|
2023-04-02 03:10:16 +02:00
|
|
|
|
|
|
|
const themeSrcDirBasename = "keycloak-theme";
|
|
|
|
|
2023-06-21 18:06:12 +02:00
|
|
|
/** Can't catch error, if the directory isn't found, this function will just exit the process with an error message. */
|
2023-04-02 03:10:16 +02:00
|
|
|
export function getThemeSrcDirPath(params: { projectDirPath: string }) {
|
|
|
|
const { projectDirPath } = params;
|
|
|
|
|
|
|
|
const srcDirPath = pathJoin(projectDirPath, "src");
|
|
|
|
|
2023-06-21 03:54:43 +02:00
|
|
|
const themeSrcDirPath: string | undefined = crawl({ "dirPath": srcDirPath, "returnedPathsType": "relative to dirPath" })
|
2023-04-02 03:10:16 +02:00
|
|
|
.map(fileRelativePath => {
|
|
|
|
const split = fileRelativePath.split(themeSrcDirBasename);
|
|
|
|
|
|
|
|
if (split.length !== 2) {
|
|
|
|
return undefined;
|
|
|
|
}
|
|
|
|
|
|
|
|
return pathJoin(srcDirPath, split[0] + themeSrcDirBasename);
|
|
|
|
})
|
|
|
|
.filter(exclude(undefined))[0];
|
|
|
|
|
2023-06-21 18:06:12 +02:00
|
|
|
if (themeSrcDirPath !== undefined) {
|
|
|
|
return { themeSrcDirPath };
|
|
|
|
}
|
|
|
|
|
|
|
|
for (const themeType of [...themeTypes, "email"]) {
|
|
|
|
if (!fs.existsSync(pathJoin(srcDirPath, themeType))) {
|
|
|
|
continue;
|
2023-04-02 03:10:16 +02:00
|
|
|
}
|
2023-06-21 18:06:12 +02:00
|
|
|
return { "themeSrcDirPath": srcDirPath };
|
2023-04-02 03:10:16 +02:00
|
|
|
}
|
|
|
|
|
2023-06-21 18:06:12 +02:00
|
|
|
console.error(
|
|
|
|
[
|
|
|
|
"Can't locate your theme source directory. It should be either: ",
|
|
|
|
"src/ or src/keycloak-theme.",
|
|
|
|
"Example in the starter: https://github.com/keycloakify/keycloakify-starter/tree/main/src/keycloak-theme"
|
|
|
|
].join("\n")
|
|
|
|
);
|
|
|
|
|
|
|
|
process.exit(-1);
|
2023-04-02 03:10:16 +02:00
|
|
|
}
|