51 lines
1.4 KiB
Groovy
51 lines
1.4 KiB
Groovy
|
package kcauldron
|
||
|
|
||
|
import org.gradle.api.DefaultTask
|
||
|
import org.gradle.api.GradleException
|
||
|
import org.gradle.api.tasks.InputFile
|
||
|
import org.gradle.api.tasks.OutputDirectory
|
||
|
import org.gradle.api.tasks.TaskAction
|
||
|
import org.gradle.api.tasks.incremental.IncrementalTaskInputs
|
||
|
|
||
|
class InstallBundle extends DefaultTask {
|
||
|
@InputFile
|
||
|
def File installer
|
||
|
|
||
|
@OutputDirectory
|
||
|
def File getInstallLocation() {
|
||
|
new File(project.buildDir, 'bundle')
|
||
|
}
|
||
|
|
||
|
@TaskAction
|
||
|
def install() {
|
||
|
installLocation.deleteDir()
|
||
|
installLocation.mkdirs()
|
||
|
for (int i = 0; i < 3; i++) {
|
||
|
def result = project.javaexec {
|
||
|
workingDir installLocation
|
||
|
classpath installer
|
||
|
main 'net.minecraftforge.installer.SimpleInstaller'
|
||
|
args '--installServer'
|
||
|
standardOutput new NopOutputStream()
|
||
|
errorOutput new NopOutputStream()
|
||
|
}
|
||
|
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 {
|
||
|
}
|
||
|
}
|
||
|
}
|