chore(translate): fix behaviour for errors
This commit is contained in:
parent
0a6f403f6b
commit
25a5b9a750
@ -92,6 +92,10 @@ for msgDirectory (${msgDirectories}); do
|
||||
|
||||
return ${diffStatus}
|
||||
) || msgDifference=1
|
||||
|
||||
if [[ $fix == 0 && $msgDifference != 0 ]]; then
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
|
||||
23
translate.hs
23
translate.hs
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user