Skip to content

Commit 7814a3b

Browse files
author
Vitaliy
authored
Merge branch '2.0.0-develop' into 272-fix-error-create-module
2 parents c94e6d0 + 0f34ec7 commit 7814a3b

File tree

15 files changed

+289
-64
lines changed

15 files changed

+289
-64
lines changed

.github/workflows/gradle.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ jobs:
7474
- name: Grant execute permission for gradlew
7575
run: chmod +x gradlew
7676
- id: file_changes
77-
uses: trilom/[email protected].3
77+
uses: trilom/[email protected].4
7878
- name: Run Code Style Check
7979
run: ./gradlew checkstyleCI -i --no-daemon
8080
env:

build.gradle

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ apply plugin: 'org.jetbrains.intellij'
2020
apply plugin: 'java'
2121
apply plugin: 'groovy'
2222

23-
gradle.startParameter.showStacktrace = org.gradle.api.logging.configuration.ShowStacktrace.ALWAYS_FULL
24-
2523
def phpPluginVersion = System.getProperty("phpPluginVersion", "201.7223.91")
2624
def ideaVersion = System.getProperty("ideaVersion", "2020.1.1")
2725
def javaVersion = 1.8
Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,24 @@
11
<?xml version="1.0"?>
22
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
33
#if (${SEQUENCES})
4-
<module name="${PACKAGE}_${MODULE_NAME}">
5-
<sequence>
6-
${SEQUENCES}
7-
</sequence>
8-
</module>
4+
#if (${SETUP_VERSION})
5+
<module name="${PACKAGE}_${MODULE_NAME}" setup_version="${SETUP_VERSION}">
6+
<sequence>
7+
${SEQUENCES}
8+
</sequence>
9+
</module>
10+
#else
11+
<module name="${PACKAGE}_${MODULE_NAME}">
12+
<sequence>
13+
${SEQUENCES}
14+
</sequence>
15+
</module>
16+
#end
917
#else
10-
<module name="${PACKAGE}_${MODULE_NAME}" />
18+
#if (${SETUP_VERSION})
19+
<module name="${PACKAGE}_${MODULE_NAME}" setup_version="${SETUP_VERSION}"/>
20+
#else
21+
<module name="${PACKAGE}_${MODULE_NAME}"/>
22+
#end
1123
#end
1224
</config>

src/com/magento/idea/magento2plugin/actions/generation/data/ModuleXmlData.java

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,24 +2,38 @@
22
* Copyright © Magento, Inc. All rights reserved.
33
* See COPYING.txt for license details.
44
*/
5+
56
package com.magento.idea.magento2plugin.actions.generation.data;
67

78
import com.intellij.psi.PsiDirectory;
89

