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} return ${diffStatus}
) || msgDifference=1 ) || msgDifference=1
if [[ $fix == 0 && $msgDifference != 0 ]]; then
exit 1
fi
done done

View File

@ -16,7 +16,6 @@
import Data.Text (Text) import Data.Text (Text)
import qualified Data.Text.IO as Text import qualified Data.Text.IO as Text
import qualified Data.Text as Text import qualified Data.Text as Text
import qualified Data.Text.Encoding as Text
import Data.HashSet (HashSet) import Data.HashSet (HashSet)
import qualified Data.HashSet as HashSet import qualified Data.HashSet as HashSet
@ -24,7 +23,7 @@ import qualified Data.HashSet as HashSet
import Data.HashMap.Strict (HashMap) import Data.HashMap.Strict (HashMap)
import qualified Data.HashMap.Strict as 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 import Numeric.Natural
@ -50,9 +49,9 @@ import System.FilePath hiding (combine)
import System.Directory import System.Directory
import System.Process import System.Process
import System.IO (hPutStrLn, stderr) import System.IO
import System.Exit import System.Exit
import System.IO.Temp (writeSystemTempFile) import System.IO.Temp (withSystemTempFile, writeSystemTempFile)
import Data.Ord (Down(..)) import Data.Ord (Down(..))
@ -251,10 +250,10 @@ combine f1 f2 = insertMissing f1 f2 >> insertMissing f2 f1
[ "# Translate from: " <> Text.pack (msgFile f1') [ "# Translate from: " <> Text.pack (msgFile f1')
, "# Target: " <> Text.pack (msgFile f2') , "# 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 unless (null missing) $ do
responseBS <- runUserEditorDWIM (mkTemplate "msg") queryBS response <- runUserEditor (mkTemplate "msg") query
let responseMsgs = readMsgText "" $ Text.decodeUtf8 responseBS let responseMsgs = readMsgText "" response
insertIntoFile f2' f1' responseMsgs insertIntoFile f2' f1' responseMsgs
@ -299,3 +298,13 @@ translateFrom from to = do
flip onError (removeFile to) $ do flip onError (removeFile to) $ do
copyFile from to copyFile from to
callProcess editor [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