override fun createFile()

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)
    }