From 739473902763da1b38e82f32cbceec7ef6146601 Mon Sep 17 00:00:00 2001 From: makzef Date: Fri, 18 Nov 2022 07:24:34 +0200 Subject: [PATCH 1/2] 686: add possibility to set custom coming version in UCT --- .../configurations/UctRunConfiguration.java | 8 ++++ .../configurations/UctSettingsEditor.form | 4 +- .../configurations/UctSettingsEditor.java | 47 +++++++++++++++++-- 3 files changed, 54 insertions(+), 5 deletions(-) diff --git a/src/com/magento/idea/magento2uct/execution/configurations/UctRunConfiguration.java b/src/com/magento/idea/magento2uct/execution/configurations/UctRunConfiguration.java index dc40ca81f..8b5ef5e6a 100644 --- a/src/com/magento/idea/magento2uct/execution/configurations/UctRunConfiguration.java +++ b/src/com/magento/idea/magento2uct/execution/configurations/UctRunConfiguration.java @@ -5,6 +5,8 @@ package com.magento.idea.magento2uct.execution.configurations; +import static com.magento.idea.magento2uct.execution.configurations.UctSettingsEditor.MAGENTO_VERSION_PATTERN; + import com.intellij.execution.ExecutionException; import com.intellij.execution.Executor; import com.intellij.execution.RunManager; @@ -32,6 +34,7 @@ import com.magento.idea.magento2uct.settings.UctSettingsService; import com.magento.idea.magento2uct.util.UctExecutableValidatorUtil; import com.magento.idea.magento2uct.util.module.UctModulePathValidatorUtil; +import java.util.regex.Matcher; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -241,6 +244,11 @@ public boolean isNewlyCreated() { throw new ExecutionException("The coming/target version is not specified"); } + final Matcher matcher = MAGENTO_VERSION_PATTERN.matcher(getComingVersion()); + if (!matcher.find()) { + throw new ExecutionException("The coming/target version is not correct"); + } + if (getProjectRoot().isEmpty()) { throw new ExecutionException("The project root is not specified"); } diff --git a/src/com/magento/idea/magento2uct/execution/configurations/UctSettingsEditor.form b/src/com/magento/idea/magento2uct/execution/configurations/UctSettingsEditor.form index a3de59bfc..1e7f0ca56 100644 --- a/src/com/magento/idea/magento2uct/execution/configurations/UctSettingsEditor.form +++ b/src/com/magento/idea/magento2uct/execution/configurations/UctSettingsEditor.form @@ -25,7 +25,9 @@ - + + + diff --git a/src/com/magento/idea/magento2uct/execution/configurations/UctSettingsEditor.java b/src/com/magento/idea/magento2uct/execution/configurations/UctSettingsEditor.java index 215bf5626..9d2ffef88 100644 --- a/src/com/magento/idea/magento2uct/execution/configurations/UctSettingsEditor.java +++ b/src/com/magento/idea/magento2uct/execution/configurations/UctSettingsEditor.java @@ -29,6 +29,9 @@ import java.awt.Container; import java.net.URI; import java.net.URISyntaxException; +import java.util.Objects; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JComponent; @@ -45,6 +48,10 @@ public class UctSettingsEditor extends SettingsEditor { private static final String LEARN_MORE_URI = "https://docs.magento.com/user-guide/getting-started.html#product-editions"; private static final String LEARN_MORE_TEXT = "Learn more. "; + @SuppressWarnings("checkstyle:LineLength") + private static final String MAGENTO_VERSION_REGEX = "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$"; + public static final Pattern MAGENTO_VERSION_PATTERN + = Pattern.compile(MAGENTO_VERSION_REGEX); private final Project project; private String uctExecutablePath; @@ -126,6 +133,14 @@ protected void resetEditorFrom(final @NotNull UctRunConfiguration uctRunConfigur if (!uctRunConfiguration.getComingVersion().isEmpty()) { final String storedComingVersion = uctRunConfiguration.getComingVersion(); setSelectedValueByItsKey(comingVersion, storedComingVersion); + + if (!Objects.requireNonNull( + comingVersion.getSelectedItem()).toString().equals(storedComingVersion)) { + final ComboBoxItemData customVersion + = new ComboBoxItemData(storedComingVersion, storedComingVersion); + comingVersion.addItem(customVersion); + comingVersion.setSelectedItem(customVersion); + } } if (uctRunConfiguration.getMinIssueLevel() > 0) { @@ -148,8 +163,8 @@ protected void applyEditorTo(final @NotNull UctRunConfiguration uctRunConfigurat uctRunConfiguration.setProjectRoot(projectRoot.getComponent().getText()); uctRunConfiguration.setModulePath(modulePath.getComponent().getText()); - final ComboBoxItemData selectedComingVersion = - (ComboBoxItemData) comingVersion.getSelectedItem(); + ComboBoxItemData selectedComingVersion + = getCorrectedSelectedItem(comingVersion.getSelectedItem()); if (selectedComingVersion == null) { uctRunConfiguration.setComingVersion(""); @@ -299,7 +314,7 @@ private String getStoredUctExecutablePath( */ @SuppressWarnings("PMD.AvoidInstantiatingObjectsInLoops") private void initializeComboboxSources() { - comingVersion.addItem(new ComboBoxItemData("", "Choose a target version")); + comingVersion.setToolTipText("Choose a target version"); for (final String version : SupportedVersion.getSupportedVersions()) { comingVersion.addItem(new ComboBoxItemData(version, version)); @@ -339,7 +354,7 @@ protected void textChanged(final @NotNull DocumentEvent event) { }); comingVersion.addItemListener(event -> { - final ComboBoxItemData selectedItem = (ComboBoxItemData) event.getItem(); + final ComboBoxItemData selectedItem = getCorrectedSelectedItem(event.getItem()); validateComingVersionField(selectedItem); }); @@ -366,13 +381,37 @@ private void validateExecutablePathField() { * @param selectedItem ComboBoxItemData */ private void validateComingVersionField(final ComboBoxItemData selectedItem) { + final Matcher matcher = MAGENTO_VERSION_PATTERN.matcher(selectedItem.getText()); + if (selectedItem != null && selectedItem.getKey().isEmpty()) { comingVersionError.setText("Please, specify target version"); + } else if (!matcher.find()) { + comingVersionError.setText("Please, correct target version"); } else { comingVersionError.setText(""); } } + /** + * Get existing item or select and convert custom version. + * + * @param selectedItem String|ComboBoxItemData + * @return ComboBoxItemData + */ + private ComboBoxItemData getCorrectedSelectedItem(final Object selectedItem) { + ComboBoxItemData selectedComingVersion; + + if (selectedItem instanceof ComboBoxItemData) { + selectedComingVersion = (ComboBoxItemData) selectedItem; + } else { + final String customSelectedVersion = selectedItem.toString(); + selectedComingVersion + = new ComboBoxItemData(customSelectedVersion, customSelectedVersion); + } + + return selectedComingVersion; + } + /** * Set selected combobox item by key. * From 841008ef9e4303c9e6e8654f2d94b75178a7e49f Mon Sep 17 00:00:00 2001 From: makzef Date: Thu, 24 Nov 2022 08:07:35 +0200 Subject: [PATCH 2/2] 686: fix uct upgrade command related to module path --- .../execution/configurations/UctRunConfiguration.java | 4 +--- .../execution/configurations/UctSettingsEditor.java | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/com/magento/idea/magento2uct/execution/configurations/UctRunConfiguration.java b/src/com/magento/idea/magento2uct/execution/configurations/UctRunConfiguration.java index 8b5ef5e6a..91cb841eb 100644 --- a/src/com/magento/idea/magento2uct/execution/configurations/UctRunConfiguration.java +++ b/src/com/magento/idea/magento2uct/execution/configurations/UctRunConfiguration.java @@ -263,14 +263,12 @@ public boolean isNewlyCreated() { commandSettingsBuilder.addArgument("--coming-version=" + getComingVersion()); } - commandSettingsBuilder.addArgument(getProjectRoot()); - final GeneralCommandLine commandLine = commandSettingsBuilder.createGeneralCommandLine(); if (!getModulePath().isEmpty()) { if (UctModulePathValidatorUtil.validate(getModulePath())) { - commandLine.addParameter("--module-path=".concat(getModulePath())); + commandLine.addParameter(getModulePath()); } else { throw new ExecutionException("The path to analyse is not valid"); } diff --git a/src/com/magento/idea/magento2uct/execution/configurations/UctSettingsEditor.java b/src/com/magento/idea/magento2uct/execution/configurations/UctSettingsEditor.java index 9d2ffef88..ff71c219e 100644 --- a/src/com/magento/idea/magento2uct/execution/configurations/UctSettingsEditor.java +++ b/src/com/magento/idea/magento2uct/execution/configurations/UctSettingsEditor.java @@ -163,7 +163,7 @@ protected void applyEditorTo(final @NotNull UctRunConfiguration uctRunConfigurat uctRunConfiguration.setProjectRoot(projectRoot.getComponent().getText()); uctRunConfiguration.setModulePath(modulePath.getComponent().getText()); - ComboBoxItemData selectedComingVersion + final ComboBoxItemData selectedComingVersion = getCorrectedSelectedItem(comingVersion.getSelectedItem()); if (selectedComingVersion == null) { @@ -385,7 +385,7 @@ private void validateComingVersionField(final ComboBoxItemData selectedItem) { if (selectedItem != null && selectedItem.getKey().isEmpty()) { comingVersionError.setText("Please, specify target version"); - } else if (!matcher.find()) { + } else if (!matcher.find()) { // NOPMD comingVersionError.setText("Please, correct target version"); } else { comingVersionError.setText("");