module Fay.Compiler.Config where
import Fay.Types
import Data.Default
import Data.Maybe
import Language.Haskell.Exts.Annotated (ModuleName (..))
configDirectoryIncludePaths :: CompileConfig -> [FilePath]
configDirectoryIncludePaths = map snd . configDirectoryIncludes
nonPackageConfigDirectoryIncludePaths :: CompileConfig -> [FilePath]
nonPackageConfigDirectoryIncludePaths = map snd . filter (isJust . fst) . configDirectoryIncludes
addConfigDirectoryInclude :: Maybe String -> FilePath -> CompileConfig -> CompileConfig
addConfigDirectoryInclude pkg fp cfg = cfg { configDirectoryIncludes = (pkg, fp) : configDirectoryIncludes cfg }
addConfigDirectoryIncludes :: [(Maybe String,FilePath)] -> CompileConfig -> CompileConfig
addConfigDirectoryIncludes pkgFps cfg = foldl (\c (pkg,fp) -> addConfigDirectoryInclude pkg fp c) cfg pkgFps
addConfigDirectoryIncludePaths :: [FilePath] -> CompileConfig -> CompileConfig
addConfigDirectoryIncludePaths fps cfg = foldl (flip (addConfigDirectoryInclude Nothing)) cfg fps
addConfigPackage :: String -> CompileConfig -> CompileConfig
addConfigPackage pkg cfg = cfg { configPackages = pkg : configPackages cfg }
addConfigPackages :: [String] -> CompileConfig -> CompileConfig
addConfigPackages fps cfg = foldl (flip addConfigPackage) cfg fps
shouldExportStrictWrapper :: ModuleName a -> CompileConfig -> Bool
shouldExportStrictWrapper (ModuleName _ m) cs = m `elem` configStrict cs
instance Default CompileConfig where
def = addConfigPackage "fay-base"
CompileConfig
{ configOptimize = False
, configFlattenApps = False
, configExportRuntime = True
, configExportStdlib = True
, configExportStdlibOnly = False
, configDirectoryIncludes = []
, configPrettyPrint = False
, configHtmlWrapper = False
, configHtmlJSLibs = []
, configLibrary = False
, configWarn = True
, configFilePath = Nothing
, configTypecheck = True
, configWall = False
, configGClosure = False
, configPackageConf = Nothing
, configPackages = []
, configBasePath = Nothing
, configStrict = []
, configTypecheckOnly = False
, configRuntimePath = Nothing
, configSourceMap = False
}