{-# LANGUAGE DeriveDataTypeable #-} module HLint where import System.Console.CmdArgs data HLint = HLint {report :: [FilePath] ,hint :: [FilePath] ,color :: Bool ,ignore :: [String] ,show_ :: Bool ,test :: Bool ,cpp_define :: [String] ,cpp_include :: [String] ,files :: [String] } deriving (Data,Typeable,Show,Eq) hlint = mode $ HLint {report = def &= empty "report.html" & typFile & text "Generate a report in HTML" ,hint = def &= typFile & text "Hint/ignore file to use" ,color = def &= flag "c" & flag "colour" & text "Color the output (requires ANSI terminal)" ,ignore = def &= typ "MESSAGE" & text "Ignore a particular hint" ,show_ = def &= text "Show all ignored ideas" ,test = def &= text "Run in test mode" ,cpp_define = def &= typ "NAME[=VALUE]" & text "CPP #define" ,cpp_include = def &= typDir & text "CPP include path" ,files = def &= args & typ "FILE/DIR" } &= prog "hlint" & text "Suggest improvements to Haskell source code" & helpSuffix ["To check all Haskell files in 'src' and generate a report type:"," hlint src --report"] modes = [hlint] main = print =<< cmdArgs "HLint v1.6.5, (C) Neil Mitchell 2006-2009" modes