Skip to content

Commit

Permalink
Add --version and --numeric-version flags
Browse files Browse the repository at this point in the history
  • Loading branch information
kolmodin committed Feb 19, 2009
1 parent 96a6477 commit afdf716
Showing 1 changed file with 29 additions and 7 deletions.
36 changes: 29 additions & 7 deletions Main.hs
Expand Up @@ -19,7 +19,7 @@ import Distribution.PackageDescription.Configuration
( flattenPackageDescription ) ( flattenPackageDescription )
import Distribution.ReadE ( succeedReadE ) import Distribution.ReadE ( succeedReadE )
import Distribution.Simple.Command -- commandsRun import Distribution.Simple.Command -- commandsRun
import Distribution.Simple.Utils ( die ) import Distribution.Simple.Utils ( die, cabalVersion )
import qualified Distribution.PackageDescription as Cabal import qualified Distribution.PackageDescription as Cabal
import qualified Distribution.PackageDescription.Parse as Cabal import qualified Distribution.PackageDescription.Parse as Cabal
import qualified Distribution.Package as Cabal import qualified Distribution.Package as Cabal
Expand Down Expand Up @@ -52,6 +52,9 @@ import Merge


import Cabal2Ebuild import Cabal2Ebuild


import qualified Paths_cabal_install
import qualified Paths_hackport

----------------------------------------------------------------------- -----------------------------------------------------------------------
-- List -- List
----------------------------------------------------------------------- -----------------------------------------------------------------------
Expand Down Expand Up @@ -463,12 +466,14 @@ usageFlags name pname =
----------------------------------------------------------------------- -----------------------------------------------------------------------


data GlobalFlags = GlobalFlags { data GlobalFlags = GlobalFlags {
globalVersion :: Flag Bool globalVersion :: Flag Bool,
globalNumericVersion :: Flag Bool
} }


defaultGlobalFlags :: GlobalFlags defaultGlobalFlags :: GlobalFlags
defaultGlobalFlags = GlobalFlags { defaultGlobalFlags = GlobalFlags {
globalVersion = Flag False globalVersion = Flag False,
globalNumericVersion = Flag False
} }


globalCommand :: CommandUI GlobalFlags globalCommand :: CommandUI GlobalFlags
Expand All @@ -480,7 +485,15 @@ globalCommand = CommandUI {
commandUsage = \_ -> [], commandUsage = \_ -> [],
commandDefaultFlags = defaultGlobalFlags, commandDefaultFlags = defaultGlobalFlags,
commandOptions = \showOrParseArgs -> commandOptions = \showOrParseArgs ->
[ ] [ option ['V'] ["version"]
"Print version information"
globalVersion (\v flags -> flags { globalVersion = v })
trueArg
, option [] ["numeric-version"]
"Print just the version number"
globalNumericVersion (\v flags -> flags { globalNumericVersion = v })
trueArg
]
} }


mainWorker :: [String] -> IO () mainWorker :: [String] -> IO ()
Expand All @@ -491,16 +504,25 @@ mainWorker args =
CommandErrors errs -> printErrors errs CommandErrors errs -> printErrors errs
CommandReadyToGo (globalflags, commandParse) -> do CommandReadyToGo (globalflags, commandParse) -> do
case commandParse of case commandParse of
CommandHelp help -> printHelp help _ | fromFlag (globalVersion globalflags) -> printVersion
CommandList opts -> printOptionsList opts | fromFlag (globalNumericVersion globalflags) -> printNumericVersion
CommandErrors errs -> printErrors errs CommandHelp help -> printHelp help
CommandList opts -> printOptionsList opts
CommandErrors errs -> printErrors errs
CommandReadyToGo action -> catchEx (action globalflags) errorHandler CommandReadyToGo action -> catchEx (action globalflags) errorHandler
where where
printHelp help = getProgName >>= putStr . help printHelp help = getProgName >>= putStr . help
printOptionsList = putStr . unlines printOptionsList = putStr . unlines
printErrors errs = do printErrors errs = do
putStr (concat (intersperse "\n" errs)) putStr (concat (intersperse "\n" errs))
exitFailure exitFailure
printNumericVersion = putStrLn $ display Paths_hackport.version
printVersion = putStrLn $ "hackport version "
++ display Paths_hackport.version
++ "\nusing cabal-install "
++ display Paths_cabal_install.version
++ " and the Cabal library version "
++ display cabalVersion
errorHandler :: HackPortError -> IO () errorHandler :: HackPortError -> IO ()
errorHandler e = do errorHandler e = do
putStrLn (hackPortShowError e) putStrLn (hackPortShowError e)
Expand Down

0 comments on commit afdf716

Please sign in to comment.