allow picking patches from files

This commit is contained in:
Mirek Kratochvil 2025-07-23 10:50:17 +02:00
parent 259ad6101b
commit b52b106ac5
2 changed files with 12 additions and 2 deletions

View file

@ -344,7 +344,10 @@ runCmd CmdPatch {..} cfg = do
withSystemTempDirectory "werge-patch" $ \workdir -> do
let f = workdir </> "file"
bracketFile patchMy ReadMode $ \h -> hSplitToFile cfg h f
_ <- runPatch f stdin
_ <-
case patchInput of
Nothing -> runPatch f stdin
Just path -> bracketFile path ReadMode $ runPatch f
conflicted <- pmerge f >>= format cfg stdout -- TODO try to resolve more?
if conflicted
then exitWith (ExitFailure 1)

View file

@ -230,6 +230,7 @@ data Command
}
| CmdPatch
{ patchMy :: FilePath
, patchInput :: Maybe FilePath
}
| CmdBreak
| CmdGlue
@ -295,6 +296,12 @@ cmdDiff = do
cmdPatch :: Parser Command
cmdPatch = do
patchMy <- strArgument $ metavar "MYFILE" <> help "File to be modified"
patchInput <-
optional . strOption
$ long "patch"
<> short 'p'
<> metavar "PATCH"
<> help "File with the patch (default: stdin)"
pure CmdPatch {..}
-- TODO have some option to output the (partially merged) my/old/your files so
@ -314,7 +321,7 @@ cmd =
$ progDesc "Find differences between two files"
, command "patch"
$ info cmdPatch
$ progDesc "Apply a patch from `diff' to file"
$ progDesc "Modify a file using a patch from `diff'"
, command "break"
$ info (pure CmdBreak)
$ progDesc "Break text to tokens"