{-# LANGUAGE Safe #-}
module Cli.CompileOptions (
CompileOptions(..),
CompileMode(..),
ForceMode(..),
HelpMode(..),
emptyCompileOptions,
isCompileBinary,
isCompileIncremental,
isCompileRecompile,
isCreateTemplates,
isExecuteTests,
isOnlyShowPath,
maybeDisableHelp,
) where
data CompileOptions =
CompileOptions {
coHelp :: HelpMode,
coPublicDeps :: [String],
coPrivateDeps :: [String],
coSources :: [String],
coExtraFiles :: [String],
coExtraPaths :: [String],
coExtraRequires :: [String],
coSourcePrefix :: String,
coMode :: CompileMode,
coOutputName :: String,
coForce :: ForceMode
} deriving (Show)
emptyCompileOptions :: CompileOptions
emptyCompileOptions =
CompileOptions {
coHelp = HelpUnspecified,
coPublicDeps = [],
coPrivateDeps = [],
coSources = [],
coExtraFiles = [],
coExtraPaths = [],
coExtraRequires = [],
coSourcePrefix = "",
coMode = CompileUnspecified,
coOutputName = "",
coForce = DoNotForce
}
data HelpMode = HelpNeeded | HelpNotNeeded | HelpUnspecified deriving (Eq,Show)
data ForceMode = DoNotForce | AllowRecompile | ForceRecompile | ForceAll deriving (Eq,Ord,Show)
data CompileMode =
OnlyShowPath |
CompileBinary {
cbCategory :: String,
cbFunction :: String
} |
ExecuteTests {
etInclude :: [String]
} |
CompileIncremental |
CompileRecompile |
CreateTemplates |
CompileUnspecified
deriving (Eq,Read,Show)
isOnlyShowPath OnlyShowPath = True
isOnlyShowPath _ = False
isCompileBinary (CompileBinary _ _) = True
isCompileBinary _ = False
isCompileIncremental CompileIncremental = True
isCompileIncremental _ = False
isCompileRecompile CompileRecompile = True
isCompileRecompile _ = False
isExecuteTests (ExecuteTests _) = True
isExecuteTests _ = False
isCreateTemplates CreateTemplates = True
isCreateTemplates _ = False
maybeDisableHelp HelpUnspecified = HelpNotNeeded
maybeDisableHelp h = h