package ru.adelf.idea.dotenv.util;

import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.extensions.Extensions;
import org.jetbrains.annotations.NotNull;
import ru.adelf.idea.dotenv.api.EnvironmentVariablesProvider;
import ru.adelf.idea.dotenv.api.EnvironmentVariablesUsagesProvider;

public class EnvironmentVariablesProviderUtil {
    public static final EnvironmentVariablesProvider[] PROVIDERS = getEnvVariablesProviders();

    public static final EnvironmentVariablesUsagesProvider[] USAGES_PROVIDERS = getEnvVariablesUsagesProviders();

    private static EnvironmentVariablesProvider[] getEnvVariablesProviders() {
        return getExtensions("ru.adelf.idea.dotenv.environmentVariablesProvider");
    }

    private static EnvironmentVariablesUsagesProvider[] getEnvVariablesUsagesProviders() {
        return getExtensions("ru.adelf.idea.dotenv.environmentVariablesUsagesProvider");
    }

    private static <T> T[] getExtensions(@NotNull String name) {
        ExtensionPointName<T> pointName = new ExtensionPointName<>(name);

        return Extensions.getRootArea().getExtensionPoint(pointName).getExtensions();
    }
}