From 34a890eacdda5a6a0807cdbd881e0337c0f256b5 Mon Sep 17 00:00:00 2001 From: Mykola Donin Date: Mon, 21 Feb 2022 18:39:27 +0200 Subject: [PATCH 1/3] 929: fis showing package name on windows --- .../actions/generation/NewModuleAction.java | 8 +++ .../generation/dialog/NewModuleDialog.java | 7 ++- .../magento/packages/Package.java | 1 + .../util/magento/MagentoBasePathUtil.java | 54 ++++++++++++++++++- 4 files changed, 67 insertions(+), 3 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/NewModuleAction.java b/src/com/magento/idea/magento2plugin/actions/generation/NewModuleAction.java index 9a4ea61c2..6645bfdce 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/NewModuleAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/NewModuleAction.java @@ -19,6 +19,7 @@ import com.magento.idea.magento2plugin.actions.generation.util.IsClickedDirectoryInsideProject; import com.magento.idea.magento2plugin.project.Settings; import com.magento.idea.magento2plugin.util.magento.GetModuleNameByDirectoryUtil; +import com.magento.idea.magento2plugin.util.magento.MagentoBasePathUtil; import org.jetbrains.annotations.NotNull; public class NewModuleAction extends com.intellij.openapi.actionSystem.AnAction { @@ -89,6 +90,13 @@ public void update(final AnActionEvent event) { final String moduleName = GetModuleNameByDirectoryUtil .execute((PsiDirectory) psiElement, project); if (moduleName == null) { + final String sourceDirPath = ((PsiDirectory) psiElement).getVirtualFile().getPath(); + + if (!MagentoBasePathUtil.isCustomCodeSourceDirValid(sourceDirPath) + && !MagentoBasePathUtil.isCustomVendorDirValid(sourceDirPath)) { + event.getPresentation().setVisible(false); + return; + } event.getPresentation().setVisible(true); return; } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModuleDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModuleDialog.java index e03a60350..a98b59401 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModuleDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModuleDialog.java @@ -6,6 +6,7 @@ package com.magento.idea.magento2plugin.actions.generation.dialog;//NOPMD import com.intellij.openapi.project.Project; +import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiDirectory; import com.intellij.psi.PsiFile; import com.magento.idea.magento2plugin.actions.generation.NewModuleAction; @@ -26,6 +27,7 @@ import com.magento.idea.magento2plugin.magento.packages.Package; import com.magento.idea.magento2plugin.project.Settings; import com.magento.idea.magento2plugin.util.CamelCaseToHyphen; +import com.magento.idea.magento2plugin.util.magento.MagentoBasePathUtil; import com.magento.idea.magento2plugin.util.magento.MagentoVersionUtil; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; @@ -163,8 +165,9 @@ public void windowClosing(final WindowEvent event) { } private void detectPackageName(final @NotNull PsiDirectory initialBaseDir) { - final PsiDirectory parentDir = initialBaseDir.getParent(); - if (parentDir != null && parentDir.toString().endsWith(Package.packagesRoot)) { + final VirtualFile initialBaseDirVf = initialBaseDir.getVirtualFile(); + + if (MagentoBasePathUtil.isCustomVendorDirValid(initialBaseDirVf.getPath())) { packageName.setVisible(false); packageNameLabel.setVisible(false); this.detectedPackageName = initialBaseDir.getName(); diff --git a/src/com/magento/idea/magento2plugin/magento/packages/Package.java b/src/com/magento/idea/magento2plugin/magento/packages/Package.java index dcd91eeec..3bf3d2bd2 100644 --- a/src/com/magento/idea/magento2plugin/magento/packages/Package.java +++ b/src/com/magento/idea/magento2plugin/magento/packages/Package.java @@ -6,6 +6,7 @@ package com.magento.idea.magento2plugin.magento.packages; public class Package { //NOPMD + public static final String V_FILE_SEPARATOR = "/"; public static String packagesRoot = "app/code"; public static String libWebRoot = "lib/web"; public static String frameworkRootComposer = "vendor/magento/framework"; diff --git a/src/com/magento/idea/magento2plugin/util/magento/MagentoBasePathUtil.java b/src/com/magento/idea/magento2plugin/util/magento/MagentoBasePathUtil.java index 8cd83bf60..84b9fdf7c 100644 --- a/src/com/magento/idea/magento2plugin/util/magento/MagentoBasePathUtil.java +++ b/src/com/magento/idea/magento2plugin/util/magento/MagentoBasePathUtil.java @@ -9,8 +9,10 @@ import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; -import com.magento.idea.magento2plugin.magento.packages.File; import com.magento.idea.magento2plugin.magento.packages.Package; +import java.io.File; +import java.util.Arrays; +import org.jetbrains.annotations.NotNull; public final class MagentoBasePathUtil { @@ -38,4 +40,54 @@ public static boolean isMagentoFolderValid(final String path) { } return false; } + + /** + * Check if specified path belongs to the correct vendor name. + * + * @param path String + * + * @return boolean + */ + public static boolean isCustomVendorDirValid(final @NotNull String path) { + final String[] pathParts = path.split(Package.V_FILE_SEPARATOR); + + if (pathParts.length < 3) { + return false; + } + + final String[] sourceCandidateParts = Arrays.copyOfRange( + pathParts, + pathParts.length - 3, + pathParts.length - 1 + ); + + return Package.packagesRoot.equals( + String.join(Package.V_FILE_SEPARATOR, sourceCandidateParts) + ); + } + + /** + * Check if specified path belongs to the correct packages folder. + * + * @param path String + * + * @return boolean + */ + public static boolean isCustomCodeSourceDirValid(final @NotNull String path) { + final String[] pathParts = path.split(Package.V_FILE_SEPARATOR); + + if (pathParts.length < 2) { + return false; + } + + final String[] sourceCandidateParts = Arrays.copyOfRange( + pathParts, + pathParts.length - 2, + pathParts.length + ); + + return Package.packagesRoot.equals( + String.join(Package.V_FILE_SEPARATOR, sourceCandidateParts) + ); + } } From f47876c92fa2484a5ff03d525eaea9f77f4a98c4 Mon Sep 17 00:00:00 2001 From: Mykola Donin Date: Mon, 21 Feb 2022 19:20:48 +0200 Subject: [PATCH 2/3] 929: fix code style --- .../magento2plugin/actions/generation/NewModuleAction.java | 7 +++++-- .../actions/generation/dialog/NewModuleDialog.java | 1 - .../magento2plugin/util/magento/MagentoBasePathUtil.java | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/NewModuleAction.java b/src/com/magento/idea/magento2plugin/actions/generation/NewModuleAction.java index 6645bfdce..30e40033e 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/NewModuleAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/NewModuleAction.java @@ -91,9 +91,12 @@ public void update(final AnActionEvent event) { .execute((PsiDirectory) psiElement, project); if (moduleName == null) { final String sourceDirPath = ((PsiDirectory) psiElement).getVirtualFile().getPath(); + final boolean isCustomCodeSourceDirValid = + MagentoBasePathUtil.isCustomCodeSourceDirValid(sourceDirPath); + final boolean isCustomVendorDirValid = + MagentoBasePathUtil.isCustomVendorDirValid(sourceDirPath); - if (!MagentoBasePathUtil.isCustomCodeSourceDirValid(sourceDirPath) - && !MagentoBasePathUtil.isCustomVendorDirValid(sourceDirPath)) { + if (!isCustomCodeSourceDirValid && !isCustomVendorDirValid) { event.getPresentation().setVisible(false); return; } diff --git a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModuleDialog.java b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModuleDialog.java index a98b59401..407e4d99c 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModuleDialog.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModuleDialog.java @@ -24,7 +24,6 @@ import com.magento.idea.magento2plugin.indexes.ModuleIndex; import com.magento.idea.magento2plugin.magento.files.ComposerJson; import com.magento.idea.magento2plugin.magento.packages.Licenses; -import com.magento.idea.magento2plugin.magento.packages.Package; import com.magento.idea.magento2plugin.project.Settings; import com.magento.idea.magento2plugin.util.CamelCaseToHyphen; import com.magento.idea.magento2plugin.util.magento.MagentoBasePathUtil; diff --git a/src/com/magento/idea/magento2plugin/util/magento/MagentoBasePathUtil.java b/src/com/magento/idea/magento2plugin/util/magento/MagentoBasePathUtil.java index 84b9fdf7c..b3efd164c 100644 --- a/src/com/magento/idea/magento2plugin/util/magento/MagentoBasePathUtil.java +++ b/src/com/magento/idea/magento2plugin/util/magento/MagentoBasePathUtil.java @@ -51,7 +51,7 @@ public static boolean isMagentoFolderValid(final String path) { public static boolean isCustomVendorDirValid(final @NotNull String path) { final String[] pathParts = path.split(Package.V_FILE_SEPARATOR); - if (pathParts.length < 3) { + if (pathParts.length < 3) { //NOPMD return false; } @@ -76,7 +76,7 @@ public static boolean isCustomVendorDirValid(final @NotNull String path) { public static boolean isCustomCodeSourceDirValid(final @NotNull String path) { final String[] pathParts = path.split(Package.V_FILE_SEPARATOR); - if (pathParts.length < 2) { + if (pathParts.length < 2) { //NOPMD return false; } From c54a3f4e1319b96fbdc4df863cc3faed2eb497c2 Mon Sep 17 00:00:00 2001 From: Mykola Donin Date: Mon, 21 Feb 2022 19:33:17 +0200 Subject: [PATCH 3/3] 929: fix code style --- .../idea/magento2plugin/actions/generation/NewModuleAction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/magento/idea/magento2plugin/actions/generation/NewModuleAction.java b/src/com/magento/idea/magento2plugin/actions/generation/NewModuleAction.java index 30e40033e..0e9f0ca26 100644 --- a/src/com/magento/idea/magento2plugin/actions/generation/NewModuleAction.java +++ b/src/com/magento/idea/magento2plugin/actions/generation/NewModuleAction.java @@ -96,7 +96,7 @@ public void update(final AnActionEvent event) { final boolean isCustomVendorDirValid = MagentoBasePathUtil.isCustomVendorDirValid(sourceDirPath); - if (!isCustomCodeSourceDirValid && !isCustomVendorDirValid) { + if (!isCustomCodeSourceDirValid && !isCustomVendorDirValid) { //NOPMD event.getPresentation().setVisible(false); return; }