R/write-makefile.R

Defines functions write_makefile get_target_dir

#' Read a package web
#'
#' This function reads a web of packages.
#'
#' @inheritParams makify
#'
#' @importFrom magrittr %>%
#' @importFrom MakefileR makefile
#' @export
write_makefile <- function(web = rpkgweb(), target_dir = NULL, lib_dir = NULL) {
  web <- as.rpkgweb(web)

  target_dir <- get_target_dir(web, target_dir)

  makefile_text <-
    web %>%
    makify(target_dir = target_dir, lib_dir = lib_dir) %>%
    makefile %>%
    format

  makefile_name <- file.path(target_dir, "Makefile")
  old_makefile_text <- if (file.exists(makefile_name)) readLines(makefile_name)

  if (!isTRUE(all.equal(makefile_text, old_makefile_text))) {
    writeLines(makefile_text, makefile_name)
  } else {
    message("Contents of ", makefile_name, " unchanged.")
    Sys.setFileTime(makefile_name, Sys.time())
  }
}

get_target_dir <- function(web, target_dir) {
  if (is.null(target_dir)) {
    root_dir(web)
  } else {
    normalize_path(target_dir)
  }
}
krlmlr/rpkgweb documentation built on May 20, 2019, 6:18 p.m.