module Development.Shake.CLI
( options
, shakeWithArgs
) where
import Development.Shake as Shake
import System.Console.CmdArgs as CA
options :: ShakeOptions
options
= ShakeOptions { shakeFiles = ".shake" &= help "shake journal/db path"
, shakeThreads = 1 &= help "threads to use for build" &= name "j" &= typ "NUM"
, shakeVersion = 1 &= ignore
, shakeStaunch = False &= help "keep going after error" &= name "k"
, shakeReport = Nothing &= help "dump profiling report" &= name "prof" &= typFile
, shakeLint = False &= help "run build system linter" &= name "lint"
, shakeVerbosity = Shake.Normal &= ignore
}
&= verbosity
&= helpArg [explicit, name "h", name "help", groupname "Common flags"]
shakeWithArgs :: Rules () -> IO ()
shakeWithArgs r = do
x <- cmdArgs options
v <- CA.getVerbosity
case v of
CA.Normal -> shake x r
CA.Quiet -> shake (x { shakeVerbosity = Shake.Quiet }) r
CA.Loud -> shake (x { shakeVerbosity = Shake.Loud }) r