Skip to content

Instantly share code, notes, and snippets.

@fryguybob
Created October 14, 2016 15:16
Show Gist options
  • Save fryguybob/5d6c5992deb604e807245f5eb7524d47 to your computer and use it in GitHub Desktop.
Save fryguybob/5d6c5992deb604e807245f5eb7524d47 to your computer and use it in GitHub Desktop.
{-# LANGUAGE NoMonomorphismRestriction #-}
import Development.Shake
import Development.Shake.Command
import Development.Shake.FilePath
import Development.Shake.Util
import Control.Monad (forM_)
base = "IFL2016"
name = "ryates-" ++ base
backup = "slides" </> (name ++ "-backup") <.> "tex"
slides = "slides" </> name <.> "tex"
main :: IO ()
main = shakeArgs shakeOptions{shakeFiles="_build"} $ do
want [slides -<.> ".pdf"]
phony "clean" $ do
putNormal "Cleaning files in _build"
removeFilesAfter "images" ["*.pgf"]
removeFilesAfter "slides/images" ["*.pgf"]
removeFilesAfter "slides" ["*.tex"]
removeFilesAfter "_build" ["//*"]
backup %> \out -> do
let md = dropDirectory1 (out -<.> "md")
need [md]
cmd "pandoc -f markdown -t beamer"
"--filter diagrams-pandoc"
[md] "-o" [out]
slides %> \out -> do
let md = dropDirectory1 (out -<.> "md")
need [md, backup, "default.beamer", "Structs.hs"]
cmd "pandoc -f markdown -t beamer" [md]
"--template default.beamer"
"-V theme:Rochester"
"-V" ["institute:\"University of Rochester\""]
"--standalone"
"--filter diagrams-pandoc"
"-o" [out]
"-A" [backup] :: Action ()
ds <- getDirectoryFiles "" ["images" </> "*.pgf"]
forM_ ds $ \f -> copyFile' f ("slides" </> f)
slides -<.> ".pdf" %> \out -> do
need [slides]
fs <- getDirectoryFiles "" ["slides/figures" </> "*.tex"]
dats <- getDirectoryFiles "" ["slides/figures" </> "*.dat"]
qrs <- getDirectoryFiles "" ["slides/images" </> "*.png"]
need (fs ++ dats ++ qrs)
cmd (Cwd "slides") "pdflatex" [name] :: Action ()
cmd (Cwd "slides") "bibtex" [name] :: Action ()
cmd (Cwd "slides") "pdflatex" [name] :: Action ()
cmd (Cwd "slides") "pdflatex" [name] :: Action ()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment