@@ -6,13 +6,10 @@ import Control.Monad.Catch
66 ( MonadCatch
77 , SomeException
88 , displayException
9- , finally
109 , handle
1110 , throwM
1211 )
13- import Control.Monad.Trans
14- ( lift
15- )
12+ import Control.Monad.Extra as Monad
1613import qualified Data.Char as Char
1714import Data.Default
1815 ( def
@@ -73,6 +70,9 @@ import System.Exit
7370 ( ExitCode (.. )
7471 , exitWith
7572 )
73+ import System.FilePath
74+ ( (</>)
75+ )
7676import System.IO
7777 ( IOMode (WriteMode )
7878 , withFile
@@ -81,9 +81,6 @@ import System.IO
8181import qualified Data.Limit as Limit
8282import Kore.Attribute.Symbol as Attribute
8383import Kore.BugReport
84- ( BugReport (.. )
85- , parseBugReport
86- )
8784import Kore.Exec
8885import Kore.IndexedModule.IndexedModule
8986 ( VerifiedModule
@@ -117,7 +114,6 @@ import Kore.Log
117114 , LogMessage
118115 , SomeEntry (.. )
119116 , WithLog
120- , archiveDirectoryReport
121117 , logEntry
122118 , parseKoreLogOptions
123119 , runKoreLog
@@ -178,12 +174,8 @@ import SMT
178174 )
179175import qualified SMT
180176import Stats
181- import qualified System.IO.Temp as Temp
182177
183178import GlobalMain
184- import System.FilePath.Posix
185- ( (</>)
186- )
187179
188180{-
189181Main module to run kore-exec
@@ -504,9 +496,14 @@ writeKoreMergeFiles reportFile KoreMergeOptions { rulesFileName } =
504496 copyFile rulesFileName $ reportFile <> " /mergeRules.kore"
505497
506498writeKoreProveFiles :: FilePath -> KoreProveOptions -> IO ()
507- writeKoreProveFiles reportFile KoreProveOptions { specFileName, saveProofs } = do
508- copyFile specFileName $ reportFile <> " /spec.kore"
509- Foldable. forM_ saveProofs $ flip copyFile (reportFile <> " /saveProofs.kore" )
499+ writeKoreProveFiles reportFile koreProveOptions = do
500+ let KoreProveOptions { specFileName } = koreProveOptions
501+ copyFile specFileName (reportFile </> " spec.kore" )
502+ let KoreProveOptions { saveProofs } = koreProveOptions
503+ Foldable. forM_ saveProofs $ \ filePath ->
504+ Monad. whenM
505+ (doesFileExist filePath)
506+ (copyFile filePath (reportFile </> " save-proofs.kore" ))
510507
511508writeOptionsAndKoreFiles :: FilePath -> KoreExecOptions -> IO ()
512509writeOptionsAndKoreFiles
@@ -548,34 +545,31 @@ writeOptionsAndKoreFiles
548545 koreProveOptions
549546 (writeKoreProveFiles reportDirectory)
550547
548+ exeName :: ExeName
549+ exeName = ExeName " kore-exec"
550+
551551-- TODO(virgil): Maybe add a regression test for main.
552552-- | Loads a kore definition file and uses it to execute kore programs
553553main :: IO ()
554554main = do
555- options <-
556- mainGlobal (ExeName " kore-exec" ) parseKoreExecOptions parserInfoModifiers
555+ options <- mainGlobal Main. exeName parseKoreExecOptions parserInfoModifiers
557556 Foldable. forM_ (localOptions options) mainWithOptions
558557
559558mainWithOptions :: KoreExecOptions -> IO ()
560559mainWithOptions execOptions = do
561560 let KoreExecOptions { koreLogOptions, bugReport } = execOptions
562- Temp. withSystemTempDirectory
563- (fromMaybe " report" $ toReport bugReport)
564- $ \ tempDirectory -> do
565- traceM tempDirectory
566- exitCode <-
567- runKoreLog tempDirectory koreLogOptions
568- $ handle (handleSomeException tempDirectory)
569- $ handle handleSomeEntry
570- $ handle handleWithConfiguration go
571- let KoreExecOptions { rtsStatistics } = execOptions
572- Foldable. forM_ rtsStatistics $ \ filePath ->
573- writeStats filePath =<< getStats
574- let reportPath = maybe tempDirectory (" ./" <> ) (toReport bugReport)
575- finally
576- (writeInReportDirectory tempDirectory)
577- (archiveDirectoryReport tempDirectory reportPath)
578- exitWith exitCode
561+ exitCode <-
562+ withBugReport Main. exeName bugReport $ \ tmpDir -> do
563+ writeOptionsAndKoreFiles tmpDir execOptions
564+ go
565+ & handle handleWithConfiguration
566+ & handle handleSomeEntry
567+ & handle (handleSomeException tmpDir)
568+ & runKoreLog tmpDir koreLogOptions
569+ let KoreExecOptions { rtsStatistics } = execOptions
570+ Foldable. forM_ rtsStatistics $ \ filePath ->
571+ writeStats filePath =<< getStats
572+ exitWith exitCode
579573 where
580574 KoreExecOptions { koreProveOptions } = execOptions
581575 KoreExecOptions { koreSearchOptions } = execOptions
@@ -621,13 +615,6 @@ mainWithOptions execOptions = do
621615 | otherwise =
622616 koreRun execOptions
623617
624- writeInReportDirectory :: FilePath -> IO ()
625- writeInReportDirectory tempDirectory = do
626- when . isJust . toReport . bugReport
627- <*> writeOptionsAndKoreFiles tempDirectory $ execOptions
628- Foldable. forM_ (outputFileName execOptions)
629- $ flip copyFile (tempDirectory <> " /outputFile.kore" )
630-
631618koreSearch :: KoreExecOptions -> KoreSearchOptions -> Main ExitCode
632619koreSearch execOptions searchOptions = do
633620 let KoreExecOptions { definitionFileName } = execOptions
0 commit comments