{-# LANGUAGE RecordWildCards #-} module Data.KeyStore.KS.Configuration where import Data.KeyStore.Types import qualified Data.Map as Map import Data.Maybe import Text.KSRegex configurationSettings :: Configuration -> Settings configurationSettings :: Configuration -> Settings configurationSettings = Configuration -> Settings _cfg_settings trigger :: Name -> Configuration -> Settings -> E Settings trigger :: Name -> Configuration -> Settings -> E Settings trigger Name nm Configuration cfg Settings stgs0 = case Settings -> [SettingID] checkSettingsCollisions Settings stgs of [] -> Settings -> E Settings forall a b. b -> Either a b Right Settings stgs [SettingID] sids -> Reason -> E Settings forall a b. a -> Either a b Left (Reason -> E Settings) -> Reason -> E Settings forall a b. (a -> b) -> a -> b $ String -> Reason forall a. Error a => String -> a strMsg (String -> Reason) -> String -> Reason forall a b. (a -> b) -> a -> b $ String "settings collided in triggers: " String -> String -> String forall a. [a] -> [a] -> [a] ++ String nm_s String -> String -> String forall a. [a] -> [a] -> [a] ++ String ": " String -> String -> String forall a. [a] -> [a] -> [a] ++ [Text] -> String forall a. Show a => a -> String show((SettingID -> Text) -> [SettingID] -> [Text] forall a b. (a -> b) -> [a] -> [b] map SettingID -> Text _SettingID [SettingID] sids) String -> String -> String forall a. [a] -> [a] -> [a] ++ String "\n\n" String -> String -> String forall a. [a] -> [a] -> [a] ++ [Settings] -> String forall a. Show a => a -> String show (Settings stgs0 Settings -> [Settings] -> [Settings] forall a. a -> [a] -> [a] : [Settings] t_stgss) where stgs :: Settings stgs = [Settings] -> Settings forall a. Monoid a => [a] -> a mconcat ([Settings] -> Settings) -> [Settings] -> Settings forall a b. (a -> b) -> a -> b $ Settings stgs0 Settings -> [Settings] -> [Settings] forall a. a -> [a] -> [a] : [Settings] t_stgss t_stgss :: [Settings] t_stgss = [ Settings _trg_settings | Trigger{Settings Pattern TriggerID _trg_settings :: Trigger -> Settings _trg_pattern :: Trigger -> Pattern _trg_id :: Trigger -> TriggerID _trg_pattern :: Pattern _trg_id :: TriggerID _trg_settings :: Settings ..}<-Map TriggerID Trigger -> [Trigger] forall k a. Map k a -> [a] Map.elems (Map TriggerID Trigger -> [Trigger]) -> Map TriggerID Trigger -> [Trigger] forall a b. (a -> b) -> a -> b $ Configuration -> Map TriggerID Trigger _cfg_triggers Configuration cfg, Pattern -> Bool mtch Pattern _trg_pattern ] mtch :: Pattern -> Bool mtch Pattern pat = Maybe [String] -> Bool forall a. Maybe a -> Bool isJust (Maybe [String] -> Bool) -> Maybe [String] -> Bool forall a b. (a -> b) -> a -> b $ Regex -> String -> Maybe [String] matchRegex (Pattern -> Regex _pat_regex Pattern pat) String nm_s nm_s :: String nm_s = Name -> String _name Name nm