Remove software carpentries logo
[rnaseq-cwl-training.git] / bin / generate_md_episodes.R
index e2592c22ea4b4e2f3318c08376abfb52f0f2eb77..7fb4c5a53312c9546c1a8b18d111c1b1a6cce8e2 100644 (file)
@@ -1,34 +1,11 @@
 generate_md_episodes <- function() {
 
-  library("methods")
-  
-  if (!require("remotes")) {
-    stop("The `remotes` package is needed.")
-  }
-
-  if (!require("requirements")) {
-    remotes::install_github("hadley/requirements")
-  }
-
-  required_pkgs <- unique(c(
-    ## Packages for episodes
-    requirements:::req_dir("_episodes_rmd"),
-    ## Pacakges for tools
-    requirements:::req_dir("bin")
-  ))
-
-  missing_pkgs <- setdiff(required_pkgs, rownames(installed.packages()))
-
-  if (length(missing_pkgs)) {
-    message("Installing missing required packages: ",
-            paste(missing_pkgs, collapse=", "))
-    install.packages(missing_pkgs)
-  }
-
-  if (require("knitr") && packageVersion("knitr") < '1.9.19')
-    stop("knitr must be version 1.9.20 or higher")
-
-  ## get the Rmd file to process from the command line, and generate the path for their respective outputs
+  # avoid ansi color characters from being printed in the output
+  op <- options()
+  on.exit(options(op), add = TRUE)
+  options(crayon.enabled = FALSE)
+  ## get the Rmd file to process from the command line, and generate the path
+  ## for their respective outputs
   args  <- commandArgs(trailingOnly = TRUE)
   if (!identical(length(args), 2L)) {
     stop("input and output file must be passed to the script")
@@ -40,20 +17,28 @@ generate_md_episodes <- function() {
   ## knit the Rmd into markdown
   knitr::knit(src_rmd, output = dest_md)
 
-    # Read the generated md files and add comments advising not to edit them
-    vapply(dest_md, function(y) {
-      con <- file(y)
-      mdfile <- readLines(con)
-      if (mdfile[1] != "---")
-        stop("Input file does not have a valid header")
-      mdfile <- append(mdfile, "# Please do not edit this file directly; it is auto generated.", after = 1)
-      mdfile <- append(mdfile, paste("# Instead, please edit",
-                                     basename(y), "in _episodes_rmd/"), after = 2)
-      writeLines(mdfile, con)
-      close(con)
-      return(paste("Warning added to YAML header of", y))
-    },
-    character(1))
+  # Read the generated md files and add comments advising not to edit them
+  add_no_edit_comment <- function(y) {
+    con <- file(y)
+    mdfile <- readLines(con)
+    if (mdfile[1] != "---")
+      stop("Input file does not have a valid header")
+    mdfile <- append(
+      mdfile,
+      "# Please do not edit this file directly; it is auto generated.",
+      after = 1
+    )
+    mdfile <- append(
+      mdfile,
+      paste("# Instead, please edit", basename(y), "in _episodes_rmd/"),
+      after = 2
+    )
+    writeLines(mdfile, con)
+    close(con)
+    return(paste("Warning added to YAML header of", y))
+  }
+
+  vapply(dest_md, add_no_edit_comment, character(1))
 }
 
 generate_md_episodes()