For an R package, runs the url_db_from_package_source function in the
tools package along with functions to check URLs in un-rendered Rmarkdown
(.Rmd) and Quarto (.qmd) vignettes and in BibTeX (.bib) bibliographies.
For non-package projects, URLs are extracted from all supported files found
in the given directories.
Usage
url_check(
path = ".",
db = NULL,
parallel = TRUE,
pool = curl::new_pool(),
progress = TRUE,
fail = TRUE
)Arguments
- path
Path(s) to check. Each element may be:
A package's (development) source directory tree, a directory holding an unpacked source package, or a source package tarball (
.tar.gz). A tarball is unpacked into a temporary directory (kept for the rest of the session, so the printed report can point into the sources).A directory that is not an R package. All supported files found within (recursively) are scanned for URLs. Supported files are HTML, PDF, Rd, Markdown (
.md,.markdown), R Markdown (.Rmd), Quarto (.qmd) and BibTeX (.bib).A single file of one of the supported types above.
pathmay be a character vector mixing any of these.- db
A url database
- parallel
If
TRUE, check the URLs in parallel- pool
A multi handle created by
curl::new_pool(). IfNULLuse a global pool.- progress
Whether to show the progress bar for parallel checks
- fail
If
TRUE(the default), throw an error when one or more URLs are flagged, after printing the report. This yields a non-zero exit status, which is useful in CI/CD workflows. Set toFALSEto return the results instead of failing.
Value
A url_checker_db object (invisibly). This is a check_url_db object
with an added class with a custom print method.
Ignoring URLs with .urlignore
Some URLs cannot be checked automatically, e.g. a link to a private
repository, or a page behind a login or captcha. To stop url_check() from
flagging (and even requesting) such URLs, list them in a .urlignore file.
It is read from two locations relative to the checked root, and the patterns
found are combined:
.urlignorein the root directory (like.gitignore), andtools/.urlignore(handy for packages that keep it undertools/).
Each non-empty line is a glob pattern (blank lines and lines starting with
# are ignored), matched against the whole URL. For example
https://github.com/acme/secret matches that URL exactly, while
https://github.com/acme/* matches every URL under that path. Matching URLs
are dropped before checking, so they are never requested.
Note that CRAN's own URL checks do not read .urlignore, so an ignored URL
may still be flagged when the package is submitted to CRAN.
Examples
if (FALSE) { # \dontrun{
url_check("my_pkg")
url_check(c("README.md", "docs"))
} # }