module Autoproc.Run where import Autoproc.Classifier (CExp) import Autoproc.Configuration (showVars) import Autoproc.Procmail (PExp, showLn) import Autoproc.Transform (generate) import Control.Monad.Writer (execWriter, Writer) showProcmailrc :: [(String, String)] -> [PExp] -> String showProcmailrc vars ps = showVars (vars) ++ "\n\n" ++ "############################\n\n" ++ (ps >>= showLn) autoprocMessage :: IO () autoprocMessage = putStr $ unlines ["#.procmailrc", "# Automatically generated procmail recipes by Autoproc.", "# To find out more about Autoproc visit:", "# 'http://www.codersbase.com/Autoproc'", "# To fetch the latest version of autoproc with Darcs:", "# 'darcs get http://projects.codersbase.com/repos/autoproc'", "", ""] autoprocMain :: [(String, String)] -> Writer [CExp] a -> IO () autoprocMain vars rules = autoprocMessage >> (putStrLn . showProcmailrc vars . concatMap generate $ execWriter rules)