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}
|
return ${diffStatus}
|
||||||
) || msgDifference=1
|
) || msgDifference=1
|
||||||
|
|
||||||
|
if [[ $fix == 0 && $msgDifference != 0 ]]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
23
translate.hs
23
translate.hs
@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user