keycloak_theme/src/bin/initialize-email-theme.ts

61 lines
2.1 KiB
TypeScript
Raw Normal View History

2023-03-20 01:30:42 +01:00
#!/usr/bin/env node
import { downloadBuiltinKeycloakTheme } from "./download-builtin-keycloak-theme";
import { join as pathJoin, relative as pathRelative } from "path";
import { transformCodebase } from "./tools/transformCodebase";
import { promptKeycloakVersion } from "./promptKeycloakVersion";
import { readBuildOptions } from "./keycloakify/BuildOptions";
2023-03-20 01:30:42 +01:00
import * as fs from "fs";
import { getLogger } from "./tools/logger";
import { getThemeSrcDirPath } from "./getSrcDirPath";
2023-03-24 05:43:34 +01:00
export async function main() {
const { isSilent } = readBuildOptions({
"projectDirPath": process.cwd(),
"processArgv": process.argv.slice(2)
});
2023-03-20 01:30:42 +01:00
const logger = getLogger({ isSilent });
const { themeSrcDirPath } = getThemeSrcDirPath({
2023-04-02 03:10:16 +02:00
"projectDirPath": process.cwd()
});
2023-03-24 05:43:34 +01:00
const emailThemeSrcDirPath = pathJoin(themeSrcDirPath, "email");
2023-03-24 05:43:34 +01:00
if (fs.existsSync(emailThemeSrcDirPath)) {
logger.warn(`There is already a ${pathRelative(process.cwd(), emailThemeSrcDirPath)} directory in your project. Aborting.`);
2023-03-20 01:30:42 +01:00
process.exit(-1);
}
const { keycloakVersion } = await promptKeycloakVersion();
2023-03-24 05:43:34 +01:00
const builtinKeycloakThemeTmpDirPath = pathJoin(emailThemeSrcDirPath, "..", "tmp_xIdP3_builtin_keycloak_theme");
2023-03-20 01:30:42 +01:00
await downloadBuiltinKeycloakTheme({
keycloakVersion,
"destDirPath": builtinKeycloakThemeTmpDirPath,
isSilent
});
transformCodebase({
"srcDirPath": pathJoin(builtinKeycloakThemeTmpDirPath, "base", "email"),
2023-03-24 05:43:34 +01:00
"destDirPath": emailThemeSrcDirPath
2023-03-20 01:30:42 +01:00
});
2023-03-21 01:50:21 +01:00
{
2023-03-24 05:43:34 +01:00
const themePropertyFilePath = pathJoin(emailThemeSrcDirPath, "theme.properties");
2023-03-21 01:50:21 +01:00
fs.writeFileSync(themePropertyFilePath, Buffer.from(`parent=base\n${fs.readFileSync(themePropertyFilePath).toString("utf8")}`, "utf8"));
}
2023-03-24 05:43:34 +01:00
logger.log(`${pathRelative(process.cwd(), emailThemeSrcDirPath)} ready to be customized, feel free to remove every file you do not customize`);
2023-03-20 01:30:42 +01:00
fs.rmSync(builtinKeycloakThemeTmpDirPath, { "recursive": true, "force": true });
2023-03-24 05:43:34 +01:00
}
if (require.main === module) {
main();
}