webapp: Check annex.version.

This commit is contained in:
Joey Hess 2013-11-17 14:58:35 -04:00
parent 2430302379
commit 9c20185f55
9 changed files with 80 additions and 52 deletions

View file

@ -19,15 +19,21 @@ import qualified Upgrade.V2
import qualified Upgrade.V4
checkUpgrade :: Version -> Annex ()
checkUpgrade v
| v `elem` supportedVersions = noop
| v `elem` autoUpgradeableVersions = unlessM (upgrade True) $
err "Automatic upgrade failed!"
checkUpgrade = maybe noop error <=< needsUpgrade
needsUpgrade :: Version -> Annex (Maybe String)
needsUpgrade v
| v `elem` supportedVersions = ok
| v `elem` autoUpgradeableVersions = ifM (upgrade True)
( ok
, err "Automatic upgrade failed!"
)
| v `elem` upgradableVersions = err "Upgrade this repository: git-annex upgrade"
| otherwise = err "Upgrade git-annex."
where
err msg = error $ "Repository version " ++ v ++
err msg = return $ Just $ "Repository version " ++ v ++
" is not supported. " ++ msg
ok = return Nothing
upgrade :: Bool -> Annex Bool
upgrade automatic = go =<< getVersion