package org.elixir_lang.jps.builder; import org.elixir_lang.jps.model.JpsElixirModuleType; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jps.builders.BuildTargetLoader; import org.jetbrains.jps.builders.ModuleBasedBuildTargetType; import org.jetbrains.jps.model.JpsDummyElement; import org.jetbrains.jps.model.JpsModel; import org.jetbrains.jps.model.module.JpsTypedModule; import java.util.ArrayList; import java.util.List; /** * Created by zyuyou on 15/7/10. */ public class ElixirTargetType extends ModuleBasedBuildTargetType<ElixirTarget>{ public static final ElixirTargetType PRODUCTION = new ElixirTargetType("elixir-production", false); public static final ElixirTargetType TEST = new ElixirTargetType("elixir-test", true); private final boolean myTests; private ElixirTargetType(String elixir, boolean tests){ super(elixir); myTests = tests; } @NotNull @Override public List<ElixirTarget> computeAllTargets(@NotNull JpsModel model) { List<ElixirTarget> targets = new ArrayList<ElixirTarget>(); for (JpsTypedModule<JpsDummyElement> module : model.getProject().getModules(JpsElixirModuleType.INSTANCE)){ targets.add(new ElixirTarget(this, module)); } return targets; } @NotNull @Override public BuildTargetLoader<ElixirTarget> createLoader(@NotNull final JpsModel model) { return new BuildTargetLoader<ElixirTarget>() { @Nullable @Override public ElixirTarget createTarget(@NotNull String targetId) { for (JpsTypedModule<JpsDummyElement> module : model.getProject().getModules(JpsElixirModuleType.INSTANCE)){ if(module.getName().equals(targetId)){ return new ElixirTarget(ElixirTargetType.this, module); } } return null; } }; } public boolean isTests(){ return myTests; } }