diffdriver --text support options for diff

Sponsored-by: KDM on Patreon
This commit is contained in:
Joey Hess 2023-07-05 15:43:29 -04:00
parent 4195acc012
commit 3d810726af
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
3 changed files with 11 additions and 6 deletions

View file

@ -70,7 +70,9 @@ serializeReq req@(Req {}) = map Param
parseReq :: Options -> (Req, Differ)
parseReq opts
| textDiff opts = (mk (restOptions opts), textDiffer)
| textDiff opts = case separate (== "--") (restOptions opts) of
(_,[]) -> (mk (restOptions opts), textDiffer [])
(ps,rest) -> (mk rest, textDiffer ps)
| otherwise = case separate (== "--") (restOptions opts) of
(c:ps, l) -> (mk l, externalDiffer c ps)
([],_) -> badopts
@ -117,13 +119,13 @@ fixupReq req@(Req {}) =
externalDiffer :: String -> [String] -> Differ
externalDiffer c ps = \req -> boolSystem c (map Param ps ++ serializeReq req )
textDiffer :: Differ
textDiffer req = do
textDiffer :: [String] -> Differ
textDiffer diffopts req = do
putStrLn ("diff a/" ++ rPath req ++ " b/" ++ rPath req)
-- diff exits nonzero on difference, so ignore exit status
void $ boolSystem "diff"
void $ boolSystem "diff" $
[ Param "-u"
, Param (rOldFile req)
, Param (rNewFile req)
]
] ++ map Param diffopts
return True