private void findModuleRoots()

in src/com/intellij/idea/plugin/hybris/project/descriptors/DefaultHybrisProjectDescriptor.java [648:731]


    private void findModuleRoots(
        @NotNull final Map<DIRECTORY_TYPE, Set<File>> moduleRootMap,
        final Set<File> excludedFromScanning,
        final boolean acceptOnlyHybrisModules,
        @NotNull final File rootProjectDirectory,
        @Nullable final TaskProgressProcessor<File> progressListenerProcessor
    ) throws InterruptedException, IOException {
        if (null != progressListenerProcessor) {
            if (!progressListenerProcessor.shouldContinue(rootProjectDirectory)) {
                LOG.error("Modules scanning has been interrupted.");
                throw new InterruptedException("Modules scanning has been interrupted.");
            }
        }

        if (rootProjectDirectory.isHidden()) {
            LOG.debug("Skipping hidden directory: ", rootProjectDirectory);
            return;
        }
        if (excludedFromScanning.contains(rootProjectDirectory)) {
            LOG.debug("Skipping excluded directory: ", rootProjectDirectory);
            return;
        }

        final HybrisProjectService hybrisProjectService = ApplicationManager.getApplication().getService(HybrisProjectService.class);

        if (hybrisProjectService.hasVCS(rootProjectDirectory)) {
            LOG.info("Detected version control service " + rootProjectDirectory.getAbsolutePath());
            vcs.add(rootProjectDirectory.getCanonicalFile());
        }

        if (hybrisProjectService.isHybrisModule(rootProjectDirectory)) {
            LOG.info("Detected hybris module " + rootProjectDirectory.getAbsolutePath());
            moduleRootMap.get(HYBRIS).add(rootProjectDirectory);
            return;
        }
        if (hybrisProjectService.isConfigModule(rootProjectDirectory)) {
            LOG.info("Detected config module " + rootProjectDirectory.getAbsolutePath());
            moduleRootMap.get(HYBRIS).add(rootProjectDirectory);
            return;
        }

        if (!acceptOnlyHybrisModules) {
            if (!rootProjectDirectory.getAbsolutePath().endsWith(HybrisConstants.PLATFORM_MODULE)
                && !FileUtil.filesEqual(rootProjectDirectory, rootDirectory)
                && (hybrisProjectService.isGradleModule(rootProjectDirectory) || hybrisProjectService.isGradleKtsModule(rootProjectDirectory))
                && !hybrisProjectService.isCCv2Module(rootProjectDirectory)) {
                LOG.info("Detected gradle module " + rootProjectDirectory.getAbsolutePath());
                moduleRootMap.get(NON_HYBRIS).add(rootProjectDirectory);
//                return;
            }

            if (hybrisProjectService.isMavenModule(rootProjectDirectory)
                && !FileUtil.filesEqual(rootProjectDirectory, rootDirectory)
                && !hybrisProjectService.isCCv2Module(rootProjectDirectory)
            ) {
                LOG.info("Detected maven module " + rootProjectDirectory.getAbsolutePath());
                moduleRootMap.get(NON_HYBRIS).add(rootProjectDirectory);
//                return;
            }

            if (hybrisProjectService.isPlatformModule(rootProjectDirectory)) {
                LOG.info("Detected platform module " + rootProjectDirectory.getAbsolutePath());
                moduleRootMap.get(HYBRIS).add(rootProjectDirectory);
            } else if (hybrisProjectService.isEclipseModule(rootProjectDirectory)
                && !FileUtil.filesEqual(rootProjectDirectory, rootDirectory)
            ) {
                LOG.info("Detected eclipse module " + rootProjectDirectory.getAbsolutePath());
                moduleRootMap.get(NON_HYBRIS).add(rootProjectDirectory);
//                return;
            }

            if (hybrisProjectService.isCCv2Module(rootProjectDirectory)) {
                LOG.info("Detected CCv2 module " + rootProjectDirectory.getAbsolutePath());
                moduleRootMap.get(CCV2).add(rootProjectDirectory);
                final var name = rootProjectDirectory.getName();
                if (name.endsWith(HybrisConstants.CCV2_JS_STOREFRONT_NAME) || name.endsWith(HybrisConstants.CCV2_DATAHUB_NAME)) {
                    // faster import: no need to process sub-folders of the CCv2 js-storefront and datahub directories
                    return;
                }
            }
        }

        scanForSubdirectories(moduleRootMap, excludedFromScanning, acceptOnlyHybrisModules, rootProjectDirectory.toPath(), progressListenerProcessor);
    }