package org.jfrog.hudson.util.plugins;
import hudson.matrix.Combination;
import hudson.matrix.MatrixConfiguration;
import hudson.model.AbstractBuild;
import hudson.model.BuildListener;
import hudson.model.Result;
import hudson.model.Run;
import org.apache.commons.lang.StringUtils;
import org.jfrog.build.extractor.clientConfiguration.ArtifactoryClientConfiguration;
import java.util.Map;
/**
* @author Lior Hasson
*/
public class MultiConfigurationUtils {
public static void validateCombinationFilter(AbstractBuild build, BuildListener listener, String combFilter) {
if (StringUtils.isBlank(combFilter)) {
String error = "The \"Combination Matches\" field is mandatory. It cannot be empty.";
listener.getLogger().println(error);
build.setResult(Result.FAILURE);
throw new IllegalArgumentException(error);
}
}
public static boolean isfiltrated(final AbstractBuild build, String combinationFilter) {
//Empty combination consider as filter all
if (StringUtils.isEmpty(combinationFilter))
return true;
if (build.getProject() instanceof MatrixConfiguration) {
MatrixConfiguration matrixConf = ((MatrixConfiguration) build.getProject());
return !matrixConf.getCombination().
evalGroovyExpression(matrixConf.getParent().getAxes(), combinationFilter);
}
return false;
}
public static void addMatrixCombination(Run<?, ?> build, ArtifactoryClientConfiguration configuration) {
if (build.getParent() instanceof MatrixConfiguration) {
Combination combination = ((MatrixConfiguration) build.getParent()).getCombination();
for (Map.Entry<String, String> entries : combination.entrySet()) {
configuration.info.addRunParameters(entries.getKey(), entries.getValue());
}
}
}
}