aboutsummaryrefslogtreecommitdiff
path: root/src/PDF.hs
diff options
context:
space:
mode:
authorJoris Guyonvarch2014-04-06 22:55:16 +0200
committerJoris2019-05-01 15:34:22 +0200
commit0fe906ae7453aa684e998bbcc7a78b62d84f0206 (patch)
treed3968af830b964193349187fb6fc583780cd0ce3 /src/PDF.hs
parent8b11c4be2b3ac354fa14534662dbd92374617a3e (diff)
Show resume and projects from a configuration file
Diffstat (limited to 'src/PDF.hs')
-rw-r--r--src/PDF.hs41
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 ()