diff options
Diffstat (limited to 'Command/Version.hs')
-rw-r--r-- | Command/Version.hs | 50 |
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 |