diff --git a/src/tools/impl/verapdf.ts b/src/tools/impl/verapdf.ts index cdf6423383..d45f1b95e8 100644 --- a/src/tools/impl/verapdf.ts +++ b/src/tools/impl/verapdf.ts @@ -34,14 +34,22 @@ const kVersionFileName = "version"; export const verapdfInstallable: InstallableTool = { name: "VeraPDF", prereqs: [{ - check: async () => { + check: async (context) => { const javaVersion = await getJavaVersion(); + context.props.javaVersion = javaVersion; return javaVersion !== undefined && kSupportedJavaVersions.includes(javaVersion); }, os: ["darwin", "linux", "windows"], - message: - `Java is not installed or version is not supported. veraPDF requires Java 8, 11, 17, or 21.`, + message: (context) => { + const javaVersion = context.props.javaVersion as number | undefined; + const supportedVersions = kSupportedJavaVersions.join(", "); + if (javaVersion === undefined) { + return `Java is not installed. veraPDF requires Java ${supportedVersions}.`; + } else { + return `Java ${javaVersion} is installed but not supported. veraPDF requires Java ${supportedVersions}.`; + } + }, }], installed, installDir, diff --git a/src/tools/tools.ts b/src/tools/tools.ts index b8c59d6abe..b15f482ead 100644 --- a/src/tools/tools.ts +++ b/src/tools/tools.ts @@ -136,7 +136,10 @@ export async function installTool(name: string, updatePath?: boolean) { for (const prereq of platformPrereqs) { const met = await prereq.check(context); if (!met) { - context.error(prereq.message); + const message = typeof prereq.message === "function" + ? await prereq.message(context) + : prereq.message; + context.error(message); Deno.exit(1); } } diff --git a/src/tools/types.ts b/src/tools/types.ts index f6e23c2d38..265d47465d 100644 --- a/src/tools/types.ts +++ b/src/tools/types.ts @@ -30,7 +30,7 @@ export interface InstallableTool { export interface InstallPreReq { check: (context: InstallContext) => Promise; os: string[]; - message: string; + message: string | ((context: InstallContext) => string | Promise); } // Locally accessible Package information