10+
@SuppressWarnings({"PMD.DataClass"})
911
public class ModuleXmlData {
1012
private final String packageName;
1113
private final String moduleName;
12-
private PsiDirectory baseDir;
13-
private boolean createModuleDirs;
14+
private final String setupVersion;
15+
private final PsiDirectory baseDir;
16+
private final boolean createModuleDirs;
1417

18+
/**
19+
* Constructor ModuleXmlData.
20+
*
21+
* @param packageName Package name
22+
* @param moduleName Module name
23+
* @param setupVersion Setup version
24+
* @param baseDir Base directory
25+
* @param createModuleDirs Create module Dirs
26+
*/
1527
public ModuleXmlData(
16-
String packageName,
17-
String moduleName,
18-
PsiDirectory baseDir,
19-
boolean createModuleDirs
28+
final String packageName,
29+
final String moduleName,
30+
final String setupVersion,
31+
final PsiDirectory baseDir,
32+
final boolean createModuleDirs
2033
) {
2134
this.packageName = packageName;
2235
this.moduleName = moduleName;
36+
this.setupVersion = setupVersion;
2337
this.baseDir = baseDir;
2438
this.createModuleDirs = createModuleDirs;
2539
}
@@ -36,7 +50,11 @@ public PsiDirectory getBaseDir() {
3650
return this.baseDir;
3751
}
3852

39-
public boolean getCreateModuleDirs() {
53+
public String getSetupVersion() {
54+
return this.setupVersion;
55+
}
56+
57+
public boolean isCreateModuleDirs() {
4058
return this.createModuleDirs;
4159
}
4260
}

src/com/magento/idea/magento2plugin/actions/generation/dialog/NewModuleDialog.java

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.magento.idea.magento2plugin.magento.packages.Package;
2323
import com.magento.idea.magento2plugin.project.Settings;
2424
import com.magento.idea.magento2plugin.util.CamelCaseToHyphen;
25+
import com.magento.idea.magento2plugin.util.magento.MagentoVersionUtil;
2526
import java.awt.event.ActionEvent;
2627
import java.awt.event.ActionListener;
2728
import java.awt.event.KeyEvent;
@@ -72,6 +73,8 @@ public class NewModuleDialog extends AbstractDialog implements ListSelectionList
7273
private JLabel moduleDescriptionLabel;//NOPMD
7374
private JLabel moduleNameLabel;//NOPMD
7475

76+
private static final String MAGENTO_BEFORE_DECLARATIVE_SCHEMA_VERSION = "2.2.11";
77+
7578
/**
7679
* Constructor.
7780
*
@@ -187,6 +190,7 @@ private void generateModuleXml() {
187190
new ModuleXmlGenerator(new ModuleXmlData(
188191
getPackageName(),
189192
getModuleName(),
193+
getSetupVersion(),
190194
getBaseDir(),
191195
true
192196
), project).generate(NewModuleAction.actionName, true);
@@ -224,10 +228,39 @@ public String getModuleDescription() {
224228
return this.moduleDescription.getText().trim();
225229
}
226230

231+
/**
232+
* get Module Version.
233+
*
234+
* @return string
235+
*/
227236
public String getModuleVersion() {
228237
return this.moduleVersion.getText().trim();
229238
}
230239

240+
/**
241+
* Get module version.
242+
*
243+
* @return string|null
244+
*/
245+
public String getSetupVersion() {
246+
final String magentoVersion = getMagentoVersion();
247+
if (!MagentoVersionUtil.compare(
248+
magentoVersion, MAGENTO_BEFORE_DECLARATIVE_SCHEMA_VERSION)
249+
) {
250+
return this.moduleVersion.getText().trim();
251+
}
252+
return null;
253+
}
254+
255+
/**
256+
* Get magento version.
257+
*
258+
* @return string
259+
*/
260+
public String getMagentoVersion() {
261+
return this.getSettings().magentoVersion;
262+
}
263+
231264
/**
232265
* Getter for module license.
233266
*
@@ -327,4 +360,14 @@ public void valueChanged(final ListSelectionEvent listSelectionEvent) {
327360
handleModuleCustomLicenseInputVisibility();
328361
handleModuleSelectedDependencies();
329362
}
363+
364+
/**
365+
* Get settings.
366+
*
367+
* @return Settings
368+
*/
369+
public Settings getSettings() {
370+
return Settings.getInstance(project);
371+
}
372+
330373
}

