in src/main/kotlin/org/jetbrains/tinygoplugin/services/CreateFileAction.kt [104:130]
override fun createFile(name: String?, templateName: String?, dir: PsiDirectory?): PsiFile? {
val project = dir?.project ?: return null
val sdkPath = project.tinyGoConfiguration().sdk.sdkRoot ?: return null
val examples = VfsUtil.findRelativeFile(sdkPath, "src", "examples")
if (templateName.isNullOrEmpty()) {
return null
}
val exampleFile = examples?.findFileByRelativePath(templateName) ?: return null
if (name.isNullOrEmpty()) {
return null
}
var filename = name
if (!name.endsWith(".go")) {
filename = "$name.go"
}
if (dir.findFile(filename) != null) {
Messages.showErrorDialog(
project,
message(TINYGO_FILE_EXISTS_MESSAGE, "${dir.virtualFile.path}/$filename"),
message(TINYGO_FILE_EXISTS_TITLE)
)
return null
}
val result = copyExample(project, exampleFile, dir.virtualFile, filename) ?: return null
val psiManager = project.service<PsiManager>()
return psiManager.findFile(result)
}