X-Git-Url: https://gitweb.michael.orlitzky.com/?p=email-validator.git;a=blobdiff_plain;f=src%2FMain.hs;fp=src%2FMain.hs;h=1cc4c73aa47d963e56f30a7188f05781f010b76c;hp=1393d4c0d41aee7983100fd1125975b59d97ec18;hb=2e8aab2a69a8b9887e4f037115b80a2063d3a6b7;hpb=26d9ffe7a637c826da3b1b330843173205d79964 diff --git a/src/Main.hs b/src/Main.hs index 1393d4c..1cc4c73 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -7,14 +7,12 @@ where import Control.Concurrent.ParallelIO.Global ( parallelInterleaved, stopGlobalPool ) -import Control.Monad ( unless ) import qualified Data.ByteString.Char8 as BS ( hGetContents, hPutStrLn, lines, null, - pack, - readFile ) + pack ) import Network.DNS ( Domain, Resolver, @@ -23,25 +21,19 @@ import Network.DNS ( makeResolvSeed, withResolver ) import Network.DNS.Lookup ( lookupA, lookupMX ) -import System.Directory ( doesFileExist ) -import System.Exit ( exitWith, ExitCode( ExitFailure ) ) import System.IO ( - IOMode( WriteMode ), - hClose, hFlush, - openFile, stdin, stdout ) import CommandLine ( - Args( Args, accept_a, input_file, output_file, rfc5322 ), + Args( Args, accept_a, rfc5322 ), get_args ) import EmailAddress( Address, parts, validate_syntax ) -import ExitCodes ( exit_input_file_doesnt_exist ) -- | Resolver parameters. We increase the default timeout from 3 to 10 @@ -110,22 +102,8 @@ main :: IO () main = do Args{..} <- get_args - -- Get the input from either stdin, or the file given on the command - -- line. - input <- case input_file of - Nothing -> BS.hGetContents stdin - Just path -> do - is_file <- doesFileExist path - unless is_file $ - exitWith (ExitFailure exit_input_file_doesnt_exist) - BS.readFile path - - -- Do the same for the output handle and stdout. - output_handle <- case output_file of - Nothing -> return stdout - Just path -> openFile path WriteMode - - -- Split the input into lines. + -- Split stdin into lines, which should result in a list of addresses. + input <- BS.hGetContents stdin let addresses = BS.lines input -- And remove the empty ones. @@ -147,10 +125,7 @@ main = do -- Output the results. let valid_addresses = map fst valid_results - mapM_ (BS.hPutStrLn output_handle) valid_addresses + mapM_ (BS.hPutStrLn stdout) valid_addresses stopGlobalPool - - -- Clean up. It's safe to try to close stdout. - hFlush output_handle - hClose output_handle + hFlush stdout