package com.haskforce.jps; /* * Downloaded from https://github.com/ignatov/intellij-erlang on 7 May * 2014. */ import com.haskforce.jps.model.JpsHaskellModuleType; 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; /** * Target type helpers. */ public class HaskellTargetType extends ModuleBasedBuildTargetType<HaskellTarget> { public static final HaskellTargetType PRODUCTION = new HaskellTargetType("haskell-production", false); public static final HaskellTargetType TESTS = new HaskellTargetType("haskell-tests", true); private final boolean test; public HaskellTargetType(String name, boolean inTest) { super(name); test = inTest; } @NotNull @Override public List<HaskellTarget> computeAllTargets(@NotNull JpsModel jpsModel) { List<HaskellTarget> targets = new ArrayList<HaskellTarget>(); for (JpsTypedModule<JpsDummyElement> module : jpsModel.getProject().getModules(JpsHaskellModuleType.INSTANCE)) { targets.add(new HaskellTarget(module, this)); } return targets; } @NotNull @Override public BuildTargetLoader<HaskellTarget> createLoader(@NotNull final JpsModel jpsModel) { return new BuildTargetLoader<HaskellTarget>() { @Nullable @Override public HaskellTarget createTarget(@NotNull String targetId) { for (JpsTypedModule<JpsDummyElement> module : jpsModel.getProject().getModules(JpsHaskellModuleType.INSTANCE)) { if (module.getName().equals(targetId)) { return new HaskellTarget(module, HaskellTargetType.this); } } return null; } }; } public boolean isTests() { return test; } }