diff --git a/src/bin/keycloakify/BuildOptions.ts b/src/bin/keycloakify/BuildOptions.ts
index aa68cd41..30831022 100644
--- a/src/bin/keycloakify/BuildOptions.ts
+++ b/src/bin/keycloakify/BuildOptions.ts
@@ -13,7 +13,7 @@ export type BuildOptions = BuildOptions.Standalone | BuildOptions.ExternalAssets
export namespace BuildOptions {
export type Common = {
isSilent: boolean;
- version: string;
+ themeVersion: string;
themeName: string;
extraLoginPages: string[] | undefined;
extraAccountPages: string[] | undefined;
@@ -139,7 +139,7 @@ export function readBuildOptions(params: { projectDirPath: string; isExternalAss
.join(".") ?? fallbackGroupId) + ".keycloak"
);
})(),
- "version": process.env.KEYCLOAKIFY_VERSION ?? version,
+ "themeVersion": process.env.KEYCLOAKIFY_THEME_VERSION ?? process.env.KEYCLOAKIFY_VERSION ?? version ?? "0.0.0",
"extraLoginPages": [...(extraPages ?? []), ...(extraLoginPages ?? [])],
extraAccountPages,
extraThemeProperties,
diff --git a/src/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl b/src/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl
index ffb9ee97..67c90f19 100644
--- a/src/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl
+++ b/src/bin/keycloakify/generateFtl/ftl_object_to_js_code_declaring_an_object.ftl
@@ -118,8 +118,9 @@
};
#if>
- out["pageId"] = "PAGE_ID_xIgLsPgGId9D8e";
out["keycloakifyVersion"] = "KEYCLOAKIFY_VERSION_xEdKd3xEdr";
+ out["themeVersion"] = "KEYCLOAKIFY_THEME_VERSION_sIgKd3xEdr3dx";
+ out["pageId"] = "PAGE_ID_xIgLsPgGId9D8e";
return out;
diff --git a/src/bin/keycloakify/generateFtl/generateFtl.ts b/src/bin/keycloakify/generateFtl/generateFtl.ts
index 48257180..be79ef37 100644
--- a/src/bin/keycloakify/generateFtl/generateFtl.ts
+++ b/src/bin/keycloakify/generateFtl/generateFtl.ts
@@ -18,6 +18,7 @@ export type BuildOptionsLike = BuildOptionsLike.Standalone | BuildOptionsLike.Ex
export namespace BuildOptionsLike {
export type Common = {
customUserAttributes: string[];
+ themeVersion: string;
};
export type Standalone = Common & {
@@ -130,7 +131,8 @@ export function generateFtlFilesCodeFactory(params: {
"CUSTOM_USER_ATTRIBUTES_eKsIY4ZsZ4xeM",
buildOptions.customUserAttributes.length === 0 ? "" : ", " + buildOptions.customUserAttributes.map(name => `"${name}"`).join(", ")
)
- .replace("KEYCLOAKIFY_VERSION_xEdKd3xEdr", keycloakifyVersion),
+ .replace("KEYCLOAKIFY_VERSION_xEdKd3xEdr", keycloakifyVersion)
+ .replace("KEYCLOAKIFY_THEME_VERSION_sIgKd3xEdr3dx", buildOptions.themeVersion),
"": [
"<#if scripts??>",
" <#list scripts as script>",
diff --git a/src/bin/keycloakify/generateJavaStackFiles.ts b/src/bin/keycloakify/generateJavaStackFiles.ts
index 890cc44c..0ee215df 100644
--- a/src/bin/keycloakify/generateJavaStackFiles.ts
+++ b/src/bin/keycloakify/generateJavaStackFiles.ts
@@ -9,7 +9,7 @@ export type BuildOptionsLike = {
themeName: string;
groupId: string;
artifactId?: string;
- version: string;
+ themeVersion: string;
};
{
@@ -26,7 +26,7 @@ export function generateJavaStackFiles(params: {
jarFilePath: string;
} {
const {
- buildOptions: { groupId, themeName, version, artifactId },
+ buildOptions: { groupId, themeName, themeVersion, artifactId },
keycloakThemeBuildingDirPath,
doBundlesEmailTemplate
} = params;
@@ -43,7 +43,7 @@ export function generateJavaStackFiles(params: {
` 4.0.0`,
` ${groupId}`,
` ${artifactId}`,
- ` ${version}`,
+ ` ${themeVersion}`,
` ${artifactId}`,
` `,
``
@@ -83,6 +83,6 @@ export function generateJavaStackFiles(params: {
}
return {
- "jarFilePath": pathJoin(keycloakThemeBuildingDirPath, "target", `${artifactId}-${version}.jar`)
+ "jarFilePath": pathJoin(keycloakThemeBuildingDirPath, "target", `${artifactId}-${themeVersion}.jar`)
};
}
diff --git a/src/bin/keycloakify/generateKeycloakThemeResources.ts b/src/bin/keycloakify/generateKeycloakThemeResources.ts
index 8d12de60..870e9230 100644
--- a/src/bin/keycloakify/generateKeycloakThemeResources.ts
+++ b/src/bin/keycloakify/generateKeycloakThemeResources.ts
@@ -20,6 +20,7 @@ export namespace BuildOptionsLike {
extraThemeProperties?: string[];
isSilent: boolean;
customUserAttributes: string[];
+ themeVersion: string;
};
export type Standalone = Common & {
diff --git a/src/bin/keycloakify/keycloakify.ts b/src/bin/keycloakify/keycloakify.ts
index 228f7ae2..2640de18 100644
--- a/src/bin/keycloakify/keycloakify.ts
+++ b/src/bin/keycloakify/keycloakify.ts
@@ -63,7 +63,7 @@ export async function main() {
logger.log("🫶 Let keycloakify do its thang");
await jar({
"rootPath": pathJoin(buildOptions.keycloakifyBuildDirPath, "src", "main", "resources"),
- "version": buildOptions.version,
+ "version": buildOptions.themeVersion,
"groupId": buildOptions.groupId,
"artifactId": buildOptions.artifactId,
"targetPath": jarFilePath
diff --git a/src/bin/keycloakify/parsedPackageJson.ts b/src/bin/keycloakify/parsedPackageJson.ts
index 4dc3c6f0..6ee593fd 100644
--- a/src/bin/keycloakify/parsedPackageJson.ts
+++ b/src/bin/keycloakify/parsedPackageJson.ts
@@ -8,7 +8,7 @@ export const bundlers = ["mvn", "keycloakify", "none"] as const;
export type Bundler = (typeof bundlers)[number];
export type ParsedPackageJson = {
name: string;
- version: string;
+ version?: string;
homepage?: string;
keycloakify?: {
/** @deprecated: use extraLoginPages instead */
@@ -30,7 +30,7 @@ export type ParsedPackageJson = {
export const zParsedPackageJson = z.object({
"name": z.string(),
- "version": z.string(),
+ "version": z.string().optional(),
"homepage": z.string().optional(),
"keycloakify": z
.object({