Auto create shebang executable
Change-Id: I7105b82656b641910326d7bc38ce615d930ec04d
diff --git a/app/build.gradle b/app/build.gradle
index c50eecb..46e0d2a 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -136,8 +136,33 @@
}
}
+// Concatenate shebang + shaded jar into an executable launcher
+tasks.register('assembleShebangExecutable') {
+ dependsOn shadowJar
+ inputs.file(rootProject.file("korapxmltool.shebang"))
+ outputs.file(new File(shadowJar.archiveFile.get().asFile.parent, "korapxmltool"))
+
+ doLast {
+ def shebang = rootProject.file("korapxmltool.shebang")
+ if (!shebang.exists()) {
+ throw new GradleException("Missing shebang stub: ${shebang}")
+ }
+
+ def targetJar = shadowJar.archiveFile.get().asFile
+ def targetExec = new File(targetJar.parent, "korapxmltool")
+
+ targetExec.withOutputStream { os ->
+ os << shebang.bytes
+ os << targetJar.bytes
+ }
+ targetExec.setExecutable(true, true)
+ println "Created executable launcher: ${targetExec}"
+ }
+}
+
tasks.named('build') {
dependsOn createJarSymlink
+ dependsOn assembleShebangExecutable
}