{- |
Module      :  $Header$
Description :  Entrypoint of the application.
Author      :  Nils 'bash0r' Jonsson
Copyright   :  (c) 2015 Nils 'bash0r' Jonsson
License     :  MIT

Maintainer  :  aka.bash0r@gmail.com
Stability   :  unstable
Portability :  non-portable (Portability is untested.)

The 'Main' module is the entrypoint of the application.
-}
module Main
( main
) where

import Control.Applicative
import Control.Command
import Control.Monad
import Control.Router

import System.Environment

import MultiCabal.Instruction
import MultiCabal.Commands


main :: IO ()
main = getArgs >>= invoke >> return ()
  where
    invoke []         =
      execute Help []
    invoke (cmd:args) =
      case route availableCommands cmd of
        Just a  -> execute a args
        Nothing -> putStrLn ("Command " ++ cmd ++ " is not available.\n")

