Skip to contents

Retrieves the remote SHA (Secure Hash Algorithm) reference for one or more R packages from their remote repositories (e.g., GitHub, GitLab). The SHA uniquely identifies a package's source code version, aiding reproducibility and version tracking.

Usage

package_remote_sha(..., lib_path = .libPaths()[1L])

Arguments

...

Quoted or unquoted names of one or more R packages (e.g., dplyr, "tidyr"). Must be valid package names (letters, numbers, dots, or underscores) and installed in the library.

lib_path

Character. Path to the library where the packages are installed. Defaults to the first library in .libPaths(). This parameter is optional.

Value

A named character vector where names are package names and values are the corresponding remote SHAs. Returns NA for packages not installed, from CRAN, or without a remote SHA.

Details

This function uses pak::lib_status() to query installed packages and extract their remote SHAs. CRAN or locally installed packages typically return NA, as they lack remote SHAs.

Author

Ahmed El-Gabbas

Examples

load_packages(remotes, fs)

# create a temporary directory for package installation
temp_lib <- fs::path_temp("temp_lib")
fs::dir_create(temp_lib)

# install pkgconfig from GitHub into the temporary directory
remotes::install_github(
  "r-lib/pkgconfig", lib = temp_lib, upgrade = "never",
  quiet = TRUE, dependencies = FALSE)

# retrieve remote SHA for pkgconfig
package_remote_sha(pkgconfig, lib_path = temp_lib)
#>                                  pkgconfig 
#> "687e3154aa407642649beb00334940c71d6f22d9" 

# `stats` and non-existent packages return NA
package_remote_sha(stats, non_existent)
#>        stats non_existent 
#>           NA           NA 

# clean up
remove.packages("pkgconfig", lib = temp_lib)
fs::dir_delete(temp_lib)

if (FALSE) { # \dontrun{
  # the following will give an error
  package_remote_sha(TRUE)
  package_remote_sha(NA)
  package_remote_sha(NULL)
} # }