You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.3 KiB
86 lines
2.3 KiB
package kcauldron |
|
|
|
import org.gradle.api.DefaultTask |
|
import org.gradle.api.GradleException |
|
import org.gradle.api.file.ConfigurableFileCollection |
|
import org.gradle.api.tasks.* |
|
|
|
class InstallBundle extends DefaultTask { |
|
@InputFile |
|
def File serverJar |
|
|
|
@InputFiles |
|
def ConfigurableFileCollection bootstrapClasspath |
|
|
|
@Input |
|
def String bootstrapMain |
|
|
|
InstallBundle() { |
|
bootstrapClasspath = project.files() |
|
} |
|
|
|
def bootstrapClasspath(Object... args) { |
|
bootstrapClasspath.from args |
|
} |
|
|
|
@OutputDirectory |
|
def File getInstallLocation() { |
|
new File(project.buildDir, 'bundle') |
|
} |
|
|
|
@TaskAction |
|
def install() { |
|
installLocation.deleteDir() |
|
installLocation.mkdirs() |
|
new File(installLocation, "README.txt").withWriter { |
|
def String jarPath = 'bin/' << (project.group as String).replace('.', File.separator) << File.separator << project.name << File.separator << project.version << File.separator << project.name << '-' << project.version << '.jar' |
|
|
|
it << '''Unofficial KCauldron installation guide |
|
|
|
# This is an unofficial version of KCauldron from https://github.com/TCPR/KCauldron |
|
|
|
# Installation and usage |
|
1. Unpack this zip into server directory |
|
2. Use following line to start the server: |
|
java -Xmx1024M -jar ''' |
|
it << jarPath |
|
it << ''' |
|
|
|
or |
|
|
|
java -Xmx1024M -jar KCauldron.jar |
|
|
|
3. Enjoy |
|
|
|
Public builds can be found at: https://tcpr.ca/downloads/unofficial-kcauldron |
|
|
|
''' |
|
} |
|
def cp = bootstrapClasspath |
|
for (int i = 0; i < 3; i++) { |
|
def result = project.javaexec { it -> |
|
workingDir installLocation |
|
classpath cp |
|
main bootstrapMain |
|
args '--serverDir', installLocation.canonicalPath, |
|
'--installServer', serverJar.canonicalFile |
|
} |
|
if (result.exitValue == 0) return |
|
} |
|
throw new GradleException("Failed to install bundle into ${installLocation}") |
|
} |
|
|
|
private static final class NopOutputStream extends OutputStream { |
|
@Override |
|
void write(byte[] b, int off, int len) throws IOException { |
|
} |
|
|
|
@Override |
|
void write(byte[] b) throws IOException { |
|
} |
|
|
|
@Override |
|
void write(int b) throws IOException { |
|
} |
|
} |
|
}
|
|
|