Skip to content

Commit

Permalink
Get it to compile on gradle 8
Browse files Browse the repository at this point in the history
Addresses immediate errors and deprecation warnings

Has not actually been tested for runtime correctness

Fixes kkdt#1
  • Loading branch information
bpfoster committed Jul 3, 2024
1 parent 88c15b0 commit 6558abf
Show file tree
Hide file tree
Showing 4 changed files with 55 additions and 38 deletions.
21 changes: 11 additions & 10 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,18 @@
* See LICENSE at the project root directory.
*/

apply plugin: 'groovy'
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'maven-publish'
apply plugin: 'eclipse'
plugins {
id('groovy')
id('java-library')
id('maven-publish')
id('eclipse')
}

group = 'kkdt.gradle.api'
version = '0.1'
version = '0.2'

repositories {
jcenter()
mavenCentral()
}

eclipse {
Expand All @@ -29,9 +30,9 @@ ext {
}

dependencies {
compile gradleApi()
compile localGroovy()
compile 'com.google.guava:guava:22.0'
implementation gradleApi()
implementation localGroovy()
implementation 'com.google.guava:guava:33.2.1-jre'
}

publishing {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,17 @@
*/
package kkdt.gradle.api.task

import kkdt.gradle.api.task.scripts.ExtendedJavaStartScriptGenerationDetails
import kkdt.gradle.api.task.scripts.ExternalScriptGenerator
import kkdt.gradle.api.task.scripts.ExternalScriptTemplate
import kkdt.gradle.api.task.scripts.ExternalTemplateStartScriptGenerator
import org.gradle.api.file.FileCollection
import org.gradle.api.internal.plugins.DefaultJavaAppStartScriptGenerationDetails
import org.gradle.api.internal.plugins.StartScriptTemplateBindingFactory
import org.gradle.api.tasks.application.CreateStartScripts
import org.gradle.jvm.application.scripts.JavaAppStartScriptGenerationDetails
import org.gradle.util.CollectionUtils
import org.gradle.util.TextUtil

import com.google.common.base.Function
import com.google.common.collect.Iterables

import kkdt.gradle.api.task.scripts.ExtendedJavaStartScriptGenerationDetails
import kkdt.gradle.api.task.scripts.ExternalScriptGenerator
import kkdt.gradle.api.task.scripts.ExternalScriptTemplate
import kkdt.gradle.api.task.scripts.ExternalTemplateStartScriptGenerator
import java.util.stream.Collectors

/**
* <p>
Expand All @@ -39,24 +36,23 @@ class ExtendedCreateStartScripts extends CreateStartScripts {
/**
* An extended details is a map of already transformed key-value pairs.
*/
def extendedDetails = [:];
Map<String, String> extendedDetails = [:];
def scriptRelativePath;
def libRelativePath;
def includeWindowsScript = false;

@Override
public void generate() {
if(unixScriptTemplate == null) {
logger.info('unixScriptTemplate not provided, using default unixStartScriptGenerator: ' + unixStartScriptGenerator.class.name);
} else {
logger.info('unixScriptTemplate file used for script generation: ' + unixScriptTemplate + ", " + unixScriptTemplate.class.name);
logger.info("unixScriptTemplate file used for script generation: ${unixScriptTemplate} + ${unixScriptTemplate.class.name}");
// build the template
def fileTemplate = new ExternalScriptTemplate();
fileTemplate.file = unixScriptTemplate;
// configure the custom unix script template generator
ExternalTemplateStartScriptGenerator unixScriptGenerator = new ExternalTemplateStartScriptGenerator();
unixScriptGenerator.template = fileTemplate;
unixScriptGenerator.lineSeparator = TextUtil.getUnixLineSeparator();
unixScriptGenerator.lineSeparator = "\n";
unixScriptGenerator.bindingFactory = StartScriptTemplateBindingFactory.unix();
// set the task unix script template generator to the custom generator
unixStartScriptGenerator = unixScriptGenerator;
Expand Down Expand Up @@ -89,23 +85,34 @@ class ExtendedCreateStartScripts extends CreateStartScripts {
applicationName,
optsEnvironmentVar,
exitEnvironmentVar,
mainClassName,
CollectionUtils.toStringList(defaultJvmOpts),
CollectionUtils.toStringList(getRelativeClasspath()),
mainClass.getOrNull(),
toStringList(defaultJvmOpts),
toStringList(getRelativeClasspath()),
getRelativePath(javaModuleDetector.inferModulePath(mainModule.isPresent(), getClasspath())),
scriptRelativePath == null ? 'lib' + File.separator + unixScript.name : scriptRelativePath,
null);
logger.info('Generator set with extended details: ' + extendedDetails)
scriptDetails.extendedDetails = extendedDetails;
return scriptDetails;
}

private static List<String> getRelativePath(FileCollection path) {
return path.getFiles().stream().map(input -> "lib/" + input.getName()).collect(Collectors.toList());
}

private static List<String> toStringList(Iterable<Object> items) {
List<String> retVal = new ArrayList<>()
items.forEach { item -> retVal.add(item.toString()) }
return retVal;
}

// Copied from parent source code
private Iterable<String> getRelativeClasspath() {
/*private Iterable<String> getRelativeClasspath() {
return Iterables.transform(getClasspath().getFiles(), new Function<File, String>() {
@Override
public String apply(File input) {
return libRelativePath == null ? 'lib' + File.separator + input.name : libRelativePath + File.separator + input.name;
}
});
}
}*/
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@
*/
package kkdt.gradle.api.task.scripts

import java.util.List

import org.gradle.api.internal.plugins.DefaultJavaAppStartScriptGenerationDetails
import org.gradle.jvm.application.scripts.JavaAppStartScriptGenerationDetails

Expand All @@ -27,7 +25,7 @@ class ExtendedJavaStartScriptGenerationDetails implements JavaAppStartScriptGene
/**
* An extended details is a map of already transformed key-value pairs.
*/
def extendedDetails = [:];
Map<String, String> extendedDetails = [:];

@Override
public String getAppNameSystemProperty() {
Expand All @@ -43,7 +41,12 @@ class ExtendedJavaStartScriptGenerationDetails implements JavaAppStartScriptGene
public List<String> getClasspath() {
return details.getClasspath();
}


@Override
List<String> getModulePath() {
return details.getModulePath();
}

@Override
public List<String> getDefaultJvmOpts() {
return details.getDefaultJvmOpts();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,17 @@
*/
package kkdt.gradle.api.task.scripts

import groovy.text.SimpleTemplateEngine
import groovy.text.Template
import org.gradle.api.Transformer
import org.gradle.api.internal.plugins.StartScriptTemplateBindingFactory
import org.gradle.api.resources.TextResource
import org.gradle.internal.InternalTransformer
import org.gradle.internal.io.IoUtils
import org.gradle.jvm.application.scripts.JavaAppStartScriptGenerationDetails
import org.gradle.jvm.application.scripts.TemplateBasedScriptGenerator
import org.gradle.util.TextUtil

import groovy.text.SimpleTemplateEngine
import groovy.text.Template
import javax.annotation.Nullable
import java.util.regex.Pattern

/**
* <p>
Expand Down Expand Up @@ -56,18 +57,23 @@ class ExternalTemplateStartScriptGenerator implements TemplateBasedScriptGenerat
}

private String generateStartScriptContentFromTemplate(final Map<String, String> binding) {
return IoUtils.get(template.asReader(), new Transformer<String, Reader>() {
return IoUtils.get(template.asReader(), new InternalTransformer<String, Reader>() {
@Override
public String transform(Reader reader) {
try {
SimpleTemplateEngine engine = new SimpleTemplateEngine();
Template template = engine.createTemplate(reader);
String output = template.make(binding).toString();
return TextUtil.convertLineSeparators(output, lineSeparator);
return convertLineSeparators(output, lineSeparator);
} catch (IOException e) {
throw e;
}
}
});
}

private static String convertLineSeparators(@Nullable String str, String sep) {
def pattern = Pattern.compile("\r\n|\r|\n")
return str == null ? null : pattern.matcher(str).replaceAll(sep);
}
}

0 comments on commit 6558abf

Please sign in to comment.