module HsImport.Args
( HsImportArgs(..)
, hsImportArgs
, defaultArgs
) where
import Prelude hiding (all)
import System.Console.CmdArgs
#ifdef CABAL
import Data.Version (showVersion)
import Paths_hsimport (version)
#endif
data HsImportArgs = HsImportArgs
{ moduleName :: String
, symbolName :: String
, all :: Bool
, with :: [String]
, qualifiedName :: String
, as :: String
, inputSrcFile :: FilePath
, outputSrcFile :: FilePath
} deriving (Data, Typeable, Show, Eq)
hsImportArgs :: IO HsImportArgs
hsImportArgs = cmdArgs $ HsImportArgs
{ moduleName = def &= help "The module to import"
, symbolName = def &= help "The symbol to import, if empty, the entire module is imported"
, all = def &= help "All constructors or methods of the symbol should be imported: 'Symbol(..)'"
&= name "all" &= name "a"
, with = def &= help "The constructors or methods of the symbol should be imported: 'Symbol(With)'"
, qualifiedName = def &= help "The name to use for a qualified module import"
, as = def &= help "The name to use for an unqualified module import" &= name "as"
, outputSrcFile = def &= help "Save modified source file to file, if empty, the source file is modified inplace" &= typFile
, inputSrcFile = def &= args &= typ "SOURCEFILE"
}
&= program "hsimport"
&= summary summaryInfo
&= help "A command line program for extending the import list of a Haskell source file."
&= helpArg [explicit, name "help", name "h"]
&= versionArg [explicit, name "version", name "v", summary versionInfo]
where
summaryInfo = ""
defaultArgs :: HsImportArgs
defaultArgs = HsImportArgs
{ moduleName = def
, symbolName = def
, all = def
, with = def
, qualifiedName = def
, as = def
, inputSrcFile = def
, outputSrcFile = def
}
versionInfo :: String
versionInfo =
#ifdef CABAL
"hsimport version " ++ showVersion version
#else
"hsimport version unknown (not built with cabal)"
#endif