summaryrefslogtreecommitdiff
path: root/distrib/compare/Change.hs
diff options
context:
space:
mode:
Diffstat (limited to 'distrib/compare/Change.hs')
-rw-r--r--distrib/compare/Change.hs43
1 files changed, 43 insertions, 0 deletions
diff --git a/distrib/compare/Change.hs b/distrib/compare/Change.hs
new file mode 100644
index 0000000000..a89517ceb5
--- /dev/null
+++ b/distrib/compare/Change.hs
@@ -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
+