Make bundle for publishing
This commit is contained in:
50
buildSrc/src/main/groovy/kcauldron/InstallBundle.groovy
Normal file
50
buildSrc/src/main/groovy/kcauldron/InstallBundle.groovy
Normal file
@ -0,0 +1,50 @@
|
||||
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 {
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user