]> gitweb.michael.orlitzky.com - hath.git/blobdiff - src/Main.hs
src/Main.hs: add an explicit export list.
[hath.git] / src / Main.hs
index 174efe28258e608ac48c488ae8225522699b7057..085e30e1ba62aef6c53364e5b6dae8a67994124f 100644 (file)
@@ -1,8 +1,9 @@
-module Main
+module Main (main)
 where
 
 import Control.Monad (when)
 import Data.List ((\\), intercalate)
 where
 
 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