@@ -45,6 +45,8 @@ import Control.Exception (catch, try, throwIO, fromException, displayException)
4545import Control.Concurrent (setNumCapabilities )
4646import System.Console.ANSI (setSGRCode , SGR (.. ), ConsoleLayer (.. ), Color (.. ), ColorIntensity (.. ))
4747import System.Exit (exitSuccess , exitFailure , ExitCode (.. ))
48+ import qualified UnliftIO.Exception
49+ import qualified Control.Monad.Except
4850
4951import Control.Monad.Trans.Resource
5052
279281 writeCWL sc fname cwlname
280282 exitSuccess
281283 outputListLno' InfoOutput [" Script OK. Starting interpretation..." ]
282- interpret modules (nglBody transformed)
283- triggerHook FinishOkHook
284- whenM (nConfCreateReportDirectory <$> nglConfiguration) $ do
285- odir <- nConfReportDirectory <$> nglConfiguration
286- liftIO $ createDirectoryIfMissing False odir
287- liftIO $ setupHtmlViewer odir
288- liftIO $ T. writeFile (odir </> " script.ngl" ) ngltext
289- writeOutputJS odir fname ngltext
290- writeOutputTSV False (Just $ odir </> " fq.tsv" ) (Just $ odir </> " mappings.tsv" )
284+ UnliftIO.Exception. try (interpret modules (nglBody transformed)) >>= \ case
285+ Left e -> case fromException e of
286+ Just ec -> liftIO $ throwIO (ec :: ExitCode ) -- rethrow
287+ Nothing -> case fromException e of
288+ Just e@ NGError {} -> Control.Monad.Except. throwError e
289+ Nothing -> do
290+ outputListLno' ErrorOutput [show e]
291+ liftIO $ do
292+ triggerFailHook
293+ fatalError (show e)
294+ Right () -> do
295+ triggerHook FinishOkHook
296+ whenM (nConfCreateReportDirectory <$> nglConfiguration) $ do
297+ odir <- nConfReportDirectory <$> nglConfiguration
298+ liftIO $ createDirectoryIfMissing False odir
299+ liftIO $ setupHtmlViewer odir
300+ liftIO $ T. writeFile (odir </> " script.ngl" ) ngltext
301+ writeOutputJS odir fname ngltext
302+ writeOutputTSV False (Just $ odir </> " fq.tsv" ) (Just $ odir </> " mappings.tsv" )
291303 exitSuccess
292304
293305
0 commit comments