]> gitweb.michael.orlitzky.com - hath.git/blobdiff - src/Main.hs
Add a --sort flag to hath and document/test why it was needed after all.
[hath.git] / src / Main.hs
index 0ebfafa67aaadcf06e3148b22f0574967b8b7fd8..4774c8778e5904a42378e53e2673ef112f3cdef7 100644 (file)
@@ -3,6 +3,7 @@ where
 
 import Control.Monad (when)
 import Data.List ((\\), intercalate)
 
 import Control.Monad (when)
 import Data.List ((\\), intercalate)
+import qualified Data.List as List (sort)
 import Data.Maybe (catMaybes, isNothing)
 import System.Exit (ExitCode( ExitFailure ), exitWith)
 import System.IO (stderr, hPutStrLn)
 import Data.Maybe (catMaybes, isNothing)
 import System.Exit (ExitCode( ExitFailure ), exitWith)
 import System.IO (stderr, hPutStrLn)
@@ -22,7 +23,7 @@ import Cidr (
   min_octet4 )
 import qualified Cidr ( normalize )
 import CommandLine(
   min_octet4 )
 import qualified Cidr ( normalize )
 import CommandLine(
-  Args( Regexed, Reduced, Duped, Diffed, Listed, barriers, normalize ),
+  Args( Regexed, Reduced, Duped, Diffed, Listed, barriers, normalize, sort ),
   get_args )
 import ExitCodes ( exit_invalid_cidr )
 import Octet ()
   get_args )
 import ExitCodes ( exit_invalid_cidr )
 import Octet ()
@@ -130,7 +131,8 @@ main = do
     Reduced{} -> do
       -- Pre-normalize all CIDRs if the user asked for it.
       let nrml_func = if (normalize args) then Cidr.normalize else id
     Reduced{} -> do
       -- Pre-normalize all CIDRs if the user asked for it.
       let nrml_func = if (normalize args) then Cidr.normalize else id
-      mapM_ print (combine_all (map nrml_func valid_cidrs))
+      let sort_func = if (sort args) then List.sort else id :: [Cidr] -> [Cidr]
+      mapM_ (print . nrml_func) (sort_func $ combine_all valid_cidrs)
     Duped{} ->
        mapM_ print dupes
        where
     Duped{} ->
        mapM_ print dupes
        where