14  use_quarto_ext()

Diagram

Code
use_quarto_ext <- function(out_name, ext_name = "document-fn") {

  # Check available extensions ------
  all_available_extensions <- list.dirs(
    system.file("extdata/_extensions/", package = "platen"),
    recursive = FALSE,
    full.names = FALSE
  )
  stopifnot("Extension not in package" = ext_name %in% all_available_extensions)

  # Various reading of key-value pairs for reporting ------
  ext_yml <- readLines(system.file(paste0("extdata/_extensions/", ext_name, "/_extension.yml"),
                                   package = "platen"))
  ext_ver <- gsub(
    x = ext_yml[grepl(x = ext_yml, pattern = "version:")],
    pattern = "version: ",
    replacement = ""
  )
  ext_nm <- gsub(
    x = ext_yml[grepl(x = ext_yml, pattern = "title:")],
    pattern = "title: ",
    replacement = ""
  )

  # Create folder for recursive copying into ahead of time ------
  dir.create(here::here(ext_name))

  # Copy from internals ------
  file.copy(
    from = system.file(paste0("extdata/_extensions/", ext_name), package = "platen"),
    to = here::here(),
    overwrite = TRUE,
    recursive = TRUE,
    copy.mode = TRUE
  )

  # Rename ------
  file.rename(
    here::here(ext_name),
    here::here(out_name)
  )

  message(paste(ext_nm, "v", ext_ver, "was installed to ", ext_name," folder in project directory."))
}