package com.haskforce.jps.model; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.xmlb.annotations.AbstractCollection; import com.intellij.util.xmlb.annotations.Tag; import java.util.List; /** * Serialization object for communicating build settings with the build server. */ public class HaskellBuildOptions { public static final boolean DEFAULT_USE_CABAL = false; public static final boolean DEFAULT_USE_CABAL_SANDBOX = false; public static final boolean DEFAULT_USE_PROFILING_BUILD = false; public static final String DEFAULT_GHC_PATH = ""; public static final String DEFAULT_CABAL_PATH = ""; public static final String DEFAULT_CABAL_FLAGS = ""; public static final boolean DEFAULT_INSTALL_CABAL_DEPENDENCIES = false; public static final boolean DEFAULT_ENABLE_TESTS = false; public static final boolean DEFAULT_USE_STACK = false; public static final String DEFAULT_STACK_FILE = "stack.yaml"; public HaskellBuildOptions() { } public HaskellBuildOptions(HaskellBuildOptions options) { myUseCabal = options.myUseCabal; myUseCabalSandbox = options.myUseCabalSandbox; myProfilingBuild = options.myProfilingBuild; myGhcPath = options.myGhcPath; myCabalPath = options.myCabalPath; myCabalFlags = options.myCabalFlags; myInstallCabalDependencies = options.myInstallCabalDependencies; } @Tag("useCabal") public boolean myUseCabal = DEFAULT_USE_CABAL; @Tag("useCabalSandbox") public boolean myUseCabalSandbox = DEFAULT_USE_CABAL_SANDBOX; @Tag("useProfilingBuild") public boolean myProfilingBuild = DEFAULT_USE_PROFILING_BUILD; @Tag("ghcPath") public String myGhcPath = DEFAULT_GHC_PATH; @Tag("cabalPath") public String myCabalPath = DEFAULT_CABAL_PATH; @Tag("cabalFlags") public String myCabalFlags = DEFAULT_CABAL_FLAGS; @Tag("cabalFiles") @AbstractCollection(surroundWithTag = false, elementTag = "cabalFile") public List<String> myCabalFiles = ContainerUtil.newArrayList(); @Tag("installDependencies") public boolean myInstallCabalDependencies = DEFAULT_INSTALL_CABAL_DEPENDENCIES; @Tag("enableTests") public boolean myEnableTests = DEFAULT_ENABLE_TESTS; @Tag("useStack") public boolean myUseStack = DEFAULT_USE_STACK; @Tag("stackPath") public String myStackPath = ""; @Tag("stackFlags") public String myStackFlags = ""; @Tag("stackFile") public String myStackFile = DEFAULT_STACK_FILE; @Override public String toString() { return "HaskellBuildOptions{" + "myUseCabal=" + myUseCabal + ", myUseCabalSandbox=" + myUseCabalSandbox + ", myProfilingBuild=" + myProfilingBuild + ", myGhcPath=" + myGhcPath + ", myCabalPath=" + myCabalPath + ", myCabalFlags=" + myCabalFlags + ", myCabalFiles=" + myCabalFiles + ", myInstallCabalDependencies=" + myInstallCabalDependencies + ", myEnableTests=" + myEnableTests + ", myUseStack=" + myUseStack + ", myStackPath=" + myStackPath + '}'; } }