Skip to content

Commit

Permalink
refactor(codemodel): use relativePath for file paths in structure pro…
Browse files Browse the repository at this point in the history
…viders #170

Updated file structure providers to use `relativePath` for consistent path handling across Kotlin, Go, Proto, Java, and JavaScript providers. Also adjusted local mode check in `ShireDefaultLlmExecutor` to include `context.hole` condition.
  • Loading branch information
phodal committed Dec 25, 2024
1 parent c791895 commit 4907077
Show file tree
Hide file tree
Showing 6 changed files with 13 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,14 @@ import com.intellij.psi.PsiFile
import com.intellij.psi.util.PsiTreeUtil
import com.phodal.shirecore.provider.codemodel.FileStructureProvider
import com.phodal.shirecore.provider.codemodel.model.FileStructure
import com.phodal.shirecore.relativePath

class GoFileStructureProvider : FileStructureProvider {
override fun build(psiFile: PsiFile): FileStructure? {
if (psiFile !is GoFile) return null

val packageString = psiFile.packageName
val path = psiFile.virtualFile.path
val path = psiFile.virtualFile.relativePath(psiFile.project)
val imports = psiFile.imports
val classes = PsiTreeUtil.getChildrenOfTypeAsList(psiFile, GoType::class.java)
val methods = PsiTreeUtil.getChildrenOfTypeAsList(psiFile, GoFunctionOrMethodDeclaration::class.java)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import com.intellij.psi.*
import com.intellij.psi.util.PsiTreeUtil.getChildrenOfTypeAsList
import com.phodal.shirecore.provider.codemodel.FileStructureProvider
import com.phodal.shirecore.provider.codemodel.model.FileStructure
import com.phodal.shirecore.relativePath

class JavaFileStructureProvider : FileStructureProvider {
override fun build(psiFile: PsiFile): FileStructure {
Expand All @@ -15,7 +16,7 @@ class JavaFileStructureProvider : FileStructureProvider {
for (it in importLists) imports.addAll(it.allImportStatements)

val packageString = packageStatement?.text
val path = psiFile.virtualFile.path
val path = psiFile.virtualFile.relativePath(psiFile.project)

return FileStructure(psiFile, psiFile.name, path, packageString, imports, classDeclarations, emptyList())
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,11 @@ import com.intellij.psi.PsiFile
import com.intellij.psi.util.PsiTreeUtil
import com.phodal.shirecore.provider.codemodel.FileStructureProvider
import com.phodal.shirecore.provider.codemodel.model.FileStructure
import com.phodal.shirecore.relativePath

class JavaScriptFileStructureProvider : FileStructureProvider {
override fun build(psiFile: PsiFile): FileStructure? {
val file = psiFile.virtualFile ?: return null
val file = if (psiFile.virtualFile != null) psiFile.virtualFile!!.relativePath(psiFile.project) else ""
val importDeclarations = ES6ImportPsiUtil.getImportDeclarations((psiFile as PsiElement))
val classes =
PsiTreeUtil.getChildrenOfTypeAsList(psiFile as PsiElement, JSClass::class.java)
Expand All @@ -21,7 +22,7 @@ class JavaScriptFileStructureProvider : FileStructureProvider {
return FileStructure(
psiFile,
psiFile.name,
file.path,
file,
null,
importDeclarations,
classes,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import com.intellij.psi.PsiFile
import com.intellij.psi.util.PsiTreeUtil
import com.phodal.shirecore.provider.codemodel.FileStructureProvider
import com.phodal.shirecore.provider.codemodel.model.FileStructure
import com.phodal.shirecore.relativePath
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtImportList
import org.jetbrains.kotlin.psi.KtNamedFunction
Expand All @@ -12,7 +13,7 @@ import org.jetbrains.kotlin.psi.KtPackageDirective
class KotlinFileStructureProvider : FileStructureProvider {
override fun build(psiFile: PsiFile): FileStructure? {
val name = psiFile.name
val path = psiFile.virtualFile?.path ?: ""
val path = if (psiFile.virtualFile != null) psiFile.virtualFile!!.relativePath(psiFile.project) else ""

val packageDirective = PsiTreeUtil.getChildrenOfTypeAsList(psiFile, KtPackageDirective::class.java).firstOrNull()
val packageName = packageDirective?.text ?: ""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,12 @@ import com.intellij.psi.PsiFile
import com.intellij.psi.util.PsiTreeUtil
import com.phodal.shirecore.provider.codemodel.FileStructureProvider
import com.phodal.shirecore.provider.codemodel.model.FileStructure
import com.phodal.shirecore.relativePath

class ProtoFileStructureProvider : FileStructureProvider {
override fun build(psiFile: PsiFile): FileStructure? {
val name = psiFile.name
val path = psiFile.virtualFile?.path ?: ""
val path = if (psiFile.virtualFile != null) psiFile.virtualFile!!.relativePath(psiFile.project) else ""

val packageName =
PsiTreeUtil.getChildrenOfTypeAsList(psiFile, PbPackageStatement::class.java).firstOrNull()?.text ?: ""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ import com.phodal.shirecore.ShireCoroutineScope
import com.phodal.shirecore.config.InteractionType
import com.phodal.shirecore.config.ShireActionLocation
import com.phodal.shirecore.config.interaction.PostFunction
import com.phodal.shirecore.runner.console.cancelWithConsole
import com.phodal.shirecore.llm.LlmProvider
import com.phodal.shirecore.provider.ide.LocationInteractionContext
import com.phodal.shirecore.provider.ide.LocationInteractionProvider
import com.phodal.shirecore.runner.console.cancelWithConsole
import com.phodal.shirelang.ShireBundle
import com.phodal.shirelang.run.flow.ShireConversationService
import kotlinx.coroutines.launch
Expand All @@ -23,7 +23,7 @@ class ShireDefaultLlmExecutor(
override fun execute(postFunction: PostFunction) {
ApplicationManager.getApplication().invokeLater({
val console = context.console
if (isLocalMode) {
if (isLocalMode && context.hole == null) {
console?.print(ShireBundle.message("shire.run.local.mode"), ConsoleViewContentType.SYSTEM_OUTPUT)
context.processHandler.detachProcess()
return@invokeLater
Expand Down

0 comments on commit 4907077

Please sign in to comment.