module Desert where import Data.Char import qualified Desert.New as New import qualified Desert.Build as Build import qualified Desert.Test as Test import qualified Desert.Run as Run import qualified Desert.Clean as Clean import Desert.Plugin newtype Command = Command { unCommand :: String } newtype CommandArgs = CommandArgs { unCommandArgs :: [String] } openKeg :: Command -> CommandArgs -> IO () openKeg c a = do let command = unCommand c args = unCommandArgs a plugin = case toLower `fmap` command of "new" -> New.plugin "build" -> Build.plugin "test" -> Test.plugin "run" -> Run.plugin "clean" -> Clean.plugin subc -> error $ "not support subcmd " ++ subc ++ " yet" run plugin args