package com.intellij.openapi.externalSystem.service.settings; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.externalSystem.model.ProjectSystemId; import com.intellij.openapi.externalSystem.settings.ExternalProjectSettings; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; /** * @author Denis Zhdanov * @since 7/16/13 3:36 PM */ public interface ExternalSystemConfigLocator { ExtensionPointName<ExternalSystemConfigLocator> EP_NAME = ExtensionPointName.create("com.intellij.externalSystemConfigLocator"); @NotNull ProjectSystemId getTargetExternalSystemId(); /** * Allows to adjust target external system config file. * <p/> * Example: 'gradle' external system stores config file parent as config path and we might want to locate exact config file * given it's directory file. * * @param configPath base config file * @return config file to use (if any) */ @Nullable VirtualFile adjust(@NotNull VirtualFile configPath); /** * Returns all configuration files used by external system to build the project. * * @param externalProjectSettings external system project settings * @return external system project config files */ @NotNull List<VirtualFile> findAll(@NotNull ExternalProjectSettings externalProjectSettings); }