66
77import { existsSync , safeRemoveSync } from "../../deno_ral/fs.ts" ;
88import { basename , join } from "../../deno_ral/path.ts" ;
9+ import { warning } from "../../deno_ral/log.ts" ;
910
1011import { unzip } from "../../core/zip.ts" ;
1112import { execProcess } from "../../core/process.ts" ;
@@ -25,29 +26,50 @@ import { isWindows } from "../../deno_ral/platform.ts";
2526const kDownloadBaseUrl = "https://quarto.org/download" ;
2627const 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
3233const 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+
3443export 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