Only buildJar function left to implement

This commit is contained in:
Joseph Garrone 2024-05-12 21:41:49 +02:00
parent 824076f730
commit 3ad694d4de
4 changed files with 71 additions and 40 deletions

View File

@ -1,11 +1,11 @@
import { assert, type Equals } from "tsafe/assert"; import { assert, type Equals } from "tsafe/assert";
import { exclude } from "tsafe/exclude"; import { exclude } from "tsafe/exclude";
import type { KeycloakAccountV1Versions, KeycloakThemeAdditionalInfoExtensionVersions } from "./extensionVersions"; import type { KeycloakAccountV1Version, KeycloakThemeAdditionalInfoExtensionVersion } from "./extensionVersions";
export async function buildJar(params: { export async function buildJar(params: {
jarFileBasename: string; jarFileBasename: string;
keycloakAccountV1Version: KeycloakAccountV1Versions; keycloakAccountV1Version: KeycloakAccountV1Version;
keycloakThemeAdditionalInfoExtensionVersion: KeycloakThemeAdditionalInfoExtensionVersions; keycloakThemeAdditionalInfoExtensionVersion: KeycloakThemeAdditionalInfoExtensionVersion;
buildOptions: { buildOptions: {
keycloakifyBuildDirPath: string; keycloakifyBuildDirPath: string;
}; };

View File

@ -1,7 +1,16 @@
// NOTE: v0.5 is a dummy version.
export const keycloakAccountV1Versions = [null, "0.3", "0.4"] as const; export const keycloakAccountV1Versions = [null, "0.3", "0.4"] as const;
export type KeycloakAccountV1Versions = (typeof keycloakAccountV1Versions)[number]; /**
* https://central.sonatype.com/artifact/io.phasetwo.keycloak/keycloak-account-v1
* https://github.com/p2-inc/keycloak-account-v1
*/
export type KeycloakAccountV1Version = (typeof keycloakAccountV1Versions)[number];
export const keycloakThemeAdditionalInfoExtensionVersions = [null, "0.1"] as const; export const keycloakThemeAdditionalInfoExtensionVersions = [null, "1.1.5"] as const;
export type KeycloakThemeAdditionalInfoExtensionVersions = (typeof keycloakThemeAdditionalInfoExtensionVersions)[number]; /**
* https://central.sonatype.com/artifact/dev.jcputney/keycloak-theme-additional-info-extension
* https://github.com/jcputney/keycloak-theme-additional-info-extension
* */
export type KeycloakThemeAdditionalInfoExtensionVersion = (typeof keycloakThemeAdditionalInfoExtensionVersions)[number];

View File

@ -1,12 +1,12 @@
import { assert } from "tsafe/assert"; import { assert } from "tsafe/assert";
import { Reflect } from "tsafe/Reflect"; import { Reflect } from "tsafe/Reflect";
import type { BuildOptions } from "../buildOptions"; import type { BuildOptions } from "../buildOptions";
import type { KeycloakAccountV1Version, KeycloakThemeAdditionalInfoExtensionVersion } from "./extensionVersions";
type BuildOptionsLike = { type BuildOptionsLike = {
groupId: string; groupId: string;
artifactId: string; artifactId: string;
themeVersion: string; themeVersion: string;
keycloakifyBuildDirPath: string;
}; };
{ {
@ -15,8 +15,13 @@ type BuildOptionsLike = {
assert<typeof buildOptions extends BuildOptionsLike ? true : false>(); assert<typeof buildOptions extends BuildOptionsLike ? true : false>();
} }
export function generatePom(params: { buildOptions: BuildOptionsLike }) { export function generatePom(params: {
const { buildOptions } = params; keycloakAccountV1Version: KeycloakAccountV1Version;
keycloakThemeAdditionalInfoExtensionVersion: KeycloakThemeAdditionalInfoExtensionVersion;
buildOptions: BuildOptionsLike;
}) {
const { keycloakAccountV1Version, keycloakThemeAdditionalInfoExtensionVersion, buildOptions } = params;
const { pomFileCode } = (function generatePomFileCode(): { const { pomFileCode } = (function generatePomFileCode(): {
pomFileCode: string; pomFileCode: string;
@ -36,6 +41,8 @@ export function generatePom(params: { buildOptions: BuildOptionsLike }) {
` <properties>`, ` <properties>`,
` <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>`, ` <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>`,
` </properties>`, ` </properties>`,
...(keycloakAccountV1Version !== null && keycloakThemeAdditionalInfoExtensionVersion !== null
? [
` <build>`, ` <build>`,
` <plugins>`, ` <plugins>`,
` <plugin>`, ` <plugin>`,
@ -54,13 +61,28 @@ export function generatePom(params: { buildOptions: BuildOptionsLike }) {
` </plugins>`, ` </plugins>`,
` </build>`, ` </build>`,
` <dependencies>`, ` <dependencies>`,
...(keycloakAccountV1Version !== null
? [
` <dependency>`, ` <dependency>`,
` <groupId>io.phasetwo.keycloak</groupId>`, ` <groupId>io.phasetwo.keycloak</groupId>`,
` <artifactId>keycloak-account-v1</artifactId>`, ` <artifactId>keycloak-account-v1</artifactId>`,
` <version>0.1</version>`, ` <version>${keycloakAccountV1Version}</version>`,
` </dependency>`, ` </dependency>`
]
: []),
...(keycloakThemeAdditionalInfoExtensionVersion !== null
? [
` <dependency>`,
` <groupId>dev.jcputney</groupId>`,
` <artifactId>keycloak-theme-additional-info-extension</artifactId>`,
` <version>${keycloakThemeAdditionalInfoExtensionVersion}</version>`,
` </dependency>`
]
: []),
` </dependencies>`, ` </dependencies>`,
`</project>` `</project>`
]
: [])
].join("\n"); ].join("\n");
return { pomFileCode }; return { pomFileCode };

View File

@ -1,10 +1,10 @@
import { assert, type Equals } from "tsafe/assert"; import { assert, type Equals } from "tsafe/assert";
import type { KeycloakAccountV1Versions, KeycloakThemeAdditionalInfoExtensionVersions } from "./extensionVersions"; import type { KeycloakAccountV1Version, KeycloakThemeAdditionalInfoExtensionVersion } from "./extensionVersions";
export function getKeycloakVersionRangeForJar(params: { export function getKeycloakVersionRangeForJar(params: {
doesImplementAccountTheme: boolean; doesImplementAccountTheme: boolean;
keycloakAccountV1Version: KeycloakAccountV1Versions; keycloakAccountV1Version: KeycloakAccountV1Version;
keycloakThemeAdditionalInfoExtensionVersion: KeycloakThemeAdditionalInfoExtensionVersions; keycloakThemeAdditionalInfoExtensionVersion: KeycloakThemeAdditionalInfoExtensionVersion;
}): string | undefined { }): string | undefined {
const { keycloakAccountV1Version, keycloakThemeAdditionalInfoExtensionVersion, doesImplementAccountTheme } = params; const { keycloakAccountV1Version, keycloakThemeAdditionalInfoExtensionVersion, doesImplementAccountTheme } = params;
@ -13,7 +13,7 @@ export function getKeycloakVersionRangeForJar(params: {
switch (keycloakThemeAdditionalInfoExtensionVersion) { switch (keycloakThemeAdditionalInfoExtensionVersion) {
case null: case null:
return doesImplementAccountTheme ? "21-and-below" : "21-and-below"; return doesImplementAccountTheme ? "21-and-below" : "21-and-below";
case "0.1": case "1.1.5":
return doesImplementAccountTheme ? undefined : "22-and-above"; return doesImplementAccountTheme ? undefined : "22-and-above";
} }
assert<Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>>(false); assert<Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>>(false);
@ -21,7 +21,7 @@ export function getKeycloakVersionRangeForJar(params: {
switch (keycloakThemeAdditionalInfoExtensionVersion) { switch (keycloakThemeAdditionalInfoExtensionVersion) {
case null: case null:
return doesImplementAccountTheme ? undefined : undefined; return doesImplementAccountTheme ? undefined : undefined;
case "0.1": case "1.1.5":
return doesImplementAccountTheme ? "23" : undefined; return doesImplementAccountTheme ? "23" : undefined;
} }
assert<Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>>(false); assert<Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>>(false);
@ -29,7 +29,7 @@ export function getKeycloakVersionRangeForJar(params: {
switch (keycloakThemeAdditionalInfoExtensionVersion) { switch (keycloakThemeAdditionalInfoExtensionVersion) {
case null: case null:
return doesImplementAccountTheme ? undefined : undefined; return doesImplementAccountTheme ? undefined : undefined;
case "0.1": case "1.1.5":
return doesImplementAccountTheme ? "24-and-above" : undefined; return doesImplementAccountTheme ? "24-and-above" : undefined;
} }
assert<Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>>(false); assert<Equals<typeof keycloakThemeAdditionalInfoExtensionVersion, never>>(false);