turtletopia / woodendesc

Get the available packages and their version codes as well as their dependencies from any R repository with unified API.

Home Page:https://turtletopia.github.io/woodendesc/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

woodendesc

CRAN status R-universe R-CMD-check Codecov test coverage

{woodendesc} strives to provide an unified API to query any R repository for the following data:

  • list of available packages,
  • version code of any selected package,
  • direct dependencies of any selected package.

The package tries to cache as much as possible and reuse existing cache wherever possible to minimize internet usage. Many repositories (CRAN, Bioconductor, R-universe, and local libraries) have custom implementations of their handlers to make use of additional possibilities they present (e.g. previous versions on CRAN or old releases of Bioconductor).

Installation

# Install from CRAN
install.packages("woodendesc")
# Install the development version from GitHub:
# install.packages("devtools")
devtools::install_github("turtletopia/woodendesc")

How to use woodendesc?

Each repository has its dedicated functions for listing available packages, package version, and package dependencies.

A list of available packages is returned as a character vector. An example call returning a list of CRAN packages:

library(woodendesc)
# Too many packages to list them all
all_cran_pkgs <- wood_cran_packages()
head(all_cran_pkgs, 10)
#>  [1] "A3"            "AalenJohansen" "AATtools"      "ABACUS"       
#>  [5] "abbreviate"    "abbyyR"        "abc"           "abc.data"     
#>  [9] "ABC.RAP"       "ABCanalysis"

An available package version is returned as a single code. An example call checking the current version of Biobase package on Bioconductor:

wood_bioc_version("Biobase")
#> [1] "2.58.0"

Dependencies of a package are returned as a data frame with the same set of columns for all calls. An example call for locally installed digest package (dependency of woodendesc):

wood_local_dependencies("digest")
#> <dependencies>
#>   Depends:     R (>= 3.3.0)
#>   Imports:     utils
#>   Suggests:    tinytest
#>   Suggests:    simplermarkdown

Note that some repositories store more than just one version of a package (e.g. CRAN and Github). These cases can be distinguished by pluralized _versions function name component and they return all version codes instead; a character vector of any length. This is how it works for gglgbtq on Github:

wood_github_versions("gglgbtq", "turtletopia")
#> [1] "0.1.1" "0.1.0"

If a single version code is needed, there’s a counterpart that selects the latest version only. The current version of aurrera on Github is:

wood_github_latest("aurrera", "turtletopia")
#> [1] "0.1.0"

Last, but not least, there are three functions for searching through multiple repositories and collecting the results. Read the documentation for details on how to specify repos parameter.

wood_packages() collects available packages from the specified repositories and returns unique elements:

wood_packages(repos = c("core", "https://colinfay.me"))
#>  [1] "attempt"        "base"           "compiler"       "craneur"       
#>  [5] "datasets"       "devaddins"      "dockerfiler"    "fryingpane"    
#>  [9] "graphics"       "grDevices"      "grid"           "jekyllthat"    
#> [13] "languagelayeR"  "methods"        "parallel"       "proustr"       
#> [17] "rgeoapi"        "rpinterest"     "splines"        "stats"         
#> [21] "stats4"         "tcltk"          "tidystringdist" "tools"         
#> [25] "utils"

wood_versions() returns all package versions available on at least one of the specified repositories; may take more than one package:

wood_versions(
  c("aurrera", "woodendesc"),
  repos = c("local#all", "runiverse@turtletopia", "cran")
)
#> $aurrera
#> [1] "0.1.0"
#> 
#> $woodendesc
#> [1] "0.1.0"

wood_dependencies() returns a list of package dependencies, a data frame for each package specified; the first working repository is used for each package, as the dependencies are not supposed to be summable:

wood_dependencies(
  c("versionsort", "gglgbtq"),
  repos = c("local#all", "runiverse@turtletopia", "cran")
)
#> <woodendesc dependency list [2]>
#>  <versionsort dependencies>
#>   Suggests:    covr
#>   Suggests:    spelling
#>   Suggests:    testthat (>= 3.0.0)
#> 
#>  <gglgbtq dependencies>
#>   Imports:     ggplot2
#>   Imports:     graphics
#>   Imports:     grDevices
#>   Suggests:    knitr
#>   Suggests:    rmarkdown
#>   Suggests:    spelling
#>   Suggests:    testthat (>= 3.0.0)

And if you ever need to clear cache, simply call:

wood_clear_cache()

End notes

I believe in equal rights and treatment for everybody, regardless of their sexuality, gender identity, skin tone, nationality, and other features beyond human control. Thus, I do not allow woodendesc to be used in any project that promotes hate based on the aforementioned factors.

About

Get the available packages and their version codes as well as their dependencies from any R repository with unified API.

https://turtletopia.github.io/woodendesc/

License:GNU General Public License v3.0


Languages

Language:R 100.0%