module Main where import System.Environment import Control.Applicative import Control.Monad import Data.Maybe (fromMaybe) import Runner import Config import System.Directory import System.FilePath main :: IO () main = do (src : _ : dst : args) <- getArgs let configFileContents = case args of (configFile : _) -> readFile configFile _ -> return "" customConfiguration <- config <$> configFileContents let sources = case customConfiguration of Just (Config _ (Just sourceFolders)) -> sourceFolders _ -> ["src"] files <- sequence $ map getAbsDirectoryContents sources let testDriverFileContents = driver (concat files) customConfiguration writeFile dst testDriverFileContents getAbsDirectoryContents :: FilePath -> IO [FilePath] getAbsDirectoryContents dir = getDirectoryContents dir >>= mapM (canonicalizePath . (dir ))