diff options
| -rw-r--r-- | Main.hs | 5 | ||||
| -rw-r--r-- | Opts.hs | 9 |
2 files changed, 12 insertions, 2 deletions
@@ -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) @@ -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" |
