Always remove extension from script file

Fix for 35631dc2df refactoring.
Extension was actually always removed before refactoring.
This commit is contained in:
Nikolay Krasko
2017-01-10 16:40:49 +03:00
parent e89ffbf916
commit 80af30fb4f
4 changed files with 7 additions and 11 deletions
@@ -41,7 +41,7 @@ open class KotlinScriptDefinition(val template: KClass<out Any>) {
getFileName(file).endsWith(KotlinParserDefinition.STD_SCRIPT_EXT)
open fun getScriptName(script: KtScript): Name =
ScriptNameUtil.fileNameWithExtensionStripped(script, KotlinParserDefinition.STD_SCRIPT_EXT)
ScriptNameUtil.fileNameWithExtensionStripped(script)
open fun <TF: Any> getDependenciesFor(file: TF, project: Project, previousDependencies: KotlinScriptExternalDependencies?): KotlinScriptExternalDependencies? = null
}
@@ -85,7 +85,7 @@ open class KotlinScriptDefinitionFromAnnotatedTemplate(
scriptFilePattern.let { Regex(it).matches(getFileName(file)) }
// TODO: implement other strategy - e.g. try to extract something from match with ScriptFilePattern
override fun getScriptName(script: KtScript): Name = ScriptNameUtil.fileNameWithExtensionStripped(script, KotlinParserDefinition.STD_SCRIPT_EXT)
override fun getScriptName(script: KtScript): Name = ScriptNameUtil.fileNameWithExtensionStripped(script)
override fun <TF: Any> getDependenciesFor(file: TF, project: Project, previousDependencies: KotlinScriptExternalDependencies?): KotlinScriptExternalDependencies? {
@@ -18,18 +18,14 @@ package org.jetbrains.kotlin.script
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtScript
import org.jetbrains.kotlin.utils.addToStdlib.lastIndexOfOrNull
object ScriptNameUtil {
fun fileNameWithExtensionStripped(script: KtScript, vararg extensions: String): Name =
Name.identifier(generateNameByFileName(script.containingKtFile.name, *extensions))
fun fileNameWithExtensionStripped(script: KtScript): Name =
Name.identifier(generateNameByFileName(script.containingKtFile.name))
fun generateNameByFileName(filePath: String, vararg extensions: String): String {
fun generateNameByFileName(filePath: String): String {
val fileName = filePath.substringAfterLast('/')
val nameWithoutExtension = extensions.asSequence()
.map { if (it.startsWith('.')) it else ".$it" }
.firstOrNull { fileName.endsWith(it) }?.let { fileName.removeSuffix(it) }
?: fileName
val nameWithoutExtension = fileName.substringBeforeLast('.')
return nameWithoutExtension
.replace('.', '_')
.capitalize()
@@ -188,7 +188,7 @@ private class ScriptCommandLineState(
override fun createJavaParameters(): JavaParameters? {
val params = commonParameters()
val filePath = configuration.filePath ?: throw CantRunException("Script file was not specified")
val scriptVFile = LocalFileSystem.getInstance().findFileByIoFile(File(filePath)) ?:
throw CantRunException("Script file was not found in project")