| Title: | Helpers to Develop a Package using GitHub Actions |
|---|---|
| Description: | A small set of functions that takes advantage of GitHub Actions for making your life easier as a R package developer. This package is primarily intended for personal use, however feel free to use it (at your own risk). |
| Authors: | Diego Hernangómez [aut, cre, cph] (ORCID: <https://orcid.org/0000-0001-8457-4658>) |
| Maintainer: | Diego Hernangómez <[email protected]> |
| License: | MIT + file LICENSE |
| Version: | 0.1.0.9150 |
| Built: | 2026-06-02 15:11:15 UTC |
| Source: | https://github.com/dieghernan/pkgdev |
.gitignore to packageAdds a global .gitgnore file to the package. File based on default
.gitignore provided by GitHub.
add_global_gitgnore(pkg = ".")add_global_gitgnore(pkg = ".")
pkg |
Path to a (subdirectory of an) R package. |
Invisible, and writes a global .gitignore file
usethis::use_git_ignore(), usethis::git_vaccinate()
## Not run: add_global_gitgnore() ## End(Not run)## Not run: add_global_gitgnore() ## End(Not run)
build_qmd() is a wrapper around quarto::quarto_render() that first
installs a temporary copy of the package, and then renders each .Rmd in a
clean R session. build_readme_qmd() locates your README.and builds it
into a README.md
build_qmd(files, path = ".", ..., quiet = TRUE) build_readme_qmd(path = ".", quiet = TRUE, ...)build_qmd(files, path = ".", ..., quiet = TRUE) build_readme_qmd(path = ".", quiet = TRUE, ...)
files |
The Quarto files to be rendered. |
path |
Path to the top-level directory of the source package. |
... |
additional arguments passed to |
quiet |
If |
Check if title of Rd files ends in a period.
check_rd_titles(pkg = ".")check_rd_titles(pkg = ".")
pkg |
Path to a (subdirectory of an) R package. |
A data frame with the results.
## Not run: check_rd_titles() ## End(Not run)## Not run: check_rd_titles() ## End(Not run)
The GitHub action created would run R CMD check on your package.
It uses a wide range of platforms, can be reduced by commenting or deleting
platforms on the matrix config.
gha_check_full(pkg = ".", overwrite = TRUE, cron_expr = "30 08 1 * *")gha_check_full(pkg = ".", overwrite = TRUE, cron_expr = "30 08 1 * *")
pkg |
Path to a (subdirectory of an) R package. |
overwrite |
Overwrite the action if it was already present. |
cron_expr |
Valid cron expression. By default, the first day of the month at 08:30 AM. See Details. |
Use crontab.guru to check and create your own cron tag.
A GitHub Action on <pkg>/.github/workflows.
## Not run: gha_check_full(cron_expr = "57 16 12 * *") ## End(Not run)## Not run: gha_check_full(cron_expr = "57 16 12 * *") ## End(Not run)
The GitHub action created would deploy a pkgdown site of your package on the gh-pages branch.
gha_pkgdown_branch( pkg = ".", overwrite = TRUE, platform = "macOS", version = "latest" )gha_pkgdown_branch( pkg = ".", overwrite = TRUE, platform = "macOS", version = "latest" )
pkg |
Path to a (subdirectory of an) R package. |
overwrite |
Overwrite the action if it was already present. |
platform |
Platform to use for deploying the package. See Details |
version |
Version of the platform. See Details. |
Check https://github.com/actions/runner-images to see the available options.
A GitHub Action on <pkg>/.github/workflows.
## Not run: # With Ubuntu 20.04 gha_pkgdown_branch(platform = "ubuntu", version = "20.04") ## End(Not run)## Not run: # With Ubuntu 20.04 gha_pkgdown_branch(platform = "ubuntu", version = "20.04") ## End(Not run)
The GitHub action created would document your package (see update_docs()),
would check it and would deploy the package on a gh-pages branch.
gha_update_docs( pkg = ".", overwrite = TRUE, platform = "macOS", version = "latest" )gha_update_docs( pkg = ".", overwrite = TRUE, platform = "macOS", version = "latest" )
pkg |
Path to a (subdirectory of an) R package. |
overwrite |
Overwrite the action if it was already present. |
platform |
Platform to use for deploying the package. See Details |
version |
Version of the platform. See Details. |
Check https://github.com/actions/runner-images to see the available options.
A GitHub Action on .github/workflows.
update_docs(), gha_pkgdown_branch()
## Not run: # With Ubuntu 20.04 gha_update_docs(platform = "ubuntu", version = "20.04") ## End(Not run)## Not run: # With Ubuntu 20.04 gha_update_docs(platform = "ubuntu", version = "20.04") ## End(Not run)
Precompute vignettes from CRAN, based on https://ropensci.org/blog/2019/12/08/precompute-vignettes/.
precompute_vignette( source, pkg = ".", figure_ext = ".png", create_r_file = FALSE ) precompute_vignette_all(dir = "vignettes", pkg = ".", ...)precompute_vignette( source, pkg = ".", figure_ext = ".png", create_r_file = FALSE ) precompute_vignette_all(dir = "vignettes", pkg = ".", ...)
source |
Name without path of the |
pkg |
Path to a (subdirectory of an) R package. |
figure_ext |
Extension of the figures plotted on the vignette. See Details. |
create_r_file |
Whether to create an additional R file with the code of the vignette. |
dir |
Path to directory where the "Rmd.orig" files are stored. |
... |
Parameters passed to |
The function would search for the desired precomputed vignette on the
"./vignettes/" folder and for plots on the root "./" folder.
On your .Rmd.orig file make sure you have set at least the following
lines if you are producing plots:
knitr::opts_chunk$set( ... , fig.path = "./", ... , )
A precomputed vignette
https://ropensci.org/blog/2019/12/08/precompute-vignettes/
## Not run: precompute_vignette(source = "precompute.Rmd.orig") ## End(Not run)## Not run: precompute_vignette(source = "precompute.Rmd.orig") ## End(Not run)
Run routine checks on the package:
Clean DESCRIPTION with usethis::use_tidy_description()
Compress the data of the paths "./data" and "./R" using
tools::resaveRdaFiles().
Style code with styler::style_pkg()
Check urls with urlchecker::url_check()
Roxygenise with roxygen2::roxygenise()
Precompute vignettes if present (see https://ropensci.org/blog/2019/12/08/precompute-vignettes/)
Rebuild README.Rmd (if present) with devtools::build_readme()
Optimize images with resmush::resmush_dir()
Write codemeta.json with codemetar::write_codemeta()
Write CITATION.cff with cffr::cff_write()
update_docs( pkg = ".", url_update = TRUE, create_codemeta = TRUE, create_cff = TRUE, build_readme = TRUE, verbose = TRUE, precompute = TRUE, opt_imgs = TRUE, opt_dir = c("man/figures", "vignettes"), opt_ext = "png$|jpg$", opt_overwrite = TRUE, add_contributors = TRUE, ... )update_docs( pkg = ".", url_update = TRUE, create_codemeta = TRUE, create_cff = TRUE, build_readme = TRUE, verbose = TRUE, precompute = TRUE, opt_imgs = TRUE, opt_dir = c("man/figures", "vignettes"), opt_ext = "png$|jpg$", opt_overwrite = TRUE, add_contributors = TRUE, ... )
pkg |
Path to a (subdirectory of an) R package. |
url_update |
Logical, do you want to update urls with
|
create_codemeta |
Logical, do you want to create
a codemeta file with |
create_cff |
Logical, do you want to create
a CITATION.cff file with |
build_readme |
Logical, build |
verbose |
Display informative messages on the console |
precompute |
Logical, detect and precompute vignettes? See also
|
opt_imgs |
Logical. Optimize images with |
opt_dir, opt_ext, opt_overwrite
|
See |
add_contributors |
Deprecated. |
... |
Additional arguments to functions |
This function tries to update and clean the package following a mix of
best practices (e.g. checking the urls, roxygenise and rebuilding the
README) and some other discretionary practices I like to have in a package,
as the tidyverse approach for the DESCRIPTION file and overall code
and the use of codemeta.json.
invisible, or some messages on verbose = TRUE.
usethis::use_tidy_description(), styler::style_pkg(),
urlchecker::url_check(), roxygen2::roxygenise(),
devtools::build_readme(), codemetar::write_codemeta(),
tools::resaveRdaFiles()
## Not run: update_docs() ## End(Not run)## Not run: update_docs() ## End(Not run)