47 lines
1.5 KiB
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
|
|
))
|
|
}
|