{- git-annex repository versioning - - Copyright 2010-2018 Joey Hess - - Licensed under the GNU AGPL version 3 or higher. -} {-# LANGUAGE CPP #-} module Annex.Version where import Annex.Common import Config import Types.RepoVersion import qualified Annex import qualified Data.Map as M defaultVersion :: RepoVersion defaultVersion = RepoVersion 7 latestVersion :: RepoVersion latestVersion = RepoVersion 7 supportedVersions :: [RepoVersion] supportedVersions = map RepoVersion [7] upgradableVersions :: [RepoVersion] #ifndef mingw32_HOST_OS upgradableVersions = map RepoVersion [0..6] #else upgradableVersions = map RepoVersion [2..6] #endif autoUpgradeableVersions :: M.Map RepoVersion RepoVersion autoUpgradeableVersions = M.fromList [ (RepoVersion 3, RepoVersion 5) , (RepoVersion 4, RepoVersion 5) , (RepoVersion 5, RepoVersion 6) , (RepoVersion 6, RepoVersion 7) ] versionField :: ConfigKey versionField = annexConfig "version" getVersion :: Annex (Maybe RepoVersion) getVersion = annexVersion <$> Annex.getGitConfig setVersion :: RepoVersion -> Annex () setVersion (RepoVersion v) = setConfig versionField (show v) removeVersion :: Annex () removeVersion = unsetConfig versionField