Slightly less clunky handling of stringsAsFactors
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
Package: Rpacman
|
Package: Rpacman
|
||||||
Type: Package
|
Type: Package
|
||||||
Title: Very simple package manager for R
|
Title: Very simple package manager for R
|
||||||
Version: 1.0.9
|
Version: 1.0.10
|
||||||
Date: 2022-05-31
|
Date: 2022-05-31
|
||||||
Authors@R: person("Craig", "Williams", email = "craig@avsdev.uk", role = c("aut", "cre"))
|
Authors@R: person("Craig", "Williams", email = "craig@avsdev.uk", role = c("aut", "cre"))
|
||||||
URL: https://avsdev.uk/R/Rpacman
|
URL: https://avsdev.uk/R/Rpacman
|
||||||
|
|||||||
@@ -2,10 +2,8 @@
|
|||||||
|
|
||||||
#' Add a package to the project.
|
#' Add a package to the project.
|
||||||
#'
|
#'
|
||||||
#' @param packageName boolean Only refer to the pacman library, do not use
|
#' @param packageName character Name of the package to add
|
||||||
#' any user library paths
|
#' @param installOpts list Options for installing the package
|
||||||
#' @param installOpts boolean Only refer to the pacman library, do not use
|
|
||||||
#' any user library paths
|
|
||||||
#'
|
#'
|
||||||
add_package <- function(packageName = NULL, installOpts = list(Ncpus = parallel::detectCores())) {
|
add_package <- function(packageName = NULL, installOpts = list(Ncpus = parallel::detectCores())) {
|
||||||
if (is.null(packageName)) {
|
if (is.null(packageName)) {
|
||||||
|
|||||||
@@ -7,6 +7,9 @@
|
|||||||
|
|
||||||
#' @import parallel
|
#' @import parallel
|
||||||
.solve_missing_imports <- function(missingImports, installOpts = list(Ncpus = parallel::detectCores())) {
|
.solve_missing_imports <- function(missingImports, installOpts = list(Ncpus = parallel::detectCores())) {
|
||||||
|
old_opt <- options(stringsAsFactors = FALSE)
|
||||||
|
on.exit(options(old_opt))
|
||||||
|
|
||||||
importsFormat <- data.frame(list(
|
importsFormat <- data.frame(list(
|
||||||
package_name = unlist(lapply(missingImports$package, format_str, width = 35)),
|
package_name = unlist(lapply(missingImports$package, format_str, width = 35)),
|
||||||
req_ver = unlist(lapply(missingImports$req_version, format_str, width = 12)),
|
req_ver = unlist(lapply(missingImports$req_version, format_str, width = 12)),
|
||||||
@@ -66,17 +69,20 @@
|
|||||||
)))
|
)))
|
||||||
}
|
}
|
||||||
|
|
||||||
do.call(rbind, c(fixedImports, stringsAsFactors = FALSE))
|
do.call(rbind, fixedImports)
|
||||||
}
|
}
|
||||||
|
|
||||||
.install_order <- function(dependsTree) {
|
.install_order <- function(dependsTree) {
|
||||||
|
old_opt <- options(stringsAsFactors = FALSE)
|
||||||
|
on.exit(options(old_opt))
|
||||||
|
|
||||||
dependsPackages <- lapply(unique(dependsTree$package), function(p) {
|
dependsPackages <- lapply(unique(dependsTree$package), function(p) {
|
||||||
package <- dependsTree[dependsTree$package == p,]
|
package <- dependsTree[dependsTree$package == p,]
|
||||||
package <- package[package$generation == max(package$generation),]
|
package <- package[package$generation == max(package$generation),]
|
||||||
package <- package[1,c("package", "version", "generation")]
|
package <- package[1,c("package", "version", "generation")]
|
||||||
return(package)
|
return(package)
|
||||||
})
|
})
|
||||||
dependsPackages <- do.call(rbind, c(dependsPackages, stringsAsFactors = FALSE))
|
dependsPackages <- do.call(rbind, dependsPackages)
|
||||||
|
|
||||||
dependsOrder <- sort(dependsPackages$generation, index.return = T, decreasing = T)$ix
|
dependsOrder <- sort(dependsPackages$generation, index.return = T, decreasing = T)$ix
|
||||||
dependsOrder <- dependsPackages[dependsOrder,]
|
dependsOrder <- dependsPackages[dependsOrder,]
|
||||||
@@ -101,6 +107,9 @@
|
|||||||
#' import sources.
|
#' import sources.
|
||||||
#' @export
|
#' @export
|
||||||
compile_imports <- function(custom_sources = empty_sources(), installOpts = list(Ncpus = parallel::detectCores())) {
|
compile_imports <- function(custom_sources = empty_sources(), installOpts = list(Ncpus = parallel::detectCores())) {
|
||||||
|
old_opt <- options(stringsAsFactors = FALSE)
|
||||||
|
on.exit(options(old_opt))
|
||||||
|
|
||||||
CORE_PACKAGES <- c(
|
CORE_PACKAGES <- c(
|
||||||
"base", "compiler", "datasets", "graphics", "grDevices", "grid", "methods",
|
"base", "compiler", "datasets", "graphics", "grDevices", "grid", "methods",
|
||||||
"parallel", "splines", "stats", "stats4", "tcltk", "tools", "utils"
|
"parallel", "splines", "stats", "stats4", "tcltk", "tools", "utils"
|
||||||
@@ -172,7 +181,7 @@ compile_imports <- function(custom_sources = empty_sources(), installOpts = list
|
|||||||
# Cancelled
|
# Cancelled
|
||||||
return(invisible(NULL))
|
return(invisible(NULL))
|
||||||
}
|
}
|
||||||
customImports <- rbind(customImports, extraImports, stringsAsFactors = FALSE)
|
customImports <- rbind(customImports, extraImports)
|
||||||
}
|
}
|
||||||
|
|
||||||
coreDeps <- dependsSources[dependsSources$in_core,]
|
coreDeps <- dependsSources[dependsSources$in_core,]
|
||||||
|
|||||||
@@ -1,18 +1,21 @@
|
|||||||
# Requires utils.R
|
# Requires utils.R
|
||||||
|
|
||||||
.process_dist_archive <- function(dist_fn, fn) {
|
.process_dist_archive <- function(dist_fn, fn) {
|
||||||
|
old_opt <- options(stringsAsFactors = FALSE)
|
||||||
|
on.exit(options(old_opt))
|
||||||
|
|
||||||
dist_con <- gzfile(dist_fn, "rb")
|
dist_con <- gzfile(dist_fn, "rb")
|
||||||
on.exit(close(dist_con), add = TRUE)
|
on.exit(close(dist_con), add = TRUE)
|
||||||
archive <- readRDS(dist_con)
|
archive <- readRDS(dist_con)
|
||||||
archive <- lapply(archive, function(pkg) {
|
archive <- lapply(archive, function(pkg) {
|
||||||
packageVersions <- gsub("^([^/]+)/[^_]+_(.+).tar.gz", "\\1%%\\2", rownames(pkg))
|
packageVersions <- gsub("^([^/]+)/[^_]+_(.+).tar.gz", "\\1%%\\2", rownames(pkg))
|
||||||
packageVersions <- strsplit(packageVersions, "%%")
|
packageVersions <- strsplit(packageVersions, "%%")
|
||||||
packageVersions <- do.call(rbind, c(packageVersions, stringsAsFactors = FALSE))
|
packageVersions <- do.call(rbind, packageVersions)
|
||||||
pkg[,c("package","version")] <- packageVersions
|
pkg[,c("package","version")] <- packageVersions
|
||||||
sortOrder <- sort(pkg$version, index.return = TRUE)$ix
|
sortOrder <- sort(pkg$version, index.return = TRUE)$ix
|
||||||
pkg[sortOrder,c("package", "version")]
|
pkg[sortOrder,c("package", "version")]
|
||||||
})
|
})
|
||||||
archive <- do.call(rbind, c(archive, stringsAsFactors = FALSE))
|
archive <- do.call(rbind, archive)
|
||||||
rownames(archive) <- 1:nrow(archive)
|
rownames(archive) <- 1:nrow(archive)
|
||||||
write_con <- gzfile(fn, "wb")
|
write_con <- gzfile(fn, "wb")
|
||||||
saveRDS(archive, write_con)
|
saveRDS(archive, write_con)
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
|
|
||||||
.list_depends <- function(packages, gen) {
|
.list_depends <- function(packages, gen) {
|
||||||
|
old_opt <- options(stringsAsFactors = FALSE)
|
||||||
|
on.exit(options(old_opt))
|
||||||
|
|
||||||
allPackages <- utils::installed.packages()
|
allPackages <- utils::installed.packages()
|
||||||
allPackages <- as.data.frame(allPackages, stringsAsFactors = FALSE)
|
allPackages <- as.data.frame(allPackages, stringsAsFactors = FALSE)
|
||||||
packages <- allPackages[allPackages$Package %in% packages,]
|
packages <- allPackages[allPackages$Package %in% packages,]
|
||||||
@@ -39,7 +42,7 @@
|
|||||||
dependsNext <- sort(unique(dependsNext))
|
dependsNext <- sort(unique(dependsNext))
|
||||||
if (length(dependsNext) > 0) {
|
if (length(dependsNext) > 0) {
|
||||||
packagesNext <- .list_depends(dependsNext, gen + 1)
|
packagesNext <- .list_depends(dependsNext, gen + 1)
|
||||||
packages <- rbind(packages, packagesNext, stringsAsFactors = FALSE)
|
packages <- rbind(packages, packagesNext)
|
||||||
}
|
}
|
||||||
|
|
||||||
return(packages)
|
return(packages)
|
||||||
|
|||||||
10
R/restore.R
10
R/restore.R
@@ -61,6 +61,9 @@
|
|||||||
#' @import parallel
|
#' @import parallel
|
||||||
#' @export
|
#' @export
|
||||||
restore <- function(totalIsolation = FALSE, installOpts = list(Ncpus = parallel::detectCores()), parallel = FALSE) {
|
restore <- function(totalIsolation = FALSE, installOpts = list(Ncpus = parallel::detectCores()), parallel = FALSE) {
|
||||||
|
old_opt <- options(stringsAsFactors = FALSE)
|
||||||
|
on.exit(options(old_opt))
|
||||||
|
|
||||||
activate(totalIsolation)
|
activate(totalIsolation)
|
||||||
|
|
||||||
get_cran_repo()
|
get_cran_repo()
|
||||||
@@ -80,9 +83,8 @@ restore <- function(totalIsolation = FALSE, installOpts = list(Ncpus = parallel:
|
|||||||
simplePackages <- as.data.frame(
|
simplePackages <- as.data.frame(
|
||||||
apply(
|
apply(
|
||||||
rbind(
|
rbind(
|
||||||
do.call(rbind, c(requiredPackages$direct, stringsAsFactors = FALSE)),
|
do.call(rbind, requiredPackages$direct),
|
||||||
do.call(rbind, c(requiredPackages$indirect, stringsAsFactors = FALSE)),
|
do.call(rbind, requiredPackages$indirect)
|
||||||
stringsAsFactors = FALSE
|
|
||||||
),
|
),
|
||||||
2,
|
2,
|
||||||
unlist
|
unlist
|
||||||
@@ -90,7 +92,7 @@ restore <- function(totalIsolation = FALSE, installOpts = list(Ncpus = parallel:
|
|||||||
stringsAsFactors = FALSE
|
stringsAsFactors = FALSE
|
||||||
)
|
)
|
||||||
customPackages <- as.data.frame(
|
customPackages <- as.data.frame(
|
||||||
do.call(rbind, c(requiredPackages$custom, stringsAsFactors = FALSE)),
|
do.call(rbind, requiredPackages$custom),
|
||||||
stringsAsFactors = FALSE
|
stringsAsFactors = FALSE
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -11,10 +11,13 @@
|
|||||||
#' @import parallel
|
#' @import parallel
|
||||||
#' @export
|
#' @export
|
||||||
snapshot_create <- function(installOpts = list(Ncpus = parallel::detectCores())) {
|
snapshot_create <- function(installOpts = list(Ncpus = parallel::detectCores())) {
|
||||||
|
old_opt <- options(stringsAsFactors = FALSE)
|
||||||
|
on.exit(options(old_opt))
|
||||||
|
|
||||||
lastSnapshot <- snapshot_latest()
|
lastSnapshot <- snapshot_latest()
|
||||||
customSources <- empty_sources()
|
customSources <- empty_sources()
|
||||||
if (!is.null(lastSnapshot) && "custom" %in% names(lastSnapshot$packages)) {
|
if (!is.null(lastSnapshot) && "custom" %in% names(lastSnapshot$packages)) {
|
||||||
customSources <- rbind(customSources, lastSnapshot$packages$custom, stringsAsFactors = FALSE)
|
customSources <- rbind(customSources, lastSnapshot$packages$custom)
|
||||||
}
|
}
|
||||||
packages <- compile_imports(customSources, installOpts)
|
packages <- compile_imports(customSources, installOpts)
|
||||||
names(packages) <- c("core", "direct", "indirect", "custom", "install_order")
|
names(packages) <- c("core", "direct", "indirect", "custom", "install_order")
|
||||||
|
|||||||
Reference in New Issue
Block a user