Skip to content

Commit 546dd97

Browse files
claude: Warn instead of error for non-LTS Java versions in veraPDF
Allow veraPDF installation with any Java 8+, but warn if using a non-LTS version. LTS versions (8, 11, 17, 21, 25, ...) proceed silently. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent b0f6d2e commit 546dd97

1 file changed

Lines changed: 29 additions & 7 deletions

File tree

src/tools/impl/verapdf.ts

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import { existsSync, safeRemoveSync } from "../../deno_ral/fs.ts";
88
import { basename, join } from "../../deno_ral/path.ts";
9+
import { warning } from "../../deno_ral/log.ts";
910

1011
import { unzip } from "../../core/zip.ts";
1112
import { execProcess } from "../../core/process.ts";
@@ -25,29 +26,50 @@ import { isWindows } from "../../deno_ral/platform.ts";
2526
const kDownloadBaseUrl = "https://quarto.org/download";
2627
const kDefaultVersion = "1.28.2";
2728

28-
// Supported Java versions for veraPDF
29-
const kSupportedJavaVersions = [8, 11, 17, 21];
29+
// Minimum Java version required
30+
const kMinJavaVersion = 8;
3031

3132
// The name of the file that we use to store the installed version
3233
const kVersionFileName = "version";
3334

35+
// Check if a Java version is a Long-Term Support (LTS) release.
36+
// LTS versions: 8, 11, then every 2 years starting from 17 (17, 21, 25, 29, ...)
37+
function isLtsJavaVersion(version: number): boolean {
38+
if (version === 8 || version === 11) return true;
39+
if (version >= 17 && (version - 17) % 4 === 0) return true;
40+
return false;
41+
}
42+
3443
export const verapdfInstallable: InstallableTool = {
3544
name: "VeraPDF",
3645
prereqs: [{
3746
check: async (context) => {
3847
const javaVersion = await getJavaVersion();
3948
context.props.javaVersion = javaVersion;
40-
return javaVersion !== undefined &&
41-
kSupportedJavaVersions.includes(javaVersion);
49+
50+
// Block installation if Java is not installed or version is too old
51+
if (javaVersion === undefined || javaVersion < kMinJavaVersion) {
52+
return false;
53+
}
54+
55+
// Warn but allow installation for non-LTS Java versions
56+
if (!isLtsJavaVersion(javaVersion)) {
57+
warning(
58+
`Java ${javaVersion} is not a Long-Term Support (LTS) version. ` +
59+
`veraPDF officially supports LTS versions (8, 11, 17, 21, 25, ...). ` +
60+
`Installation will proceed, but you may encounter issues.`,
61+
);
62+
}
63+
64+
return true;
4265
},
4366
os: ["darwin", "linux", "windows"],
4467
message: (context) => {
4568
const javaVersion = context.props.javaVersion as number | undefined;
46-
const supportedVersions = kSupportedJavaVersions.join(", ");
4769
if (javaVersion === undefined) {
48-
return `Java is not installed. veraPDF requires Java ${supportedVersions}.`;
70+
return `Java is not installed. veraPDF requires Java ${kMinJavaVersion} or later.`;
4971
} else {
50-
return `Java ${javaVersion} is installed but not supported. veraPDF requires Java ${supportedVersions}.`;
72+
return `Java ${javaVersion} is too old. veraPDF requires Java ${kMinJavaVersion} or later.`;
5173
}
5274
},
5375
}],

0 commit comments

Comments
 (0)