]> gitweb.michael.orlitzky.com - hath.git/commitdiff
Added the 'Dupe' mode of operation.
authorMichael Orlitzky <michael@orlitzky.com>
Thu, 20 May 2010 20:17:25 +0000 (16:17 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Thu, 20 May 2010 20:17:25 +0000 (16:17 -0400)
src/CommandLine.hs
src/Main.hs

index f15a786c9089de96d7655bac2270dc1270aae26c..31ca768cfaa043b872168313bc5153548bc37a5f 100644 (file)
@@ -21,11 +21,11 @@ lowercase :: String -> String
 lowercase = map toLower
 
 
--- The application currently has two modes. The default, Regex, will
+-- The application currently has three modes. The default, Regex, will
 -- compute a regular expression matching the input CIDRs. Reduce, on
 -- the other hand, will combine any redundant/adjacent CIDR blocks
--- into one.
-data Mode = Regex | Reduce
+-- into one. Dupe will show you what would be removed by Reduce.
+data Mode = Regex | Reduce | Dupe
 
 
 -- A record containing values for all available options.
@@ -71,7 +71,7 @@ set_input arg opts = do
 
 -- The usage header
 usage :: String
-usage = "Usage: hath [regexed|reduced] [-h] [-i FILE]"
+usage = "Usage: hath [regexed|reduced|duplicated] [-h] [-i FILE]"
 
 
 -- The usage header, and all available flags (as generated by GetOpt)
@@ -106,10 +106,12 @@ parse_mode = do
     else do
       -- Some non-option was given, but were any of them modes?
       case (lowercase (non_options !! 0)) of
-        "regex"   -> return Regex
-        "regexed" -> return Regex
-        "reduce"  -> return Reduce
-        "reduced" -> return Reduce
+        "regex"      -> return Regex
+        "regexed"    -> return Regex
+        "reduce"     -> return Reduce
+        "reduced"    -> return Reduce
+        "dupe"       -> return Dupe
+        "duplicated" -> return Dupe
         _         -> return Regex
 
 
index 7017a191b85530f639b822acd19b5143fb8cf5ee..a3b1bfe4a811faad00f6e8503b58de540bd8703f 100644 (file)
@@ -1,4 +1,4 @@
-import Data.List (intercalate, intersperse)
+import Data.List ((\\), intercalate, intersperse)
 import System.Exit (ExitCode(..), exitWith)
 import System.IO (stderr, hPutStrLn)
 
@@ -125,3 +125,8 @@ main = do
     Reduce -> do
         mapM (putStrLn . show) (combine_all cidrs)
         return ()
+    Dupe -> do
+         mapM (putStrLn . show) dupes
+         return ()
+         where
+           dupes = cidrs \\ (combine_all cidrs)