diff options
author | Joey Hess <joey@kitenet.net> | 2012-10-04 15:48:59 -0400 |
---|---|---|
committer | Joey Hess <joey@kitenet.net> | 2012-10-04 16:00:19 -0400 |
commit | 9214a810faa300862d3d847c9ee425e5605bccef (patch) | |
tree | 4c69e8fa7bb7bc0bc107b328b817b6e7c6c9c4e3 /Annex.hs | |
parent | a0e16e34466008221ad2431ca001ddb536b88b84 (diff) |
added preferred-content log, and allow editing it with vicfg
This includes a full parser for the boolean expressions in the log,
that compiles them into Matchers. Those matchers are not used yet.
A complication is that matching against an expression should never
crash git-annex with an error. Instead, vicfg checks that the expressions
parse. If a bad expression (or an expression understood by some future
git-annex version) gets into the log, it'll be ignored.
Most of the code in Limit couldn't fail anyway, but I did have to make
limitCopies check its parameter first, and return an error if it's bad,
rather than erroring at runtime.
Diffstat (limited to 'Annex.hs')
-rw-r--r-- | Annex.hs | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -10,6 +10,7 @@ module Annex ( Annex, AnnexState(..), + PreferredContentMap, new, newState, run, @@ -47,6 +48,7 @@ import Types.BranchState import Types.TrustLevel import Types.Group import Types.Messages +import Types.UUID import Utility.State import qualified Utility.Matcher import qualified Data.Map as M @@ -74,6 +76,8 @@ instance MonadBaseControl IO Annex where type Matcher a = Either [Utility.Matcher.Token a] (Utility.Matcher.Matcher a) +type PreferredContentMap = M.Map UUID (Utility.Matcher.Matcher (FilePath -> Annex Bool)) + -- internal state storage data AnnexState = AnnexState { repo :: Git.Repo @@ -90,6 +94,7 @@ data AnnexState = AnnexState , forcebackend :: Maybe String , forcenumcopies :: Maybe Int , limit :: Matcher (FilePath -> Annex Bool) + , preferredcontentmap :: Maybe PreferredContentMap , shared :: Maybe SharedRepository , forcetrust :: TrustMap , trustmap :: Maybe TrustMap @@ -117,6 +122,7 @@ newState gitrepo = AnnexState , forcebackend = Nothing , forcenumcopies = Nothing , limit = Left [] + , preferredcontentmap = Nothing , shared = Nothing , forcetrust = M.empty , trustmap = Nothing |