cantor-0.1: src/Main.hs
{- |
Module : Main
Copyright : Copyright (C) 2014 Krzysztof Langner
License : BSD3
Maintainer : Krzysztof Langner <klangner@gmail.com>
Stability : alpha
Portability : portable
Main GUI application for gathering and presenting information..
-}
module Main where
import System.Environment
import System.Console.GetOpt
import System.Exit
import Project.Maven as Maven
import Project.Model
data Flag = Version -- -v
| Help -- --help
deriving (Eq,Ord,Enum,Show,Bounded)
main::IO ()
main = do
argv <- getArgs
case getOpt Permute flags argv of
([], cmd:src:_, []) -> commandAction cmd src
([], [src], []) -> analyzeAction src
([Version], _, []) -> printVersion
([Help], _, []) -> printUsageInfo
(_, _, []) -> printUsageInfo
(_, _, errs) -> errorAction errs
-- | Command line flags
flags :: [OptDescr Flag]
flags =
[Option "v" ["version"] (NoArg Version)
"Print version number."
,Option "h" ["help"] (NoArg Help)
"Print this help message."
]
-- | Print application version number
printVersion :: IO ()
printVersion =
putStrLn "mavex version 0.1"
-- | This action prints errors
errorAction :: [String] -> IO ()
errorAction errs = do
putStrLn (concat errs)
exitWith (ExitFailure 1)
-- | Print usage info
printUsageInfo :: IO ()
printUsageInfo = do
putStrLn "Usage: mavex [command] <project_path>"
putStrLn " commands:"
putStrLn " create - Create maven POM file."
putStrLn (usageInfo "" flags)
-- | Print information about project
printProjectInfo :: Project -> IO ()
printProjectInfo prj = putStrLn (getProjectInfo prj)
-- | Print information about project
analyzeAction :: FilePath -> IO ()
analyzeAction src = do
pom <- Maven.loadProject src
case pom of
Just prj -> printProjectInfo prj
Nothing -> putStrLn "Maven POM file not found"
-- | Execute command
commandAction :: String -> FilePath -> IO ()
commandAction _ _ = putStrLn "Commands not implemented yet."