{-# LANGUAGE QuasiQuotes, TypeFamilies, OverloadedStrings, MultiParamTypeClasses #-} {-# LANGUAGE TemplateHaskell #-} import Yesod import Yesod.AtomFeed import Yesod.Feed import Distribution.PackDeps import Data.Maybe import Data.List (sortBy) import Data.Ord (comparing) import Data.Time import Distribution.Package import Distribution.Text hiding (Text) import Control.Arrow import Distribution.Version (withinRange) import qualified Data.Map as Map import qualified Data.ByteString.Char8 as S8 import Data.Text (Text, pack, unpack) import Text.Hamlet (shamlet) import System.Environment (getArgs) import Data.List (sort) data PD = PD Newest Reverses mkYesod "PD" [$parseRoutes| /favicon.ico FaviconR GET / RootR GET /feed FeedR GET /feed/#Text Feed2R GET /feeddeep/#Text Feed2DeepR GET /feed/#Text/#Text/#Text/#Text Feed3R GET /specific SpecificR GET /feed/specific/#Text SpecificFeedR GET /reverse ReverseListR GET /reverse/#Text ReverseR GET |] instance Yesod PD where approot _ = "" getFaviconR :: Handler () getFaviconR = sendFile "image/x-icon" "favicon.ico" mainCassius = [$cassius| body font-family: Arial,Helvetica,sans-serif width: 600px margin: 2em auto text-align: center p text-align: justify h2 border-bottom: 2px solid #999 input[type=text] width: 400px #footer margin-top: 15px border-top: 1px dashed #999 padding-top: 10px table border-collapse: collapse margin: 0 auto th, td border: 1px solid #333 form p margin-top: 1em text-align: center |] getRootR = defaultLayout $ do setTitle "Hackage dependency monitor" addCassius mainCassius [whamlet|