summaryrefslogtreecommitdiff
path: root/Command/Version.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Command/Version.hs')
-rw-r--r--Command/Version.hs50
1 files changed, 28 insertions, 22 deletions
diff --git a/Command/Version.hs b/Command/Version.hs
index 9896f671e..72bbe4064 100644
--- a/Command/Version.hs
+++ b/Command/Version.hs
@@ -18,40 +18,41 @@ import qualified Remote
import qualified Backend
cmd :: Command
-cmd = withOptions [rawOption] $ dontCheck repoExists $ noCommit $
- noRepo (parseparams startNoRepo) $
+cmd = dontCheck repoExists $ noCommit $
+ noRepo (seekNoRepo <$$> optParser) $
command "version" SectionQuery "show version info"
- paramNothing (parseparams seek)
- where
- parseparams = withParams
+ paramNothing (seek <$$> optParser)
-rawOption :: Option
-rawOption = flagOption [] "raw" "output only program version"
+data VersionOptions = VersionOptions
+ { rawOption :: Bool
+ }
-seek :: CmdParams -> CommandSeek
-seek = withNothing $ ifM (getOptionFlag rawOption) (startRaw, start)
+optParser :: CmdParamsDesc -> Parser VersionOptions
+optParser _ = VersionOptions
+ <$> switch
+ ( long "raw"
+ <> help "output only program version"
+ )
-startRaw :: CommandStart
-startRaw = do
- liftIO $ do
- putStr SysConfig.packageversion
- hFlush stdout
- stop
+seek :: VersionOptions -> CommandSeek
+seek o
+ | rawOption o = liftIO showRawVersion
+ | otherwise = showVersion
+
+seekNoRepo :: VersionOptions -> IO ()
+seekNoRepo o
+ | rawOption o = showRawVersion
+ | otherwise = showPackageVersion
-start :: CommandStart
-start = do
+showVersion :: Annex ()
+showVersion = do
v <- getVersion
liftIO $ do
-
showPackageVersion
vinfo "local repository version" $ fromMaybe "unknown" v
vinfo "supported repository version" supportedVersion
vinfo "upgrade supported from repository versions" $
unwords upgradableVersions
- stop
-
-startNoRepo :: CmdParams -> IO ()
-startNoRepo _ = showPackageVersion
showPackageVersion :: IO ()
showPackageVersion = do
@@ -60,5 +61,10 @@ showPackageVersion = do
vinfo "key/value backends" $ unwords $ map B.name Backend.list
vinfo "remote types" $ unwords $ map R.typename Remote.remoteTypes
+showRawVersion :: IO ()
+showRawVersion = do
+ putStr SysConfig.packageversion
+ hFlush stdout -- no newline, so flush
+
vinfo :: String -> String -> IO ()
vinfo k v = putStrLn $ k ++ ": " ++ v