diff options
author | Joris Guyonvarch | 2014-04-06 22:55:16 +0200 |
---|---|---|
committer | Joris | 2019-05-01 15:34:22 +0200 |
commit | 0fe906ae7453aa684e998bbcc7a78b62d84f0206 (patch) | |
tree | d3968af830b964193349187fb6fc583780cd0ce3 /src/PDF.hs | |
parent | 8b11c4be2b3ac354fa14534662dbd92374617a3e (diff) |
Show resume and projects from a configuration file
Diffstat (limited to 'src/PDF.hs')
-rw-r--r-- | src/PDF.hs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/PDF.hs b/src/PDF.hs new file mode 100644 index 0000000..a002b38 --- /dev/null +++ b/src/PDF.hs @@ -0,0 +1,41 @@ +{-# LANGUAGE OverloadedStrings #-} + +module PDF + ( generatePDFAt + ) where + +import Control.Exception (SomeException, try) +import System.Directory (copyFile, createDirectoryIfMissing) +import System.FilePath (takeDirectory) +import System.IO (hClose) +import System.IO.Temp (withTempFile) +import qualified System.Process as Process (callCommand) +import Text.LaTeX (LaTeX, renderFile) + +generatePDFAt :: FilePath -> LaTeX -> IO () +generatePDFAt path latex = do + (basePath, tmpPath) <- generatePDF latex + createDirectoryIfMissing True (takeDirectory path) + copyFile tmpPath path + Process.callCommand ("rm " ++ basePath ++ "*") + +generatePDF :: LaTeX -> IO (FilePath, FilePath) +generatePDF latex = + withTempFile "/tmp" "latex" $ \filePath handle -> do + hClose handle + renderFile filePath latex + renderFile "/home/joris/resume.tex" latex + pdfCommand filePath + pdfCommand filePath + return (filePath, filePath ++ ".pdf") + +pdfCommand :: String -> IO () +pdfCommand path = do + let command = "cd resume && pdflatex --output-directory /tmp " ++ path ++ " >/dev/null" + result <- try $ Process.callCommand command :: IO (Either SomeException ()) + case result of + Left err -> do + putStrLn "Error generating PDF:" + putStrLn (show err) + Right _ -> + return () |