2011-06-01 21:49:37 +00:00
|
|
|
{- git-annex trust levels
|
|
|
|
-
|
2015-01-21 16:50:09 +00:00
|
|
|
- Copyright 2010 Joey Hess <id@joeyh.name>
|
2011-06-01 21:49:37 +00:00
|
|
|
-
|
2019-03-13 19:48:14 +00:00
|
|
|
- Licensed under the GNU AGPL version 3 or higher.
|
2011-06-01 21:49:37 +00:00
|
|
|
-}
|
|
|
|
|
2018-04-13 19:16:07 +00:00
|
|
|
{-# LANGUAGE FlexibleInstances #-}
|
|
|
|
|
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
|
2018-04-13 19:16:07 +00:00
|
|
|
import Data.Ord
|
2011-06-24 01:25:39 +00:00
|
|
|
|
|
|
|
import Types.UUID
|
|
|
|
|
2018-04-13 18:50:14 +00:00
|
|
|
data TrustLevel = DeadTrusted | UnTrusted | SemiTrusted | Trusted
|
2018-04-13 19:16:07 +00:00
|
|
|
deriving (Eq, Enum, Ord, Bounded, Show)
|
2011-06-01 21:49:37 +00:00
|
|
|
|
2014-10-14 18:10:22 +00:00
|
|
|
instance Default TrustLevel where
|
|
|
|
def = SemiTrusted
|
|
|
|
|
2018-04-13 19:16:07 +00:00
|
|
|
instance Default (Down TrustLevel) where
|
|
|
|
def = Down def
|
|
|
|
|
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
|
2018-04-13 19:16:07 +00:00
|
|
|
prop_read_show_TrustLevel = all check [minBound .. maxBound]
|
2012-12-20 03:43:15 +00:00
|
|
|
where
|
|
|
|
check l = readTrustLevel (showTrustLevel l) == Just l
|