From 86884607ef5ed0f0a9621b7cda960589df336c17 Mon Sep 17 00:00:00 2001 From: Thomas Silvestre Date: Wed, 12 Apr 2023 11:44:37 +0200 Subject: [PATCH] add build option keepBuildDir if set to true, will not cleanup build_keycloak directory --- keycloakify-json-schema.json | 3 +++ src/bin/keycloakify/BuildOptions.ts | 17 ++++++++++++++--- src/bin/keycloakify/keycloakify.ts | 5 +++++ src/bin/keycloakify/parsedPackageJson.ts | 4 +++- 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/keycloakify-json-schema.json b/keycloakify-json-schema.json index a6cc302f..a1f05895 100644 --- a/keycloakify-json-schema.json +++ b/keycloakify-json-schema.json @@ -78,6 +78,9 @@ }, "themeName": { "type": "string" + }, + "keepBuildDir": { + "type": "boolean" } }, "additionalProperties": false diff --git a/src/bin/keycloakify/BuildOptions.ts b/src/bin/keycloakify/BuildOptions.ts index aa68cd41..cd419465 100644 --- a/src/bin/keycloakify/BuildOptions.ts +++ b/src/bin/keycloakify/BuildOptions.ts @@ -27,6 +27,7 @@ export namespace BuildOptions { /** Directory that keycloakify outputs to. Defaults to {cwd}/build_keycloak */ keycloakifyBuildDirPath: string; customUserAttributes: string[]; + keepBuildDir: boolean; }; export type Standalone = Common & { @@ -98,8 +99,17 @@ export function readBuildOptions(params: { projectDirPath: string; isExternalAss const common: BuildOptions.Common = (() => { const { name, keycloakify = {}, version, homepage } = parsedPackageJson; - const { extraPages, extraLoginPages, extraAccountPages, extraThemeProperties, groupId, artifactId, bundler, keycloakVersionDefaultAssets } = - keycloakify ?? {}; + const { + extraPages, + extraLoginPages, + extraAccountPages, + extraThemeProperties, + groupId, + artifactId, + bundler, + keycloakVersionDefaultAssets, + keepBuildDir + } = keycloakify ?? {}; const themeName = keycloakify.themeName ?? @@ -179,7 +189,8 @@ export function readBuildOptions(params: { projectDirPath: string; isExternalAss return keycloakifyBuildDirPath; })(), - "customUserAttributes": keycloakify.customUserAttributes ?? [] + "customUserAttributes": keycloakify.customUserAttributes ?? [], + "keepBuildDir": keepBuildDir ?? false }; })(); diff --git a/src/bin/keycloakify/keycloakify.ts b/src/bin/keycloakify/keycloakify.ts index 228f7ae2..d32a6617 100644 --- a/src/bin/keycloakify/keycloakify.ts +++ b/src/bin/keycloakify/keycloakify.ts @@ -26,6 +26,11 @@ export async function main() { "isSilent": isSilent }); + if (!buildOptions.keepBuildDir) { + logger.log("🧹 Cleanup files under " + buildOptions.keycloakifyBuildDirPath); + fs.rmSync(buildOptions.keycloakifyBuildDirPath, { recursive: true, force: true }); + } + const { doBundlesEmailTemplate } = await generateKeycloakThemeResources({ keycloakThemeBuildingDirPath: buildOptions.keycloakifyBuildDirPath, "emailThemeSrcDirPath": (() => { diff --git a/src/bin/keycloakify/parsedPackageJson.ts b/src/bin/keycloakify/parsedPackageJson.ts index 4dc3c6f0..774a2196 100644 --- a/src/bin/keycloakify/parsedPackageJson.ts +++ b/src/bin/keycloakify/parsedPackageJson.ts @@ -25,6 +25,7 @@ export type ParsedPackageJson = { keycloakifyBuildDirPath?: string; customUserAttributes?: string[]; themeName?: string; + keepBuildDir?: boolean; }; }; @@ -46,7 +47,8 @@ export const zParsedPackageJson = z.object({ "reactAppBuildDirPath": z.string().optional(), "keycloakifyBuildDirPath": z.string().optional(), "customUserAttributes": z.array(z.string()).optional(), - "themeName": z.string().optional() + "themeName": z.string().optional(), + "keepBuildDir": z.boolean().optional() }) .optional() });