{-# LANGUAGE CPP #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TemplateHaskell #-}
module Stack.Constants
(buildPlanDir
,buildPlanCacheDir
,haskellModuleExts
,stackDotYaml
,stackWorkEnvVar
,stackRootEnvVar
,stackRootOptionName
,deprecatedStackRootOptionName
,inContainerEnvVar
,inNixShellEnvVar
,stackProgName
,stackProgNameUpper
,wiredInPackages
,ghcjsBootPackages
,cabalPackageName
,implicitGlobalProjectDirDeprecated
,implicitGlobalProjectDir
,defaultUserConfigPathDeprecated
,defaultUserConfigPath
,defaultGlobalConfigPathDeprecated
,defaultGlobalConfigPath
,platformVariantEnvVar
,compilerOptionsCabalFlag
,ghcColorForceFlag
,minTerminalWidth
,maxTerminalWidth
,defaultTerminalWidth
,osIsWindows
)
where
import Data.Char (toUpper)
import qualified Data.HashSet as HashSet
import Path as FL
import Stack.Prelude
import Stack.Types.Compiler
import Stack.Types.PackageName
haskellModuleExts :: [Text]
haskellModuleExts = haskellFileExts ++ haskellPreprocessorExts
haskellFileExts :: [Text]
haskellFileExts = ["hs", "hsc", "lhs"]
haskellPreprocessorExts :: [Text]
haskellPreprocessorExts = ["gc", "chs", "hsc", "x", "y", "ly", "cpphs"]
stackProgNameUpper :: String
stackProgNameUpper = map toUpper stackProgName
stackProgName :: String
stackProgName = "stack"
stackDotYaml :: Path Rel File
stackDotYaml = $(mkRelFile "stack.yaml")
stackWorkEnvVar :: String
stackWorkEnvVar = "STACK_WORK"
stackRootEnvVar :: String
stackRootEnvVar = "STACK_ROOT"
stackRootOptionName :: String
stackRootOptionName = "stack-root"
deprecatedStackRootOptionName :: String
deprecatedStackRootOptionName = "global-stack-root"
inContainerEnvVar :: String
inContainerEnvVar = stackProgNameUpper ++ "_IN_CONTAINER"
inNixShellEnvVar :: String
inNixShellEnvVar = map toUpper stackProgName ++ "_IN_NIX_SHELL"
wiredInPackages :: HashSet PackageName
wiredInPackages =
maybe (error "Parse error in wiredInPackages") HashSet.fromList mparsed
where
mparsed = mapM parsePackageName
[ "ghc-prim"
, "integer-gmp"
, "integer-simple"
, "base"
, "rts"
, "template-haskell"
, "dph-seq"
, "dph-par"
, "ghc"
, "interactive"
]
ghcjsBootPackages :: HashSet PackageName
ghcjsBootPackages =
maybe (error "Parse error in ghcjsBootPackages") HashSet.fromList mparsed
where
mparsed = mapM parsePackageName
[ "array"
, "base"
, "binary"
, "bytestring"
, "containers"
, "deepseq"
, "integer-gmp"
, "pretty"
, "primitive"
, "integer-gmp"
, "pretty"
, "primitive"
, "template-haskell"
, "transformers"
, "directory"
, "filepath"
, "old-locale"
, "process"
, "time"
, "async"
, "aeson"
, "attoparsec"
, "case-insensitive"
, "dlist"
, "extensible-exceptions"
, "hashable"
, "mtl"
, "old-time"
, "parallel"
, "scientific"
, "stm"
, "syb"
, "text"
, "unordered-containers"
, "vector"
]
cabalPackageName :: PackageName
cabalPackageName =
$(mkPackageName "Cabal")
implicitGlobalProjectDirDeprecated :: Path Abs Dir
-> Path Abs Dir
implicitGlobalProjectDirDeprecated p =
p </>
$(mkRelDir "global")
implicitGlobalProjectDir :: Path Abs Dir
-> Path Abs Dir
implicitGlobalProjectDir p =
p </>
$(mkRelDir "global-project")
defaultUserConfigPathDeprecated :: Path Abs Dir -> Path Abs File
defaultUserConfigPathDeprecated = (</> $(mkRelFile "stack.yaml"))
defaultUserConfigPath :: Path Abs Dir -> Path Abs File
defaultUserConfigPath = (</> $(mkRelFile "config.yaml"))
defaultGlobalConfigPathDeprecated :: Maybe (Path Abs File)
defaultGlobalConfigPathDeprecated = parseAbsFile "/etc/stack/config"
defaultGlobalConfigPath :: Maybe (Path Abs File)
defaultGlobalConfigPath = parseAbsFile "/etc/stack/config.yaml"
buildPlanDir :: Path Abs Dir
-> Path Abs Dir
buildPlanDir = (</> $(mkRelDir "build-plan"))
buildPlanCacheDir
:: Path Abs Dir
-> Path Abs Dir
buildPlanCacheDir = (</> $(mkRelDir "build-plan-cache"))
platformVariantEnvVar :: String
platformVariantEnvVar = stackProgNameUpper ++ "_PLATFORM_VARIANT"
compilerOptionsCabalFlag :: WhichCompiler -> String
compilerOptionsCabalFlag Ghc = "--ghc-options"
compilerOptionsCabalFlag Ghcjs = "--ghcjs-options"
ghcColorForceFlag :: String
ghcColorForceFlag = "-fdiagnostics-color=always"
minTerminalWidth :: Int
minTerminalWidth = 40
maxTerminalWidth :: Int
maxTerminalWidth = 200
defaultTerminalWidth :: Int
defaultTerminalWidth = 100
osIsWindows :: Bool
osIsWindows =
#ifdef WINDOWS
True
#else
False
#endif