]> 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 174efe28258e608ac48c488ae8225522699b7057..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)
@@ -20,8 +21,9 @@ import Cidr (
   min_octet2,
   min_octet3,
   min_octet4 )
   min_octet2,
   min_octet3,
   min_octet4 )
+import qualified Cidr ( normalize )
 import CommandLine(
 import CommandLine(
-  Args( Regexed, Reduced, Duped, Diffed, Listed, barriers ),
+  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 ()
@@ -126,8 +128,11 @@ main = do
       let cidrs' = combine_all valid_cidrs
       let regexes = map (cidr_to_regex (barriers args)) cidrs'
       putStrLn $ alternate regexes
       let cidrs' = combine_all valid_cidrs
       let regexes = map (cidr_to_regex (barriers args)) cidrs'
       putStrLn $ alternate regexes
-    Reduced{} ->
-      mapM_ print (combine_all valid_cidrs)
+    Reduced{} -> do
+      -- Pre-normalize all CIDRs if the user asked for it.
+      let nrml_func = if (normalize args) then Cidr.normalize else id
+      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