26
26
import com .magento .idea .magento2uct .execution .process .OutputWrapper ;
27
27
import com .magento .idea .magento2uct .execution .scanner .ModuleFilesScanner ;
28
28
import com .magento .idea .magento2uct .execution .scanner .ModuleScanner ;
29
+ import com .magento .idea .magento2uct .execution .scanner .ThemeFilesScanner ;
30
+ import com .magento .idea .magento2uct .execution .scanner .ThemeScanner ;
29
31
import com .magento .idea .magento2uct .execution .scanner .data .ComponentData ;
30
32
import com .magento .idea .magento2uct .execution .scanner .filter .ExcludeMagentoBundledFilter ;
31
33
import com .magento .idea .magento2uct .inspections .UctInspectionManager ;
@@ -81,6 +83,7 @@ public void processTerminated(final @NotNull ProcessEvent event) {
81
83
public void execute () {
82
84
output .write ("Upgrade compatibility tool\n " );
83
85
final PsiDirectory rootDirectory = getTargetPsiDirectory ();
86
+ final PsiDirectory additionalDirectory = getAdditionalTargetPsiDirectory ();
84
87
85
88
if (rootDirectory == null ) {
86
89
output .print (
@@ -99,6 +102,10 @@ public void execute() {
99
102
);
100
103
final ReportBuilder reportBuilder = new ReportBuilder (project );
101
104
final UctReportOutputUtil outputUtil = new UctReportOutputUtil (output );
105
+ final ThemeScanner themeScanner = new ThemeScanner (
106
+ additionalDirectory ,
107
+ new ExcludeMagentoBundledFilter ()
108
+ );
102
109
103
110
ApplicationManager .getApplication ().executeOnPooledThread (() -> {
104
111
ApplicationManager .getApplication ().runReadAction (() -> {
@@ -152,6 +159,56 @@ public void execute() {
152
159
}
153
160
}
154
161
}
162
+ for (final ComponentData themeComponentData : themeScanner ) {
163
+ if (process .isProcessTerminated ()) {
164
+ return ;
165
+ }
166
+ boolean isThemeHeaderPrinted = false ;
167
+
168
+ for (final PsiFile psiFile : new ThemeFilesScanner (themeComponentData )) {
169
+ if (!(psiFile instanceof PhpFile )) {
170
+ continue ;
171
+ }
172
+
173
+ final String filename = psiFile .getVirtualFile ().getPath ();
174
+ final UctInspectionManager inspectionManager = new UctInspectionManager (
175
+ project
176
+ );
177
+ final UctProblemsHolder fileProblemsHolder = inspectionManager .run (psiFile );
178
+
179
+ if (fileProblemsHolder == null ) {
180
+ continue ;
181
+ }
182
+
183
+ if (fileProblemsHolder .hasResults ()) {
184
+ if (!isThemeHeaderPrinted ) {
185
+ outputUtil .printModuleName (themeComponentData .getName ());
186
+ isThemeHeaderPrinted = true ;
187
+ }
188
+ outputUtil .printProblemFile (filename );
189
+ }
190
+ final List <ProblemDescriptor > problems = SortDescriptorResultsUtil .sort (
191
+ FilterDescriptorResultsUtil .filter (fileProblemsHolder )
192
+ );
193
+
194
+ for (final ProblemDescriptor descriptor : problems ) {
195
+ final SupportedIssue issue = fileProblemsHolder .getIssue (descriptor );
196
+
197
+ final String errorMessage = descriptor
198
+ .getDescriptionTemplate ()
199
+ .substring (6 )
200
+ .trim ();
201
+ summary .addToSummary (issue .getLevel ());
202
+ reportBuilder .addIssue (
203
+ descriptor .getLineNumber () + 1 ,
204
+ filename ,
205
+ errorMessage ,
206
+ issue
207
+ );
208
+ outputUtil .printIssue (descriptor , issue .getCode ());
209
+ }
210
+ }
211
+ }
155
212
summary .trackProcessFinished ();
156
213
summary .setProcessedModules (scanner .getModuleCount ());
157
214
outputUtil .printSummary (summary );
@@ -201,4 +258,25 @@ public void execute() {
201
258
202
259
return PsiManager .getInstance (project ).findDirectory (targetDirVirtualFile );
203
260
}
261
+
262
+ /**
263
+ * Get additional target psi directory.
264
+ *
265
+ * @return PsiDirectory
266
+ */
267
+ private @ Nullable PsiDirectory getAdditionalTargetPsiDirectory () {
268
+ final String additionalTargetDirPath = settingsService .getAdditionalPath ();
269
+
270
+ if (additionalTargetDirPath == null ) {
271
+ return null ;
272
+ }
273
+ final VirtualFile targetDirVirtualFile
274
+ = VfsUtil .findFile (Paths .get (additionalTargetDirPath ), false );
275
+
276
+ if (targetDirVirtualFile == null ) {
277
+ return null ;
278
+ }
279
+
280
+ return PsiManager .getInstance (project ).findDirectory (targetDirVirtualFile );
281
+ }
204
282
}
0 commit comments