2011-06-01 21:49:37 +00:00
|
|
|
{- git-annex trust levels
|
|
|
|
-
|
|
|
|
- Copyright 2010 Joey Hess <joey@kitenet.net>
|
|
|
|
-
|
|
|
|
- Licensed under the GNU GPL version 3 or higher.
|
|
|
|
-}
|
|
|
|
|
2011-06-24 01:25:39 +00:00
|
|
|
module Types.TrustLevel (
|
2011-06-01 21:49:37 +00:00
|
|
|
TrustLevel(..),
|
2012-10-03 21:04:52 +00:00
|
|
|
TrustMap,
|
|
|
|
readTrustLevel,
|
|
|
|
showTrustLevel,
|
2012-12-20 03:43:15 +00:00
|
|
|
prop_read_show_TrustLevel
|
2011-06-01 21:49:37 +00:00
|
|
|
) where
|
|
|
|
|
2011-06-24 01:25:39 +00:00
|
|
|
import qualified Data.Map as M
|
2014-10-14 18:10:22 +00:00
|
|
|
import Data.Default
|
2011-06-24 01:25:39 +00:00
|
|
|
|
|
|
|
import Types.UUID
|
|
|
|
|
2013-09-20 04:04:37 +00:00
|
|
|
-- This order may seem backwards, but we generally want to list dead
|
|
|
|
-- remotes last and trusted ones first.
|
2011-12-02 20:59:55 +00:00
|
|
|
data TrustLevel = Trusted | SemiTrusted | UnTrusted | DeadTrusted
|
2012-12-20 03:43:15 +00:00
|
|
|
deriving (Eq, Enum, Ord, Bounded)
|
2011-06-01 21:49:37 +00:00
|
|
|
|
2014-10-14 18:10:22 +00:00
|
|
|
instance Default TrustLevel where
|
|
|
|
def = SemiTrusted
|
|
|
|
|
2011-06-24 01:25:39 +00:00
|
|
|
type TrustMap = M.Map UUID TrustLevel
|
2012-10-03 21:04:52 +00:00
|
|
|
|
|
|
|
readTrustLevel :: String -> Maybe TrustLevel
|
|
|
|
readTrustLevel "trusted" = Just Trusted
|
|
|
|
readTrustLevel "untrusted" = Just UnTrusted
|
|
|
|
readTrustLevel "semitrusted" = Just SemiTrusted
|
|
|
|
readTrustLevel "dead" = Just DeadTrusted
|
|
|
|
readTrustLevel _ = Nothing
|
|
|
|
|
|
|
|
showTrustLevel :: TrustLevel -> String
|
|
|
|
showTrustLevel Trusted = "trusted"
|
|
|
|
showTrustLevel UnTrusted = "untrusted"
|
|
|
|
showTrustLevel SemiTrusted = "semitrusted"
|
|
|
|
showTrustLevel DeadTrusted = "dead"
|
2012-12-20 03:43:15 +00:00
|
|
|
|
|
|
|
prop_read_show_TrustLevel :: Bool
|
|
|
|
prop_read_show_TrustLevel = all check [minBound .. maxBound]
|
|
|
|
where
|
|
|
|
check l = readTrustLevel (showTrustLevel l) == Just l
|