Files
.github
.storybook
scripts
src
account
bin
keycloakify
tools
copy-keycloak-resources-to-public.ts
download-builtin-keycloak-theme.ts
eject-keycloak-page.ts
getSrcDirPath.ts
initialize-email-theme.ts
mockTestingResourcesPath.ts
promptKeycloakVersion.ts
tsconfig.json
lib
login
tools
index.ts
tsconfig.json
stories
test
.all-contributorsrc
.gitattributes
.gitignore
.prettierignore
.prettierrc.json
CONTRIBUTING.md
LICENSE
README.md
keycloakify-json-schema.json
package.json
renovate.json
tsproject.json
vitest.config.ts
yarn.lock
keycloak_theme/src/bin/initialize-email-theme.ts

67 lines
2.2 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
if (themeSrcDirPath === undefined) {
2023-03-25 04:56:17 +01:00
logger.warn("Couldn't locate your theme source directory");
2023-03-24 05:43:34 +01:00
process.exit(-1);
}
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();
}