src/com/magento/idea/magento2plugin/actions/generation/generator/ModuleXmlGenerator.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public ModuleXmlGenerator(
4141

4242
@Override
4343
public PsiFile generate(final String actionName) {
44-
if (moduleXmlData.getCreateModuleDirs()) {
44+
if (moduleXmlData.isCreateModuleDirs()) {
4545
final ModuleDirectoriesData moduleDirectoriesData = directoryGenerator
4646
.createOrFindModuleDirectories(
4747
moduleXmlData.getPackageName(),
@@ -67,8 +67,12 @@ public PsiFile generate(final String actionName) {
6767
);
6868
}
6969

70+
@Override
7071
protected void fillAttributes(final Properties attributes) {
7172
attributes.setProperty("PACKAGE", moduleXmlData.getPackageName());
7273
attributes.setProperty("MODULE_NAME", moduleXmlData.getModuleName());
74+
if (moduleXmlData.getSetupVersion() != null) {
75+
attributes.setProperty("SETUP_VERSION", moduleXmlData.getSetupVersion());
76+
}
7377
}
7478
}

src/com/magento/idea/magento2plugin/generation/php/MagentoModuleGenerator.java

Lines changed: 80 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
* Copyright © Magento, Inc. All rights reserved.
33
* See COPYING.txt for license details.
44
*/
5+
56
package com.magento.idea.magento2plugin.generation.php;
67

78
import com.intellij.ide.util.projectWizard.WebProjectTemplate;
@@ -15,7 +16,6 @@
1516
import com.intellij.psi.PsiFile;
1617
import com.intellij.psi.PsiManager;
1718
import com.intellij.util.PlatformUtils;
18-
import javax.swing.Icon;
1919
import com.magento.idea.magento2plugin.MagentoIcons;
2020
import com.magento.idea.magento2plugin.actions.generation.data.ModuleComposerJsonData;
2121
import com.magento.idea.magento2plugin.actions.generation.data.ModuleRegistrationPhpData;
@@ -25,61 +25,95 @@
2525
import com.magento.idea.magento2plugin.actions.generation.generator.ModuleXmlGenerator;
2626
import com.magento.idea.magento2plugin.init.ConfigurationManager;
2727
import com.magento.idea.magento2plugin.project.Settings;
28+
import java.util.ArrayList;
29+
import javax.swing.Icon;
2830
import org.jetbrains.annotations.Nls;
2931
import org.jetbrains.annotations.NotNull;
3032
import org.jetbrains.annotations.Nullable;
31-
import java.util.ArrayList;
3233

33-
public class MagentoModuleGenerator extends WebProjectTemplate<MagentoProjectGeneratorSettings> {
34-
public static String ACTION_NAME = "Magento 2 Module";
3534

36-
public MagentoModuleGenerator() {
37-
}
35+
public class MagentoModuleGenerator extends WebProjectTemplate<MagentoProjectGeneratorSettings> {
36+
public static String actionName = "Magento 2 Module";
3837

3938
@Nls
4039
@NotNull
40+
@Override
4141
public String getName() {
42-
return ACTION_NAME;
42+
return actionName;
4343
}
4444

45+
@Override
4546
public String getDescription() {
4647
return "Create a Magento 2 Module";
4748
}
4849

50+
@Override
4951
public Icon getIcon() {
5052
return MagentoIcons.MODULE;
5153
}
5254

5355
@NotNull
56+
@Override
5457
public ProjectGeneratorPeer<MagentoProjectGeneratorSettings> createPeer() {
5558
return new MagentoProjectPeer();
5659
}
5760

61+
@Override
5862
public boolean isPrimaryGenerator() {
5963
return PlatformUtils.isPhpStorm();
6064
}
6165

62-
public void generateProject(@NotNull Project project, @NotNull VirtualFile baseDir, @NotNull MagentoProjectGeneratorSettings settings, @NotNull Module module) {
63-
Settings dataService = Settings.getInstance(project);
66+
/**
67+
* Generate project.
68+
*
69+
* @param project Project
70+
* @param baseDir Base directory
71+
* @param settings Settings
72+
* @param module Module
73+
*/
74+
@Override
75+
public void generateProject(
76+
@NotNull final Project project,
77+
@NotNull final VirtualFile baseDir,
78+
@NotNull final MagentoProjectGeneratorSettings settings,
79+
@NotNull final Module module
80+
) {
81+
final Settings dataService = Settings.getInstance(project);
6482
dataService.setState(settings.getMagentoState());
6583

66-
Runnable generate = () -> {
84+
final Runnable generate = () -> {
6785
ApplicationManager.getApplication().runWriteAction(() -> {
68-
PsiDirectory baseDirElement = PsiManager.getInstance(project).findDirectory(baseDir);
86+
PsiDirectory baseDirElement = PsiManager
87+
.getInstance(project)
88+
.findDirectory(baseDir);
6989
if (baseDirElement == null) {
7090
return;
7191
}
7292

7393
generateComposerJson(project, baseDirElement, settings);
7494
generateRegistrationPhp(project, baseDirElement, settings);
7595
generateModuleXml(project, baseDirElement, settings);
76-
ConfigurationManager.getInstance().refreshIncludePaths(dataService.getState(), project);
96+
ConfigurationManager
97+
.getInstance()
98+
.refreshIncludePaths(dataService.getState(), project);
7799
});
78100
};
79101
StartupManager.getInstance(project).runWhenProjectIsInitialized(generate);
80102
}
81103

82-
private PsiFile generateComposerJson(@NotNull Project project, @NotNull PsiDirectory baseDir, @NotNull MagentoProjectGeneratorSettings settings) {
104+
/**
105+
* Generate composer json.
106+
*
107+
* @param project Project
108+
* @param baseDir Base directory
109+
* @param settings Settings
110+
* @return
111+
*/
112+
private PsiFile generateComposerJson(
113+
@NotNull final Project project,
114+
@NotNull final PsiDirectory baseDir,
115+
@NotNull final MagentoProjectGeneratorSettings settings
116+
) {
83117
return new ModuleComposerJsonGenerator(new ModuleComposerJsonData(
84118
settings.getPackageName(),
85119
settings.getModuleName(),
@@ -90,30 +124,56 @@ private PsiFile generateComposerJson(@NotNull Project project, @NotNull PsiDirec
90124
settings.getModuleLicenses(),
91125
new ArrayList<>(),
92126
false
93-
), project).generate(ACTION_NAME);
127+
), project).generate(actionName);
94128
}
95129

96-
private PsiFile generateRegistrationPhp(@NotNull Project project, @NotNull PsiDirectory baseDir, @NotNull MagentoProjectGeneratorSettings settings) {
130+
/**
131+
* Generate registration php.
132+
*
133+
* @param project Project
134+
* @param baseDir Base directory
135+
* @param settings Settings
136+
* @return
137+
*/
138+
private PsiFile generateRegistrationPhp(
139+
@NotNull final Project project,
140+
@NotNull final PsiDirectory baseDir,
141+
@NotNull final MagentoProjectGeneratorSettings settings
142+
) {
97143
return new ModuleRegistrationPhpGenerator(new ModuleRegistrationPhpData(
98144
settings.getPackageName(),
99145
settings.getModuleName(),
100146
baseDir,
101147
false
102-
), project).generate(ACTION_NAME);
148+
), project).generate(actionName);
103149
}
104150

105-
private void generateModuleXml(@NotNull Project project, @NotNull PsiDirectory baseDir, @NotNull MagentoProjectGeneratorSettings settings) {
106-
ModuleXmlData moduleXmlData = new ModuleXmlData(
151+
/**
152+
* Generate module xml.
153+
*
154+
* @param project Project
155+
* @param baseDir Base directory
156+
* @param settings Settings
157+
*/
158+
private void generateModuleXml(
159+
@NotNull final Project project,
160+
@NotNull final PsiDirectory baseDir,
161+
@NotNull final MagentoProjectGeneratorSettings settings
162+
) {
163+
final ModuleXmlData moduleXmlData = new ModuleXmlData(
107164
settings.getPackageName(),
108165
settings.getModuleName(),
166+
settings.getModuleVersion(),
109167
baseDir,
110168
false
111169
);
112-
ModuleXmlGenerator moduleXmlGenerator = new ModuleXmlGenerator(moduleXmlData, project);
113-
moduleXmlGenerator.generate(ACTION_NAME, true);
170+
final ModuleXmlGenerator moduleXmlGenerator =
171+
new ModuleXmlGenerator(moduleXmlData, project);
172+
moduleXmlGenerator.generate(actionName, true);
114173
}
115174

116175
@Nullable
176+
@Override
117177
public String getHelpId() {
118178
return null;
119179
}

0 commit comments

Comments
 (0)