Skip to content

Commit c13a59d

Browse files
committed
Improved file path handling and refreshed module tree for better directory management
1 parent a4c4e9d commit c13a59d

File tree

3 files changed

+33
-12
lines changed

3 files changed

+33
-12
lines changed

src/main/java/com/magento/idea/magento2plugin/indexes/ModuleIndex.java

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import com.intellij.openapi.vfs.LocalFileSystem;
99
import com.intellij.openapi.application.ReadAction;
1010
import com.intellij.openapi.project.DumbService;
11+
import com.intellij.openapi.util.io.FileUtil;
1112
import com.intellij.openapi.project.Project;
1213
import com.intellij.openapi.vfs.VirtualFile;
1314
import com.intellij.psi.PsiDirectory;
@@ -187,13 +188,12 @@ private void collectEditableFilesystemModuleNames(
187188
return null;
188189
}
189190

190-
for (final VirtualFile packagesRoot : getEditablePackagesRoots()) {
191-
final VirtualFile vendorDirectory = packagesRoot.findChild(nameParts[0]);
192-
if (vendorDirectory == null || !vendorDirectory.isDirectory()) {
193-
continue;
194-
}
195-
196-
final VirtualFile moduleDirectory = vendorDirectory.findChild(nameParts[1]);
191+
final LocalFileSystem fileSystem = LocalFileSystem.getInstance();
192+
for (final String rootPath : getMagentoRootCandidates()) {
193+
final String modulePath = FileUtil.toSystemIndependentName(
194+
Paths.get(rootPath, Package.packagesRoot, nameParts[0], nameParts[1]).normalize().toString()
195+
);
196+
final VirtualFile moduleDirectory = fileSystem.refreshAndFindFileByPath(modulePath);
197197
if (moduleDirectory == null || !moduleDirectory.isDirectory()) {
198198
continue;
199199
}
@@ -213,7 +213,9 @@ private Collection<VirtualFile> getEditablePackagesRoots() {
213213

214214
for (final String rootPath : getMagentoRootCandidates()) {
215215
final VirtualFile packagesRoot = fileSystem.refreshAndFindFileByPath(
216-
Paths.get(rootPath, Package.packagesRoot).normalize().toString()
216+
FileUtil.toSystemIndependentName(
217+
Paths.get(rootPath, Package.packagesRoot).normalize().toString()
218+
)
217219
);
218220
if (packagesRoot != null && packagesRoot.isDirectory()) {
219221
packagesRoots.add(packagesRoot);
@@ -230,15 +232,19 @@ private Collection<String> getMagentoRootCandidates() {
230232
return candidates;
231233
}
232234

233-
candidates.add(configuredRoot);
235+
candidates.add(FileUtil.toSystemIndependentName(configuredRoot));
234236

235237
final String basePath = project.getBasePath();
236238
if (basePath != null) {
237239
final String rootWithoutLeadingSlash = configuredRoot.startsWith("/")
238240
? configuredRoot.substring(1)
239241
: configuredRoot;
240-
candidates.add(Paths.get(basePath, rootWithoutLeadingSlash).normalize().toString());
241-
candidates.add(Paths.get(basePath, configuredRoot).normalize().toString());
242+
candidates.add(FileUtil.toSystemIndependentName(
243+
Paths.get(basePath, rootWithoutLeadingSlash).normalize().toString()
244+
));
245+
candidates.add(FileUtil.toSystemIndependentName(
246+
Paths.get(basePath, configuredRoot).normalize().toString()
247+
));
242248
}
243249

244250
return candidates;

src/main/kotlin/com/magento/idea/magento2plugin/mcp/MagentoModuleCommands.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ import com.intellij.openapi.application.ReadAction
99
import com.intellij.openapi.application.ApplicationManager
1010
import com.intellij.openapi.application.WriteAction
1111
import com.intellij.openapi.project.Project
12+
import com.intellij.openapi.util.io.FileUtil
1213
import com.intellij.openapi.vfs.LocalFileSystem
14+
import com.intellij.openapi.vfs.VfsUtil
1315
import com.intellij.psi.PsiDirectory
1416
import com.intellij.psi.PsiFile
1517
import com.intellij.psi.PsiManager
@@ -136,6 +138,8 @@ internal object MagentoModuleCommands {
136138
return "Magento module \"$moduleFullName\" could not be created completely. Partial changes were rolled back."
137139
}
138140

141+
refreshCreatedModuleTree(magentoRootDirectory, moduleDirectoryResult.directory)
142+
139143
val lines = mutableListOf(
140144
"Created Magento module \"$moduleFullName\".",
141145
"moduleName: $moduleFullName",
@@ -263,6 +267,11 @@ internal object MagentoModuleCommands {
263267
return "${camelCaseToHyphen.convert(packageName)}/module-${camelCaseToHyphen.convert(moduleName)}"
264268
}
265269

270+
private fun refreshCreatedModuleTree(vararg directories: PsiDirectory) {
271+
val virtualFiles = directories.map { it.virtualFile }.toTypedArray()
272+
VfsUtil.markDirtyAndRefresh(false, true, true, *virtualFiles)
273+
}
274+
266275
private fun resolveMagentoRootDirectory(project: Project, configuredRoot: String): PsiDirectory? {
267276
return ReadAction.compute<PsiDirectory?, RuntimeException> {
268277
val fileSystem = LocalFileSystem.getInstance()
@@ -274,6 +283,7 @@ internal object MagentoModuleCommands {
274283
}
275284

276285
val virtualFile = candidates.asSequence()
286+
.map(FileUtil::toSystemIndependentName)
277287
.mapNotNull { path -> fileSystem.refreshAndFindFileByPath(path) ?: fileSystem.findFileByPath(path) }
278288
.firstOrNull { it.isDirectory }
279289
if (virtualFile != null) {

src/main/kotlin/com/magento/idea/magento2plugin/mcp/MagentoModuleQueries.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,12 @@ internal object MagentoModuleQueries {
2020
}
2121

2222
val moduleIndex = ModuleIndex(project)
23-
val matches = MagentoMcpSupport.prioritizeMatches(moduleIndex.moduleNames, query)
23+
val candidateNames = linkedSetOf<String>()
24+
candidateNames += moduleIndex.moduleNames
25+
if (moduleIndex.getModuleDirectoryByModuleName(query) != null) {
26+
candidateNames += query
27+
}
28+
val matches = MagentoMcpSupport.prioritizeMatches(candidateNames, query)
2429
if (matches.isEmpty()) {
2530
return "No Magento modules matched \"$query\"."
2631
}

0 commit comments

Comments
 (0)