diff --git a/build.gradle b/build.gradle index 7308e5f6..91a44979 100644 --- a/build.gradle +++ b/build.gradle @@ -42,6 +42,10 @@ allprojects { version = distVersion() +configurations { + lessCss +} + dependencies { implementation 'org.commonmark:commonmark:0.24.0' implementation 'org.commonmark:commonmark-ext-autolink:0.24.0' @@ -50,7 +54,7 @@ dependencies { implementation 'org.jsoup:jsoup:1.19.1' implementation 'rome:rome:1.0' - implementation('org.lesscss:lesscss:1.7.0.1.1') { + lessCss('org.lesscss:lesscss:1.7.0.1.1') { exclude group: 'org.mozilla', module: 'rhino' exclude group: 'org.slf4j', module: 'slf4j-api' exclude group: 'org.slf4j', module: 'slf4j-simple' @@ -319,3 +323,52 @@ tasks.register('distTar', Tar) { destinationDirectory = file(outputDir) archiveFileName = outputFile } + +// Task to patch the lesscss JAR file +// This task modifies the lessc-rhino-1.7.0.js file in the JAR to comment out an annoying console.log statement (“done”) +def patchLessCssJar = tasks.register('patchLessCssJar') { + def name = 'lesscss-1.7.0.1.1' + def targetFile = 'META-INF/lessc-rhino-1.7.0.js' // File to patch + def tempDir = file("${buildDir}/${name}") // Temporary directory for extraction + def patchedJar = file("${buildDir}/${name}-patched.jar") // Output patched JAR + + outputs.file patchedJar + + doLast { + if (tempDir.exists()) { + tempDir.deleteDir() + } + tempDir.mkdirs() + + def jarFile = configurations.lessCss.find { + it.name.contains(name) + } + + println "Patching $jarFile…" + ant.unzip(src: jarFile, dest: tempDir) + + def targetFilePath = new File(tempDir, targetFile) + def content = targetFilePath.text + content = content.replace('console.log("done")', '// console.log("done")') + targetFilePath.text = content + + ant.zip(destfile: patchedJar) { + fileset(dir: tempDir) + } + } +} + +// Ensure the patchLessCssJar task runs before the classes task +tasks.named('build').configure { + dependsOn patchLessCssJar +} + +// Exclude the original lesscss JAR from the runtime classpath +// and include the patched JAR instead +configurations.runtimeClasspath { + exclude group: 'org.lesscss', module: 'lesscss' + + dependencies { + runtimeOnly(patchLessCssJar.map { it.outputs.files }) + } +} diff --git a/code/Global/Global.js b/code/Global/Global.js index 2019d0a2..70867f6d 100644 --- a/code/Global/Global.js +++ b/code/Global/Global.js @@ -23,7 +23,8 @@ String.ELLIPSIS = '…'; app.addRepository(app.dir + '/../lib/jdom-1.0.jar'); app.addRepository(app.dir + '/../lib/jsoup-1.19.1.jar'); -app.addRepository(app.dir + '/../lib/lesscss-1.7.0.1.1.jar'); +// See the patchLessCssJar task in build.gradle +app.addRepository(app.dir + '/../lib/lesscss-1.7.0.1.1-patched.jar'); app.addRepository(app.dir + '/../lib/rome-1.0.jar'); app.addRepository('modules/core/Global.js'); diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index a4b76b95..9bbc975c 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e18bc253..37f853b1 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index f3b75f3b..faf93008 100755 --- a/gradlew +++ b/gradlew @@ -205,7 +205,7 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line.