package com.haskforce.jps; import com.haskforce.jps.stack.StackBuilder; import com.haskforce.utils.JavaVersionUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.jps.incremental.BuilderService; import org.jetbrains.jps.incremental.ModuleLevelBuilder; import org.jetbrains.jps.incremental.TargetBuilder; import java.util.Arrays; import java.util.Collections; import java.util.List; /** * Main entry for the external builder interface. */ public class HaskForceBuilder extends BuilderService { @NotNull @Override public List<? extends ModuleLevelBuilder> createModuleLevelBuilders() { // See: https://github.com/carymrobbins/intellij-haskforce/issues/278 // When we are compiling a Haskell project, the JDK should be at least Java 8. // Only Java projects will use something older. if (!JavaVersionUtil.isAtLeastJava8()) return Collections.emptyList(); return Collections.singletonList(new CabalBuilder()); } @NotNull @Override public List<? extends TargetBuilder<?, ?>> createBuilders() { return Collections.singletonList(new StackBuilder()); } @NotNull @Override public List<HaskellTargetType> getTargetTypes() { return Arrays.asList(HaskellTargetType.PRODUCTION, HaskellTargetType.TESTS); } }