Bindist comparison tool: add --ignore-size-changes flag
authorIan Lynagh <igloo@earth.li>
Wed, 16 Mar 2011 22:07:48 +0000 (22:07 +0000)
committerIan Lynagh <igloo@earth.li>
Wed, 16 Mar 2011 22:07:48 +0000 (22:07 +0000)
distrib/compare/Problem.hs
distrib/compare/compare.hs

index 399e4f8..7854bc5 100644 (file)
@@ -11,6 +11,10 @@ data Problem = DuplicateFile FilePath
              | PermissionsChanged FilePath FilePath String String
              | FileSizeChanged FilePath FilePath Integer Integer
 
+isSizeChange :: FileProblem -> Bool
+isSizeChange (Change (FileSizeChanged {})) = True
+isSizeChange _ = False
+
 pprFileProblem :: FileProblem -> String
 pprFileProblem (First  p) = "First  " ++ pprProblem p
 pprFileProblem (Second p) = "Second " ++ pprProblem p
index b17faf0..14e83b6 100644 (file)
@@ -28,11 +28,12 @@ sizePercentage = 150
 main :: IO ()
 main = do args <- getArgs
           case args of
-              [bd1, bd2] -> doit bd1 bd2
+              [bd1, bd2]                          -> doit False bd1 bd2
+              ["--ignore-size-changes", bd1, bd2] -> doit True  bd1 bd2
               _ -> die ["Bad args. Need 2 bindists."]
 
-doit :: FilePath -> FilePath -> IO ()
-doit bd1 bd2
+doit :: Bool -> FilePath -> FilePath -> IO ()
+doit ignoreSizeChanges bd1 bd2
  = do tls1 <- readTarLines bd1
       tls2 <- readTarLines bd2
       ways1 <- dieOnErrors $ findWays tls1
@@ -49,7 +50,10 @@ doit bd1 bd2
           allProbs = map First nubProbs1 ++ map Second nubProbs2
                   ++ diffWays ways1 ways2
                   ++ differences
-      mapM_ (putStrLn . pprFileProblem) allProbs
+          wantedProbs = if ignoreSizeChanges
+                        then filter (not . isSizeChange) allProbs
+                        else allProbs
+      mapM_ (putStrLn . pprFileProblem) wantedProbs
 
 findWays :: [TarLine] -> Either Errors Ways
 findWays = foldr f (Left ["Couldn't find ways"])