module Main where import System.IO import System.Random import System.Directory import List data Config = Config {standardPrefix :: String, standardPostfix :: String } deriving (Show, Read) defaultConfig = Config {standardPrefix = "", standardPostfix = "" } processConfig :: FilePath -> IO Config processConfig fn = do cfgfile <- readFile fn return $ ((read cfgfile)::Config) main = do dir <- getCurrentDirectory files <- getDirectoryContents dir cfg <- if (".siggen" `elem` files) then processConfig ".siggen" else return defaultConfig sigfiles <- return $ filter (\x -> ".sig" `isSuffixOf` x) files case sigfiles of [] -> putStr (standardPrefix cfg ++ standardPostfix cfg) fs -> do n <- getStdRandom (randomR (0, length fs - 1)) sigInfix <- readFile (sigfiles !! n) putStr (standardPrefix cfg ++ sigInfix ++ standardPostfix cfg )