gnuplot-0.5.7: src/Graphics/Gnuplot/Private/Command.hs
module Graphics.Gnuplot.Private.Command where
import qualified Graphics.Gnuplot.Private.File as File
import qualified Graphics.Gnuplot.Execute as Exec
import System.Exit (ExitCode(ExitSuccess), )
import Control.Concurrent (forkIO, )
import System.IO.Temp (withSystemTempDirectory, )
import Control.DeepSeq (deepseq, )
import Control.Functor.HT (void, )
run ::
(File.C file) =>
(FilePath -> ([String], [file])) -> IO ExitCode
run render =
withSystemTempDirectory "gnuplot" $ \dir ->
case render dir of
(cmds, files) -> deepseq cmds $ do
mapM_ File.write files
Exec.simple (cmds ++ ["pause mouse close"]) []
asyncIfInteractive :: Bool -> IO ExitCode -> IO ExitCode
asyncIfInteractive interactive act =
if interactive
then fmap (const ExitSuccess) $ forkIO $ void act
else act