X-Git-Url: https://git.arvados.org/rnaseq-cwl-training.git/blobdiff_plain/3de94867133c1436c6d6dc9ea9565354d5bc2c53..ac2d0d57eac188a4644ec288e89669579baff41c:/bin/generate_md_episodes.R diff --git a/bin/generate_md_episodes.R b/bin/generate_md_episodes.R index 91bf512..f2a40ba 100644 --- a/bin/generate_md_episodes.R +++ b/bin/generate_md_episodes.R @@ -1,15 +1,36 @@ -if (require("knitr")) { - if (packageVersion("knitr") < '1.9.19') { +generate_md_episodes <- function() { + + if (require("knitr") && packageVersion("knitr") < '1.9.19') stop("knitr must be version 1.9.20 or higher") + + if (!require("stringr")) + stop("The package stringr is required for generating the lessons.") + + if (require("checkpoint") && packageVersion("checkpoint") >= '0.4.0') { + required_pkgs <- + checkpoint:::scanForPackages(project = "_episodes_rmd", + verbose=FALSE, use.knitr = TRUE)$pkgs + } else { + stop("The checkpoint package (>= 0.4.0) is required to build the lessons.") } -} else stop("knitr 1.9.20 or above is needed to build the lessons.") -if (!require("stringr")) - stop("The package stringr is required for generating the lessons.") + missing_pkgs <- required_pkgs[!(required_pkgs %in% rownames(installed.packages()))] -src_rmd <- list.files(pattern = "??-*.Rmd$", path = "_episodes_rmd", full.names = TRUE) -dest_md <- file.path("_episodes", gsub("Rmd$", "md", basename(src_rmd))) + if (length(missing_pkgs)) { + message("Installing missing required packages: ", + paste(missing_pkgs, collapse=", ")) + install.packages(missing_pkgs) + } + + ## find all the Rmd files, and generate the paths for their respective outputs + src_rmd <- list.files(pattern = "??-*.Rmd$", path = "_episodes_rmd", full.names = TRUE) + dest_md <- file.path("_episodes", gsub("Rmd$", "md", basename(src_rmd))) + + ## knit the Rmd into markdown + mapply(function(x, y) { + knitr::knit(x, output = y) + }, src_rmd, dest_md) -for (i in seq_along(src_rmd)) { - knitr::knit(src_rmd[i], output = dest_md[i]) } + +generate_md_episodes()