chore(translate): fix behaviour for errors

This commit is contained in:
Gregor Kleen 2020-03-15 16:20:46 +01:00
parent 0a6f403f6b
commit 25a5b9a750
2 changed files with 20 additions and 7 deletions

View File

@ -92,6 +92,10 @@ for msgDirectory (${msgDirectories}); do
return ${diffStatus}
) || msgDifference=1
if [[ $fix == 0 && $msgDifference != 0 ]]; then
exit 1
fi
done

View File

@ -16,7 +16,6 @@
import Data.Text (Text)
import qualified Data.Text.IO as Text
import qualified Data.Text as Text
import qualified Data.Text.Encoding as Text
import Data.HashSet (HashSet)
import qualified Data.HashSet as HashSet
@ -24,7 +23,7 @@ import qualified Data.HashSet as HashSet
import Data.HashMap.Strict (HashMap)
import qualified Data.HashMap.Strict as HashMap
import Text.Editor (mkTemplate, runUserEditorDWIM, userEditorDefault, _default_editor)
import Text.Editor (Template, mkTemplate, userEditorDefault, _default_editor)
import Numeric.Natural
@ -50,9 +49,9 @@ import System.FilePath hiding (combine)
import System.Directory
import System.Process
import System.IO (hPutStrLn, stderr)
import System.IO
import System.Exit
import System.IO.Temp (writeSystemTempFile)
import System.IO.Temp (withSystemTempFile, writeSystemTempFile)
import Data.Ord (Down(..))
@ -251,10 +250,10 @@ combine f1 f2 = insertMissing f1 f2 >> insertMissing f2 f1
[ "# Translate from: " <> Text.pack (msgFile f1')
, "# Target: " <> Text.pack (msgFile f2')
]
queryBS = Text.encodeUtf8 . (Text.unlines . (header :) . pure) . Text.unlines $ map renderMsg missing
query = (Text.unlines . (header :) . pure) . Text.unlines $ map renderMsg missing
unless (null missing) $ do
responseBS <- runUserEditorDWIM (mkTemplate "msg") queryBS
let responseMsgs = readMsgText "" $ Text.decodeUtf8 responseBS
response <- runUserEditor (mkTemplate "msg") query
let responseMsgs = readMsgText "" response
insertIntoFile f2' f1' responseMsgs
@ -299,3 +298,13 @@ translateFrom from to = do
flip onError (removeFile to) $ do
copyFile from to
callProcess editor [to]
runUserEditor :: Template -> Text -> IO Text
runUserEditor templ initialContents = withSystemTempFile templ $ \filePath hdl -> do
editor <- userEditorDefault _default_editor
hSetBuffering hdl NoBuffering
Text.hPutStr hdl initialContents
hClose hdl
callProcess editor [filePath]
Text.readFile filePath