import Distribution.Simple
import Manatee.Core.Config
import Manatee.Core.Types
import Manatee.Toolkit.General.List
import Manatee.Toolkit.General.Map
import Manatee.Extension.Browser.PageMode
import qualified Data.Map as M
main = defaultMainWithHooks
simpleUserHooks {
-- Update Rule after install successful.
postInst = \ _ _ _ _ -> do
-- Update PageTypeRule.
(PageTypeRule typeRule) <- readConfig pageTypeRulePath (PageTypeRule M.empty)
writeConfig pageTypeRulePath (PageTypeRule (M.insert "PageBrowser" "manatee-browser" typeRule))
-- Update FileOpenRule
let match = ContentTypeMatch "text/html"
rule = ("Open URI", "PageBrowser", "file://")
(FileOpenRule ruleMap) <- readConfig fileOpenRulePath (FileOpenRule M.empty)
writeConfig fileOpenRulePath
(FileOpenRule (let openRules =
case findMinMatch ruleMap (\ oMath _ -> oMath == match) of
Just (_, rules) -> insertUnique rule rules
Nothing -> [rule]
in M.insert match openRules ruleMap))
-- Update PageModeRule.
(PageModeRule modeRule) <- readConfig pageModeRulePath (PageModeRule M.empty)
writeConfig pageModeRulePath (PageModeRule
(M.insert "PageBrowser" (Left $ pageModeName browserMode) modeRule))
-- Update Duplicate tab list.
(PageModeDuplicateList list) <- readConfig pageModeDuplicateList (PageModeDuplicateList [])
writeConfig pageModeDuplicateList (PageModeDuplicateList (insertUnique (pageModeName browserMode) list))
}