package org.implab.gradle.variants.artifacts;

import java.util.Optional;

import org.gradle.api.Action;
import org.implab.gradle.variants.core.Variant;
import org.implab.gradle.variants.core.VariantsView;

/**
 * Контекст работы с вариантами публикации, становится доступным после
 * финализации модели вариантов. Фактически является живой моделью
 */
public interface VariantArtifactsContext {

    /**
     * Зафиксированное представление о вариантах на основе которого адаптеры могут
     * конфигурировать артефакты и исходящие конфигурации
     */
    VariantsView getVariants();

    void all(Action<? super VariantArtifactsConfiguration> action);

    Optional<VariantArtifactsConfiguration> findArtifacts(Variant variant);

    VariantArtifactsConfiguration requireArtifacts(Variant variant);

}
