Files
Rpacman/R/snapshot_create.R

47 lines
1.5 KiB
R

# Requires snapshot_latest.R
# Requires utils.R
# Requires compile_imports.R
#' Create a snapshot of the project packages. Does not save the snapshot (see snapshot_save)
#'
#' @param installOpts list Installer options for use when installing CRAN
#' packages
#'
#' @return A list containing the current state of the project packages
#' @import parallel
#' @export
snapshot_create <- function(installOpts = list(Ncpus = parallel::detectCores())) {
old_opt <- options(stringsAsFactors = FALSE)
on.exit(options(old_opt))
lastSnapshot <- snapshot_latest()
customSources <- empty_sources()
if (!is.null(lastSnapshot) && "custom" %in% names(lastSnapshot$packages)) {
customSources <- rbind(
customSources,
do.call(rbind, lapply(lastSnapshot$packages$custom, data.frame))
)
}
packages <- compile_imports(customSources, installOpts)
names(packages) <- c("core", "direct", "indirect", "custom", "install_order")
if (nrow(packages$core) == 0) {
packages$core <- NULL
}
if (nrow(packages$direct) == 0) {
packages$direct <- NULL
}
if (nrow(packages$indirect) == 0) {
packages$indirect <- NULL
}
if (nrow(packages$custom) == 0) {
packages$custom <- NULL
}
description <- trimws(readline("Please provide a description for the snapshot (optional): "))
return(list(
timestamp = Sys.time(),
description = description,
R_version = paste(R.version$major, R.version$minor, sep = "."),
packages = packages
))
}