From a4e5806259e6bf941f2c8e2c0551e882defb9dba Mon Sep 17 00:00:00 2001 From: Forrest Bice Date: Fri, 11 Oct 2019 21:17:07 +0000 Subject: [PATCH 1/2] Create a default Run Configuration for Idea Create a default Run Configuration for Intellij when using the `idea` option. Achieved by creating a `Main` configuration within `.idea/runConfigurations`. The `userArgs` are also passed along by default. --- src/main/kotlin/kscript/app/AppHelpers.kt | 26 +++++++++++++++++++++-- src/main/kotlin/kscript/app/Kscript.kt | 2 +- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/kscript/app/AppHelpers.kt b/src/main/kotlin/kscript/app/AppHelpers.kt index 4379004b..8cad13a6 100644 --- a/src/main/kotlin/kscript/app/AppHelpers.kt +++ b/src/main/kotlin/kscript/app/AppHelpers.kt @@ -200,7 +200,7 @@ private fun bytesToHex(buffer: ByteArray): String { fun numLines(str: String) = str.split("\r\n|\r|\n".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray().size -fun launchIdeaWithKscriptlet(scriptFile: File, dependencies: List, customRepos: List, includeURLs: List): String { +fun launchIdeaWithKscriptlet(scriptFile: File, userArgs: List, dependencies: List, customRepos: List, includeURLs: List): String { requireInPath("idea", "Could not find 'idea' in your PATH. It can be created in IntelliJ under `Tools -> Create Command-line Launcher`") infoMsg("Setting up idea project from ${scriptFile}") @@ -218,6 +218,28 @@ fun launchIdeaWithKscriptlet(scriptFile: File, dependencies: List, custo // .run { File(this, "kscript_tmp_project") } // .apply { mkdir() } + File(tmpProjectDir, ".idea/runConfigurations/") + .run { + mkdirs() + } + File(tmpProjectDir, ".idea/runConfigurations/Main.xml").writeText( + """ + + + + + """.trimIndent() + ) + val stringifiedDeps = dependencies.map { " compile \"$it\"" }.joinToString("\n") val stringifiedRepos = customRepos.map { " maven {\n url '${it.url}'\n }\n" }.joinToString("\n") @@ -270,7 +292,7 @@ private fun URL.fileName() = this.toURI().path.split("/").last() private fun createSymLink(link: File, target: File) { try { - Files.createSymbolicLink(link.toPath(), target.absoluteFile.toPath()); + Files.createSymbolicLink(link.toPath(), target.absoluteFile.toPath()) } catch (e: IOException) { errorMsg("Failed to create symbolic link to script. Copying instead...") target.copyTo(link) diff --git a/src/main/kotlin/kscript/app/Kscript.kt b/src/main/kotlin/kscript/app/Kscript.kt index e9d30d43..157ff3f6 100644 --- a/src/main/kotlin/kscript/app/Kscript.kt +++ b/src/main/kotlin/kscript/app/Kscript.kt @@ -150,7 +150,7 @@ fun main(args: Array) { // Create temporary dev environment if (docopt.getBoolean("idea")) { - println(launchIdeaWithKscriptlet(rawScript, dependencies, customRepos, includeURLs)) + println(launchIdeaWithKscriptlet(rawScript, userArgs, dependencies, customRepos, includeURLs)) exitProcess(0) } From 22cf48b6e953f8bd5afa23e64d46ffd1f44b95f0 Mon Sep 17 00:00:00 2001 From: Forrest Bice Date: Sat, 12 Oct 2019 06:13:27 +0000 Subject: [PATCH 2/2] Fix Incorrect Path In Script Tests Following from: https://github.com/holgerbrandl/kscript/pull/240/ commits/d593d97c0db19b0f18aef6dc7fb7bc030b63384f. --- test/test_suite.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_suite.sh b/test/test_suite.sh index 94106ff0..f064ca68 100755 --- a/test/test_suite.sh +++ b/test/test_suite.sh @@ -268,7 +268,7 @@ export -f kscript_nocall assert_raises 'tmpDir=$(kscript_nocall --idea test/resources/includes/include_variations.kts | cut -f2 -d" " | xargs echo); cd $tmpDir && gradle build' 0 ## Ensure relative includes with in shebang mode -assert_raises resources/includes/shebang_mode_includes 0 +assert_raises "${KSCRIPT_HOME}/test/resources/includes/shebang_mode_includes" 0 ## support diamond-shaped include schemes (see #133) assert_raises 'tmpDir=$(kscript_nocall --idea test/resources/includes/diamond.kts | cut -f2 -d" " | xargs echo); cd $tmpDir && gradle build' 0