module Main where import Data.Maybe import System.Environment import qualified Examples.Tar.Main as Tar import qualified Examples.Self.Main as Self import qualified Examples.Test.Basic1 as Basic1 import qualified Examples.Test.Directory as Directory fakes = ["clean" * clean, "test" * test] where (*) = (,) mains = ["tar" * Tar.main, "self" * Self.main ,"basic1" * Basic1.main, "directory" * Directory.main] where (*) = (,) main :: IO () main = do xs <- getArgs case flip lookup (fakes ++ mains) =<< listToMaybe xs of Nothing -> error $ "Enter one of the examples: " ++ unwords (map fst $ fakes ++ mains) Just main -> main clean :: IO () clean = sequence_ [withArgs [name,"clean"] main | (name,main) <- mains] test :: IO () test = sequence_ [withArgs [name,"test"] main | (name,main) <- mains]