darcs-2.14.0: src/Darcs/UI/Commands/ShowPatchIndex.hs
module Darcs.UI.Commands.ShowPatchIndex ( showPatchIndex ) where
import Prelude ()
import Darcs.Prelude
import Darcs.UI.Commands
( DarcsCommand(..), withStdOpts, nodefaults, amInHashedRepository )
import Darcs.UI.Completion ( noArgs )
import Darcs.UI.Flags ( DarcsFlag, useCache, verbose )
import Prelude hiding ( (^) )
import Darcs.UI.Options
( (^), oid, odesc, ocheck, onormalise, defaultFlags, (?) )
import qualified Darcs.UI.Options.All as O
import Darcs.Util.Path ( AbsolutePath )
import Darcs.Repository ( withRepository, RepoJob(..), repoLocation )
import Darcs.Repository.PatchIndex
( dumpPatchIndex, piTest, doesPatchIndexExist, isPatchIndexInSync)
showPatchIndex :: DarcsCommand [DarcsFlag]
showPatchIndex = DarcsCommand
{ commandProgramName = "darcs"
, commandName = "patch-index"
, commandDescription = "Check integrity of patch index"
, commandHelp =
"When given the `--verbose` flag, the command dumps the complete content\n" ++
"of the patch index and checks its integrity."
, commandExtraArgs = 0
, commandExtraArgHelp = []
, commandCommand = showPatchIndexCmd
, commandPrereq = amInHashedRepository
, commandCompleteArgs = noArgs
, commandArgdefaults = nodefaults
, commandAdvancedOptions = []
, commandBasicOptions = odesc showPatchIndexBasicOpts
, commandDefaults = defaultFlags showPatchIndexOpts
, commandCheckOptions = ocheck showPatchIndexOpts
, commandParseOptions = onormalise showPatchIndexOpts
}
where
showPatchIndexBasicOpts = O.nullFlag ^ O.repoDir
showPatchIndexOpts = showPatchIndexBasicOpts `withStdOpts` oid
showPatchIndexCmd :: (AbsolutePath, AbsolutePath) -> [DarcsFlag] -> [String] -> IO ()
showPatchIndexCmd _ opts _
| verbose opts =
withRepository (useCache ? opts) $ RepoJob $ \repo ->
let loc = repoLocation repo in dumpPatchIndex loc >> piTest loc
| otherwise =
withRepository (useCache ? opts) $ RepoJob $ \repo -> do
ex <- doesPatchIndexExist (repoLocation repo)
if ex then do
sy <- isPatchIndexInSync repo
if sy
then putStrLn "Patch Index is in sync with repo."
else putStrLn "Patch Index is outdated. Run darcs optimize enable-patch-index"
else putStrLn "Patch Index is not yet created. Run darcs optimize enable-patch-index"