]> gitweb.michael.orlitzky.com - hath.git/commitdiff
Added the "diff" mode of operation.
authorMichael Orlitzky <michael@orlitzky.com>
Sat, 22 May 2010 17:34:49 +0000 (13:34 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Sat, 22 May 2010 17:34:49 +0000 (13:34 -0400)
src/CommandLine.hs
src/Main.hs

index 31ca768cfaa043b872168313bc5153548bc37a5f..7fc614a4205bb614ef0285496c3c121271b0a3ed 100644 (file)
@@ -21,11 +21,12 @@ lowercase :: String -> String
 lowercase = map toLower
 
 
--- The application currently has three modes. The default, Regex, will
+-- The application currently has four 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. Dupe will show you what would be removed by Reduce.
-data Mode = Regex | Reduce | Dupe
+-- into one. Dupe will show you what would be removed by Reduce, and
+-- Diff will show both additions and deletions in a diff-like format.
+data Mode = Regex | Reduce | Dupe | Diff
 
 
 -- A record containing values for all available options.
@@ -71,7 +72,7 @@ set_input arg opts = do
 
 -- The usage header
 usage :: String
-usage = "Usage: hath [regexed|reduced|duplicated] [-h] [-i FILE]"
+usage = "Usage: hath [regexed|reduced|duplicated|diffed] [-h] [-i FILE]"
 
 
 -- The usage header, and all available flags (as generated by GetOpt)
@@ -112,6 +113,8 @@ parse_mode = do
         "reduced"    -> return Reduce
         "dupe"       -> return Dupe
         "duplicated" -> return Dupe
+        "diff"       -> return Diff
+        "diffed"     -> return Diff
         _         -> return Regex
 
 
index eeee9f6b6fe07f4ae40b580e093c818042b253c9..25413cec9fdf024632911ac8e9a1dd169da83753 100644 (file)
@@ -137,3 +137,12 @@ main = do
          return ()
          where
            dupes = cidrs \\ (combine_all cidrs)
+    Diff -> do
+         mapM putStrLn deletions
+         mapM putStrLn additions
+         return ()
+         where
+           dupes = cidrs \\ (combine_all cidrs)
+           deletions = map (\s -> "-" ++ (show s)) dupes
+           newcidrs = (combine_all cidrs) \\ cidrs
+           additions = map (\s -> "+" ++ (show s)) newcidrs