From 0fe906ae7453aa684e998bbcc7a78b62d84f0206 Mon Sep 17 00:00:00 2001 From: Joris Guyonvarch Date: Sun, 6 Apr 2014 22:55:16 +0200 Subject: Show resume and projects from a configuration file --- src/PDF.hs | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/PDF.hs (limited to 'src/PDF.hs') 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 () -- cgit v1.2.3