From 31d7a938f2d0abd2cd4bc1aaeb5702b14fc81943 Mon Sep 17 00:00:00 2001 From: Joseph Garrone Date: Thu, 17 Oct 2024 23:23:26 +0200 Subject: [PATCH] #696 --- src/bin/initialize-email-theme.ts | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/bin/initialize-email-theme.ts b/src/bin/initialize-email-theme.ts index 7a81205b..62a5566a 100644 --- a/src/bin/initialize-email-theme.ts +++ b/src/bin/initialize-email-theme.ts @@ -5,6 +5,9 @@ import type { BuildContext } from "./shared/buildContext"; import * as fs from "fs"; import { downloadAndExtractArchive } from "./tools/downloadAndExtractArchive"; import { maybeDelegateCommandToCustomHandler } from "./shared/customHandler_delegate"; +import fetch from "make-fetch-happen"; +import { SemVer } from "./tools/SemVer"; +import { assert } from "tsafe/assert"; export async function command(params: { buildContext: BuildContext }) { const { buildContext } = params; @@ -36,7 +39,7 @@ export async function command(params: { buildContext: BuildContext }) { console.log("Initialize with the base email theme from which version of Keycloak?"); - const { keycloakVersion } = await promptKeycloakVersion({ + let { keycloakVersion } = await promptKeycloakVersion({ // NOTE: This is arbitrary startingFromMajor: 17, excludeMajorVersions: [], @@ -44,8 +47,32 @@ export async function command(params: { buildContext: BuildContext }) { buildContext }); + const getUrl = (keycloakVersion: string) => { + return `https://repo1.maven.org/maven2/org/keycloak/keycloak-themes/${keycloakVersion}/keycloak-themes-${keycloakVersion}.jar`; + }; + + keycloakVersion = await (async () => { + const keycloakVersionParsed = SemVer.parse(keycloakVersion); + + while (true) { + const url = getUrl(SemVer.stringify(keycloakVersionParsed)); + + const response = await fetch(url, buildContext.fetchOptions); + + if (response.ok) { + break; + } + + assert(keycloakVersionParsed.patch !== 0); + + keycloakVersionParsed.patch--; + } + + return SemVer.stringify(keycloakVersionParsed); + })(); + const { extractedDirPath } = await downloadAndExtractArchive({ - url: `https://repo1.maven.org/maven2/org/keycloak/keycloak-themes/${keycloakVersion}/keycloak-themes-${keycloakVersion}.jar`, + url: getUrl(keycloakVersion), cacheDirPath: buildContext.cacheDirPath, fetchOptions: buildContext.fetchOptions, uniqueIdOfOnArchiveFile: "extractOnlyEmailTheme",