X-Git-Url: http://gitweb.michael.orlitzky.com/?p=dead%2Fharbl.git;a=blobdiff_plain;f=harbl-cli%2Fsrc%2FMain.hs;h=9e6e0579c473bbef1afec1e8c391aeeeb0e6d42e;hp=d2ac8d294ed7c0751f6d30df678e31d6759dff8f;hb=a9e293c277eebd06b4916a54342a866aba20ef4f;hpb=b55e5db2a68be5d69b970bbe4b5ad447881abd3d diff --git a/harbl-cli/src/Main.hs b/harbl-cli/src/Main.hs index d2ac8d2..9e6e057 100644 --- a/harbl-cli/src/Main.hs +++ b/harbl-cli/src/Main.hs @@ -1,3 +1,5 @@ +{-# LANGUAGE DoAndIfThenElse #-} + module Main ( main ) where @@ -5,12 +7,13 @@ import Control.Monad ( liftM, when ) import Data.Monoid ( (<>) ) import Text.Parsec ( ParseError, parse ) import System.Console.CmdArgs ( def ) -import System.Exit ( exitWith, ExitCode (ExitFailure) ) -import System.IO ( hPutStrLn, stderr ) +import System.Exit ( exitSuccess, exitWith, ExitCode (ExitFailure) ) +import System.IO ( hPrint, stderr ) import CommandLine ( get_args ) import Configuration ( Configuration(..), merge_optional ) import ExitCodes ( + exit_host_blacklisted, exit_no_hosts, exit_no_lists, exit_unparseable_host, @@ -70,13 +73,16 @@ main = do case (parse_lists $ lists cfg) of Left e -> do - hPutStrLn stderr (show e) + hPrint stderr e exitWith (ExitFailure exit_unparseable_list) - Right ls -> do + Right ls -> case (parse_hosts $ hosts cfg) of Left e -> do - hPutStrLn stderr (show e) + hPrint stderr e exitWith (ExitFailure exit_unparseable_host) Right hs -> do listings <- concatMapM (lookup_rbl ls) hs mapM_ (putStrLn . listing_message) listings + if null listings + then exitSuccess + else exitWith (ExitFailure exit_host_blacklisted)