diff --git a/src/bin/initialize-account-theme/initializeAccountTheme_singlePage.ts b/src/bin/initialize-account-theme/initializeAccountTheme_singlePage.ts index 1e19ad44..b3b8e6dc 100644 --- a/src/bin/initialize-account-theme/initializeAccountTheme_singlePage.ts +++ b/src/bin/initialize-account-theme/initializeAccountTheme_singlePage.ts @@ -2,7 +2,10 @@ import { join as pathJoin, relative as pathRelative, dirname as pathDirname } fr import type { BuildContext } from "../shared/buildContext"; import * as fs from "fs"; import chalk from "chalk"; -import { getLatestsSemVersionedTag } from "../shared/getLatestsSemVersionedTag"; +import { + getLatestsSemVersionedTag, + type BuildContextLike as BuildContextLike_getLatestsSemVersionedTag +} from "../shared/getLatestsSemVersionedTag"; import fetch from "make-fetch-happen"; import { z } from "zod"; import { assert, type Equals } from "tsafe/assert"; @@ -12,8 +15,7 @@ import { npmInstall } from "../tools/npmInstall"; import { copyBoilerplate } from "./copyBoilerplate"; import { getThisCodebaseRootDirPath } from "../tools/getThisCodebaseRootDirPath"; -type BuildContextLike = { - cacheDirPath: string; +type BuildContextLike = BuildContextLike_getLatestsSemVersionedTag & { fetchOptions: BuildContext["fetchOptions"]; packageJsonFilePath: string; }; @@ -30,11 +32,11 @@ export async function initializeAccountTheme_singlePage(params: { const REPO = "keycloak-account-ui"; const [semVersionedTag] = await getLatestsSemVersionedTag({ - cacheDirPath: buildContext.cacheDirPath, owner: OWNER, repo: REPO, count: 1, - doIgnoreReleaseCandidates: false + doIgnoreReleaseCandidates: false, + buildContext }); const dependencies = await fetch( diff --git a/src/bin/initialize-email-theme.ts b/src/bin/initialize-email-theme.ts index 97128d22..3ce34452 100644 --- a/src/bin/initialize-email-theme.ts +++ b/src/bin/initialize-email-theme.ts @@ -30,7 +30,7 @@ export async function command(params: { cliCommandOptions: CliCommandOptions }) // NOTE: This is arbitrary startingFromMajor: 17, excludeMajorVersions: [], - cacheDirPath: buildContext.cacheDirPath + buildContext }); const { defaultThemeDirPath } = await downloadKeycloakDefaultTheme({ diff --git a/src/bin/shared/getLatestsSemVersionedTag.ts b/src/bin/shared/getLatestsSemVersionedTag.ts index 462cb418..bad5a2f0 100644 --- a/src/bin/shared/getLatestsSemVersionedTag.ts +++ b/src/bin/shared/getLatestsSemVersionedTag.ts @@ -9,6 +9,7 @@ import { assert, type Equals } from "tsafe/assert"; import { id } from "tsafe/id"; import type { SemVer } from "../tools/SemVer"; import { same } from "evt/tools/inDepth/same"; +import type { BuildContext } from "./buildContext"; type GetLatestsSemVersionedTag = ReturnType< typeof getLatestsSemVersionedTagFactory @@ -31,11 +32,23 @@ type Cache = { }[]; }; +export type BuildContextLike = { + cacheDirPath: string; + fetchOptions: BuildContext["fetchOptions"]; +}; + +assert(); + export async function getLatestsSemVersionedTag({ - cacheDirPath, + buildContext, ...params -}: Params & { cacheDirPath: string }): Promise { - const cacheFilePath = pathJoin(cacheDirPath, "latest-sem-versioned-tags.json"); +}: Params & { + buildContext: BuildContextLike; +}): Promise { + const cacheFilePath = pathJoin( + buildContext.cacheDirPath, + "latest-sem-versioned-tags.json" + ); const cacheLookupResult = (() => { const getResult_currentCache = (currentCacheEntries: Cache["entries"]) => ({ @@ -144,9 +157,10 @@ export async function getLatestsSemVersionedTag({ const octokit = (() => { const githubToken = process.env.GITHUB_TOKEN; - const octokit = new Octokit( - githubToken === undefined ? undefined : { auth: githubToken } - ); + const octokit = new Octokit({ + ...(githubToken === undefined ? {} : { auth: githubToken }), + request: buildContext.fetchOptions + }); return octokit; })(); diff --git a/src/bin/shared/promptKeycloakVersion.ts b/src/bin/shared/promptKeycloakVersion.ts index ed84c828..0f12b209 100644 --- a/src/bin/shared/promptKeycloakVersion.ts +++ b/src/bin/shared/promptKeycloakVersion.ts @@ -1,22 +1,31 @@ -import { getLatestsSemVersionedTag } from "./getLatestsSemVersionedTag"; +import { + getLatestsSemVersionedTag, + type BuildContextLike as BuildContextLike_getLatestsSemVersionedTag +} from "./getLatestsSemVersionedTag"; import cliSelect from "cli-select"; +import { assert } from "tsafe/assert"; import { SemVer } from "../tools/SemVer"; +import type { BuildContext } from "./buildContext"; + +export type BuildContextLike = BuildContextLike_getLatestsSemVersionedTag & {}; + +assert(); export async function promptKeycloakVersion(params: { startingFromMajor: number | undefined; excludeMajorVersions: number[]; - cacheDirPath: string; + buildContext: BuildContextLike; }) { - const { startingFromMajor, excludeMajorVersions, cacheDirPath } = params; + const { startingFromMajor, excludeMajorVersions, buildContext } = params; const semVersionedTagByMajor = new Map(); const semVersionedTags = await getLatestsSemVersionedTag({ - cacheDirPath, count: 50, owner: "keycloak", repo: "keycloak", - doIgnoreReleaseCandidates: true + doIgnoreReleaseCandidates: true, + buildContext }); semVersionedTags.forEach(semVersionedTag => { diff --git a/src/bin/start-keycloak/start-keycloak.ts b/src/bin/start-keycloak/start-keycloak.ts index 6ca5e691..7177c44a 100644 --- a/src/bin/start-keycloak/start-keycloak.ts +++ b/src/bin/start-keycloak/start-keycloak.ts @@ -103,7 +103,7 @@ export async function command(params: { cliCommandOptions: CliCommandOptions }) const { keycloakVersion } = await promptKeycloakVersion({ startingFromMajor: 18, excludeMajorVersions: [22], - cacheDirPath: buildContext.cacheDirPath + buildContext }); console.log(`→ ${keycloakVersion}`);