Function to list package dependencies
This commit is contained in:
@@ -8,3 +8,4 @@ URL: https://avsdev.uk/R/Rpacman
|
||||
Description: Very simple package manager for R which allows scanning for used packages, finding their dependencies and versions, creating a lock file and installing the packages on a new build.
|
||||
License: GPL (>= 3)
|
||||
Depends: R (>= 3.1.0), dplyr, magrittr, renv
|
||||
RoxygenNote: 7.1.1
|
||||
|
||||
3
NAMESPACE
Normal file
3
NAMESPACE
Normal file
@@ -0,0 +1,3 @@
|
||||
# Generated by roxygen2: do not edit by hand
|
||||
|
||||
export(list_depends)
|
||||
39
R/list_depends.R
Normal file
39
R/list_depends.R
Normal file
@@ -0,0 +1,39 @@
|
||||
|
||||
.list_depends <- function(depends, gen) {
|
||||
packages <- installed.packages()
|
||||
packages <- as.data.frame(packages)
|
||||
packages <- packages[packages$Package %in% depends,]
|
||||
packages <- packages[,c("Package", "Version", "Imports")]
|
||||
packages$Imports <- gsub(packages$Imports, pattern = "\n", replacement = " ")
|
||||
packages$Imports <- strsplit(packages$Imports, ", ")
|
||||
packages <- data.frame(
|
||||
package = rep(packages$Package, lengths(packages$Imports)),
|
||||
version = rep(packages$Version, lengths(packages$Imports)),
|
||||
imports = unlist(packages$Imports)
|
||||
)
|
||||
packages$min_version <- gsub(packages$imports, pattern = "[^ ]*( \\([=> ]*([^)]+)\\))?", replacement = "\\2")
|
||||
packages$min_version = ifelse(nchar(packages$min_version) == 0, NA_character_, packages$min_version)
|
||||
packages$imports <- gsub(packages$imports, pattern = " \\([^)]*\\)", replacement = "")
|
||||
packages$generation <- gen
|
||||
|
||||
depends_next <- packages$imports[!is.na(packages$imports)]
|
||||
depends_next <- sort(unique(depends_next))
|
||||
if (length(depends_next) > 0) {
|
||||
packages_next <- list_imports(depends_next, gen + 1)
|
||||
packages <- rbind(packages, packages_next)
|
||||
}
|
||||
|
||||
return(packages)
|
||||
}
|
||||
|
||||
|
||||
#' Recursively find all the installed dependencies of one or more installed
|
||||
#' packages.
|
||||
#'
|
||||
#' @param depends A character vector of packages to find dependencies of
|
||||
#'
|
||||
#' @return A data frame with the dependency tree
|
||||
#' @export
|
||||
list_depends <- function(depends) {
|
||||
.list_depends(depends, gen = 0)
|
||||
}
|
||||
17
man/list_depends.Rd
Normal file
17
man/list_depends.Rd
Normal file
@@ -0,0 +1,17 @@
|
||||
% Generated by roxygen2: do not edit by hand
|
||||
% Please edit documentation in R/list_depends.R
|
||||
\name{list_depends}
|
||||
\alias{list_depends}
|
||||
\title{Recursively find all the installed dependencies of one or more packages.}
|
||||
\usage{
|
||||
list_depends(depends)
|
||||
}
|
||||
\arguments{
|
||||
\item{depends}{A character vector of packages to find dependencies of}
|
||||
}
|
||||
\value{
|
||||
A data frame with the dependency tree
|
||||
}
|
||||
\description{
|
||||
Recursively find all the installed dependencies of one or more packages.
|
||||
}
|
||||
Reference in New Issue
Block a user