summaryrefslogtreecommitdiff
path: root/Annex.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2012-10-04 15:48:59 -0400
committerGravatar Joey Hess <joey@kitenet.net>2012-10-04 16:00:19 -0400
commit9214a810faa300862d3d847c9ee425e5605bccef (patch)
tree4c69e8fa7bb7bc0bc107b328b817b6e7c6c9c4e3 /Annex.hs
parenta0e16e34466008221ad2431ca001ddb536b88b84 (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.hs6
1 files changed, 6 insertions, 0 deletions
diff --git a/Annex.hs b/Annex.hs
index 87edb7c13..572823497 100644
--- a/Annex.hs
+++ b/Annex.hs
@@ -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