bindist checker improvements
[ghc-hetmet.git] / distrib / compare / Change.hs
diff --git a/distrib/compare/Change.hs b/distrib/compare/Change.hs
new file mode 100644 (file)
index 0000000..a89517c
--- /dev/null
@@ -0,0 +1,43 @@
+
+module Change where
+
+data FileChange = First  Change
+                | Second Change
+                | Change Change
+
+data Change = DuplicateFile FilePath
+            | ExtraFile FilePath
+            | ExtraWay String
+            | ExtraThing String
+            | ThingVersionChanged String String String
+            | PermissionsChanged FilePath FilePath String String
+            | FileSizeChanged FilePath FilePath Integer Integer
+
+isSizeChange :: FileChange -> Bool
+isSizeChange (Change (FileSizeChanged {})) = True
+isSizeChange _ = False
+
+pprFileChange :: FileChange -> String
+pprFileChange (First  p) = "First  " ++ pprChange p
+pprFileChange (Second p) = "Second " ++ pprChange p
+pprFileChange (Change p) = "Change " ++ pprChange p
+
+pprChange :: Change -> String
+pprChange (DuplicateFile fp) = "Duplicate file: " ++ show fp
+pprChange (ExtraFile fp) = "Extra file: " ++ show fp
+pprChange (ExtraWay w) = "Extra way: " ++ show w
+pprChange (ExtraThing t) = "Extra thing: " ++ show t
+pprChange (ThingVersionChanged t v1 v2)
+    = "Version changed for " ++ show t ++ ":\n"
+   ++ "    " ++ v1 ++ "  ->  " ++ v2
+pprChange (PermissionsChanged fp1 fp2 p1 p2)
+    = "Permissions changed:\n"
+   ++ "    " ++ show fp1
+   ++ "    " ++ show fp2
+   ++ "    " ++ p1 ++ "  ->  " ++ p2
+pprChange (FileSizeChanged fp1 fp2 s1 s2)
+    = "Size changed:\n"
+   ++ "    " ++ show fp1 ++ "\n"
+   ++ "    " ++ show fp2 ++ "\n"
+   ++ "    " ++ show s1 ++ "  ->  " ++ show s2
+