Skip to contents

Install packages from GitHub

Usage

installFromGitHub(
  repo,
  tag,
  branch,
  lib = .libPaths()[[1L]],
  reinstall = TRUE,
  ...
)

Arguments

repo

character. Repository address(es) in the format owner/repo.

tag

character or missing. Release version tag. Specific release must match the tag on GitHub (e.g. "v1.0.0"). Required except when branch is declared.

branch

character or missing. Branch name (e.g. "develop"). Can specify this instead of tag.

lib

character. Destination library directory path. Defaults to the first element of .libPaths().

reinstall

logical(1). Force reinstallation of any existing packages.

...

Passthrough arguments to install().

Value

Invisible list. Metadata containing repo, lib, and whether packages were installed.

Details

This variant doesn't require GITHUB_PAT. If you have a GITHUB_PAT defined, can use install() directly instead. Intended for use inside container images, where a PAT may not be used.

Note

Updated 2022-10-20.

GitHub API

  • All releases JSON: https://api.github.com/repos/:owner/:repo/releases

  • Latest release JSON: https://api.github.com/repos/:owner/:repo/releases/latest

  • Specific release JSON (requires numeric release ID, not tag name): https://api.github.com/repos/:owner/:repo/releases/:release_id

  • Specific tagged release tarball: https://github.com/:owner/:repo/archive/:tag.tar.gz

Examples

testlib <- file.path(tempdir(), "testlib")
unlink(testlib, recursive = TRUE)
out <- installFromGitHub(
    repo = paste(
        "acidgenomics",
        "r-goalie",
        sep = "/"
    ),
    tag = "v0.5.2",
    dependencies = FALSE,
    lib = testlib,
    reinstall = TRUE
)
#> untar: using cmd = ‘/opt/koopa/bin/gtar -xf '/var/folders/l1/8y8sjzmn15v49jgrqglghcfr0000gn/T//RtmpQDnHHO/file41932eb3c62.tar.gz' -C '/private/var/folders/l1/8y8sjzmn15v49jgrqglghcfr0000gn/T/RtmpQDnHHO/Zky4qEm81K-170249687505969/untar-emHDTx'’
#> Installing 'goalie' with 'utils::install.packages' in '/private/var/folders/l1/8y8sjzmn15v49jgrqglghcfr0000gn/T/RtmpQDnHHO/testlib'.
print(out)
#> $repo
#> [1] "acidgenomics/r-goalie"
#> 
#> $lib
#> [1] "/private/var/folders/l1/8y8sjzmn15v49jgrqglghcfr0000gn/T/RtmpQDnHHO/testlib"
#> 
#> $installed
#> acidgenomics/r-goalie 
#>                  TRUE 
#> 
sort(list.dirs(path = testlib, full.names = FALSE, recursive = FALSE))
#> [1] "goalie"
unlink(testlib, recursive = TRUE)