package com.prezi.haxe.gradle;
import com.google.common.base.Function;
import com.google.common.collect.Collections2;
import groovy.lang.Closure;
import org.gradle.api.Action;
import org.gradle.api.NamedDomainObjectContainer;
import org.gradle.api.NamedDomainObjectFactory;
import org.gradle.api.Project;
import org.gradle.util.ConfigureUtil;
import java.io.Serializable;
public class DefaultTargetPlatform extends DefaultHaxeCompilerParameters implements TargetPlatform {
private final String name;
private final NamedDomainObjectContainer<Flavor> flavors;
public DefaultTargetPlatform(String name, Project project) {
this.name = name;
this.flavors = project.container(Flavor.class, new FlavorNamedDomainObjectFactory());
}
@Override
public String getName() {
return name;
}
@Override
public NamedDomainObjectContainer<Flavor> getFlavors() {
return flavors;
}
@Override
public void flavors(Action<? super NamedDomainObjectContainer<Flavor>> action) {
action.execute(getFlavors());
}
@Override
public void flavors(Closure closure) {
ConfigureUtil.configure(closure, getFlavors());
}
@Override
public String toString() {
return "platform: " + name + " " + Collections2.transform(flavors, new Function<Flavor, String>() {
@Override
public String apply(Flavor flavor) {
return flavor.getName();
}
});
}
private static class FlavorNamedDomainObjectFactory implements NamedDomainObjectFactory<Flavor>, Serializable {
@Override
public Flavor create(String name) {
return new DefaultFlavor(name);
}
}
}