Add korapxml2conllu shortcut

Change-Id: Ic53e088042a27bd046563805fcd9d3aa8744cf01
diff --git a/app/build.gradle b/app/build.gradle
index 555c245..fa09110 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -150,8 +150,10 @@
     def binDir = rootProject.file("build/bin")
     def targetExec = new File(binDir, "korapxmltool")
     def krillExec = new File(binDir, "korapxml2krill")
+    def conlluExec = new File(binDir, "korapxml2conllu")
     outputs.file(targetExec)
     outputs.file(krillExec)
+    outputs.file(conlluExec)
 
     doLast {
         def shebang = rootProject.file("korapxmltool.shebang")
@@ -187,6 +189,22 @@
             java.nio.file.Files.copy(targetExec.toPath(), krillExec.toPath())
             krillExec.setExecutable(true, false)
         }
+        
+        // Create korapxml2conllu symlink for backward compatibility
+        if (conlluExec.exists()) {
+            conlluExec.delete()
+        }
+        try {
+            java.nio.file.Files.createSymbolicLink(
+                conlluExec.toPath(),
+                java.nio.file.Paths.get("korapxmltool")
+            )
+            println "Created symlink: korapxml2conllu -> korapxmltool"
+        } catch (Exception e) {
+            println "Warning: Could not create korapxml2conllu symlink (${e.message}), copying instead"
+            java.nio.file.Files.copy(targetExec.toPath(), conlluExec.toPath())
+            conlluExec.setExecutable(true, false)
+        }
     }
 }
 
diff --git a/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt b/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt
index fbe3468..149b248 100644
--- a/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt
+++ b/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt
@@ -4400,45 +4400,75 @@
     val programName = System.getProperty("sun.java.command")?.split(" ")?.first()?.split("/")?.last()
         ?: File(System.getProperty("java.class.path")).name
     
-    val filteredArgs = if (programName == "korapxml2krill") {
-        // Filter out Perl-specific options and add krill format
-        val perlOptions = setOf("-z", "-w", "-c")
-        val newArgs = mutableListOf<String>()
-        
-        // Always set krill output format for korapxml2krill
-        if (!args.contains("-t") && !args.contains("--to")) {
-            newArgs.add("-t")
-            newArgs.add("krill")
-        }
-        
-        var i = 0
-        while (i < args.size) {
-            val arg = args[i]
-            when {
-                perlOptions.contains(arg) -> {
-                    // Skip this option
-                    if (arg == "-c" && i + 1 < args.size) {
-                        // Skip -c and its argument
-                        i++
+    val filteredArgs = when (programName) {
+        "korapxml2krill" -> {
+            // Filter out Perl-specific options and add krill format
+            val perlOptions = setOf("-z", "-w", "-c")
+            val newArgs = mutableListOf<String>()
+            
+            // Always set krill output format for korapxml2krill
+            if (!args.contains("-t") && !args.contains("--to")) {
+                newArgs.add("-t")
+                newArgs.add("krill")
+            }
+            
+            var i = 0
+            while (i < args.size) {
+                val arg = args[i]
+                when {
+                    perlOptions.contains(arg) -> {
+                        // Skip this option
+                        if (arg == "-c" && i + 1 < args.size) {
+                            // Skip -c and its argument
+                            i++
+                        }
                     }
+                    arg == "-t" || arg == "--to" -> {
+                        // If format is already specified, override with krill
+                        newArgs.add(arg)
+                        if (i + 1 < args.size) {
+                            i++
+                            newArgs.add("krill")
+                        }
+                    }
+                    else -> newArgs.add(arg)
                 }
-                arg == "-t" || arg == "--to" -> {
-                    // If format is already specified, override with krill
+                i++
+            }
+            
+            System.err.println("korapxml2krill compatibility mode: filtered arguments")
+            newArgs.toTypedArray()
+        }
+        "korapxml2conllu" -> {
+            // Set conllu output format for korapxml2conllu
+            val newArgs = mutableListOf<String>()
+            
+            // Always set conllu output format
+            if (!args.contains("-t") && !args.contains("--to")) {
+                newArgs.add("-t")
+                newArgs.add("conllu")
+            }
+            
+            var i = 0
+            while (i < args.size) {
+                val arg = args[i]
+                if (arg == "-t" || arg == "--to") {
+                    // If format is already specified, override with conllu
                     newArgs.add(arg)
                     if (i + 1 < args.size) {
                         i++
-                        newArgs.add("krill")
+                        newArgs.add("conllu")
                     }
+                } else {
+                    newArgs.add(arg)
                 }
-                else -> newArgs.add(arg)
+                i++
             }
-            i++
+            
+            System.err.println("korapxml2conllu compatibility mode: using conllu format")
+            newArgs.toTypedArray()
         }
-        
-        System.err.println("korapxml2krill compatibility mode: filtered arguments")
-        newArgs.toTypedArray()
-    } else {
-        args
+        else -> args
     }
     
     exitProcess(CommandLine(KorapXmlTool()).execute(*filteredArgs))