| Title: | Help with Preparing a New Version of an R Package |
|---|---|
| Description: | Helps to prepare a release. Before releasing an R package it is important to update the DESCRIPTION file and the changelog. This package prepares these files and also updates the versions according to the branches. It relies heavily on the 'desc' packages. |
| Authors: | Tanguy Barthelemy [aut, cre, art] |
| Maintainer: | Tanguy Barthelemy <[email protected]> |
| License: | MIT + file LICENSE |
| Version: | 1.2.0.9000 |
| Built: | 2026-07-02 15:21:03 UTC |
| Source: | https://github.com/TanguyBarthelemy/releaser |
Remotes field in DESCRIPTIONUpdate the Remotes field of a package DESCRIPTION file so that
dependencies point to specific development targets
(develop, snapshot, or main).
change_remotes_field( path, target = c("develop", "snapshot", "main"), verbose = TRUE )change_remotes_field( path, target = c("develop", "snapshot", "main"), verbose = TRUE )
path |
[character] Path to the package root directory (or to the DESCRIPTION / NEWS.md file). |
target |
[character] Target branch or type of remote:
must be one of |
verbose |
[logical] Whether to print additional
information (default: |
Invisibly returns the new vector of remote specifications (character).
path_rjd3workspace <- file.path(tempdir(), "rjd3workspace") file.copy( from = system.file("rjd3workspace", package = "releaser"), to = dirname(path_rjd3workspace), recursive = TRUE ) change_remotes_field(path = path_rjd3workspace, target = "develop")path_rjd3workspace <- file.path(tempdir(), "rjd3workspace") file.copy( from = system.file("rjd3workspace", package = "releaser"), to = dirname(path_rjd3workspace), recursive = TRUE ) change_remotes_field(path = path_rjd3workspace, target = "develop")
check_missing_examples_tag() Identifies exported functions that do not
declare any @examples (or @examplesIf) tag in their roxygen2
documentation.
check_missing_examples_content() detects exported functions that declare an
@examples tag but whose examples are not actually present in the combined
example blocks.
check_missing_title() identifies exported functions that do not define a
@title tag in their documentation.
check_describeIn_usage() lists all documented topics using the
@describeIn tag.
check_return_tag_usage() identifies functions still using @return.
check_missing_returns() identifies exported functions that do not declare a
@returns tag.
check_missing_examples_tag(pkg_dir) check_missing_examples_content(pkg_dir) check_missing_title(pkg_dir) check_describeIn_usage(pkg_dir) check_return_tag_usage(pkg_dir) check_missing_returns(pkg_dir)check_missing_examples_tag(pkg_dir) check_missing_examples_content(pkg_dir) check_missing_title(pkg_dir) check_describeIn_usage(pkg_dir) check_return_tag_usage(pkg_dir) check_missing_returns(pkg_dir)
pkg_dir |
Path to the R package. |
The @describeIn tag is generally discouraged in modern roxygen2 workflows.
The @return tag is superseded by @returns.
A character vector of function names
my_pkg_dir <- "path/to/my/package" # Single checks check_missing_returns(my_pkg_dir) check_return_tag_usage(my_pkg_dir) check_describeIn_usage(my_pkg_dir) check_missing_examples_tag(my_pkg_dir) check_missing_examples_content(my_pkg_dir) check_missing_title(my_pkg_dir)my_pkg_dir <- "path/to/my/package" # Single checks check_missing_returns(my_pkg_dir) check_return_tag_usage(my_pkg_dir) check_describeIn_usage(my_pkg_dir) check_missing_examples_tag(my_pkg_dir) check_missing_examples_content(my_pkg_dir) check_missing_title(my_pkg_dir)
Performs a series of documentation consistency checks on a package using roxygen2 parsed blocks.
The following checks are performed:
Missing @examples tag in exported functions
Missing example content
Missing @title
Usage of discouraged @describeIn
Usage of deprecated @return
Missing @returns
check_docs(pkg_dir = ".", verbose = interactive(), error_on_fail = FALSE)check_docs(pkg_dir = ".", verbose = interactive(), error_on_fail = FALSE)
pkg_dir |
Path to the R package. |
verbose |
Logical. If |
error_on_fail |
Logical. If |
An object of class "releaser_doc_check" containing
a named list of detected issues.
my_pkg_dir <- "path/to/my/package" # Full check results <- check_docs(my_pkg_dir)my_pkg_dir <- "path/to/my/package" # Full check results <- check_docs(my_pkg_dir)
Extracts the section of NEWS.md corresponding to a given version.
get_changes(path, version_number, verbose = TRUE)get_changes(path, version_number, verbose = TRUE)
path |
[character] Path to the package root directory (or to the DESCRIPTION / NEWS.md file). |
version_number |
[character] Current version number string
(e.g. |
verbose |
[logical] Whether to print additional
information (default: |
A character string containing the formatted changelog for the given version.
path_rjd3workspace <- system.file("rjd3workspace", package = "releaser") get_changes(path = path_rjd3workspace, version_number = "Unreleased") get_changes(path = path_rjd3workspace, version_number = "3.2.4") get_changes(path = path_rjd3workspace, version_number = "3.5.1")path_rjd3workspace <- system.file("rjd3workspace", package = "releaser") get_changes(path = path_rjd3workspace, version_number = "Unreleased") get_changes(path = path_rjd3workspace, version_number = "3.2.4") get_changes(path = path_rjd3workspace, version_number = "3.5.1")
Given a current package version, compute the potential next patch, minor, and major versions following semantic versioning rules.
get_different_future_version(version_number, verbose = TRUE)get_different_future_version(version_number, verbose = TRUE)
version_number |
[character] Current version number string
(e.g. |
verbose |
[logical] Whether to print additional
information (default: |
A named character vector with:
current_version – the input version,
future_patch_version – next patch version,
future_minor_version – next minor version,
future_major_version – next major version.
get_different_future_version("1.2.3")get_different_future_version("1.2.3")
Retrieve all branch names from a GitHub repository.
get_github_branches( gh_repo = file.path("rjdverse", "rjd3toolkit"), verbose = TRUE )get_github_branches( gh_repo = file.path("rjdverse", "rjd3toolkit"), verbose = TRUE )
gh_repo |
[character] GitHub repository in the format
|
verbose |
[logical] Whether to print additional
information (default: |
A character vector with branch names.
get_github_branches("r-lib/usethis")get_github_branches("r-lib/usethis")
Retrieve the version number of the latest GitHub release for a repository and optionally print versions found across all branches.
get_latest_version( gh_repo = file.path("rjdverse", "rjd3toolkit"), verbose = TRUE )get_latest_version( gh_repo = file.path("rjdverse", "rjd3toolkit"), verbose = TRUE )
gh_repo |
[character] GitHub repository in the format
|
verbose |
[logical] Whether to print additional
information (default: |
A character string with the version of the latest release.
get_latest_version("r-lib/usethis")get_latest_version("r-lib/usethis")
Display result of documentation check
## S3 method for class 'releaser_doc_check' print(x, ...)## S3 method for class 'releaser_doc_check' print(x, ...)
x |
|
... |
Not used argument. |
invisibly the object x
rjd3* dependenciesUpdate the DESCRIPTION file of a package so that all dependencies
beginning with "rjd3" require the latest released version from GitHub.
set_latest_deps_version(path, verbose = TRUE)set_latest_deps_version(path, verbose = TRUE)
path |
[character] Path to the package root directory (or to the DESCRIPTION / NEWS.md file). |
verbose |
[logical] Whether to print additional
information (default: |
Invisibly updates the DESCRIPTION file in place.
path_rjd3workspace <- file.path(tempdir(), "rjd3workspace") file.copy( from = system.file("rjd3workspace", package = "releaser"), to = dirname(path_rjd3workspace), recursive = TRUE ) set_latest_deps_version(path = path_rjd3workspace)path_rjd3workspace <- file.path(tempdir(), "rjd3workspace") file.copy( from = system.file("rjd3workspace", package = "releaser"), to = dirname(path_rjd3workspace), recursive = TRUE ) set_latest_deps_version(path = path_rjd3workspace)
Add or remove rjdverse packages from the Remotes field of the DESCRIPTION file.
When enabled, all dependencies whose package name starts with "rjd3" (rjdverse packages) are added to the Remotes field as GitHub remotes. When disabled, these remotes are removed so that dependencies are resolved from CRAN instead.
set_rjdverse_remotes(path, enabled = TRUE, verbose = TRUE)set_rjdverse_remotes(path, enabled = TRUE, verbose = TRUE)
path |
Path to the root of the package. |
enabled |
Logical. Should rjdverse remotes be enabled? |
verbose |
Logical. Should informative messages be displayed? |
Invisibly the current content of the Remotes field.
path_rjd3workspace <- file.path(tempdir(), "rjd3workspace") file.copy( from = system.file("rjd3workspace", package = "releaser"), to = dirname(path_rjd3workspace), recursive = TRUE ) set_rjdverse_remotes(path = path_rjd3workspace, enabled = FALSE) set_rjdverse_remotes(path = path_rjd3workspace, enabled = TRUE)path_rjd3workspace <- file.path(tempdir(), "rjd3workspace") file.copy( from = system.file("rjd3workspace", package = "releaser"), to = dirname(path_rjd3workspace), recursive = TRUE ) set_rjdverse_remotes(path = path_rjd3workspace, enabled = FALSE) set_rjdverse_remotes(path = path_rjd3workspace, enabled = TRUE)
NEWS.md for a new releaseModify the NEWS.md file of a package to replace the "Unreleased"
section with a new version heading and update GitHub comparison links.
update_news_md(path, version_number, verbose = TRUE)update_news_md(path, version_number, verbose = TRUE)
path |
[character] Path to the package root directory (or to the DESCRIPTION / NEWS.md file). |
version_number |
[character] Current version number string
(e.g. |
verbose |
[logical] Whether to print additional
information (default: |
The argument version_number is the new version number to update the
changelog.
Invisibly returns TRUE if the file was successfully updated.
path_rjd3workspace <- file.path(tempdir(), "rjd3workspace") file.copy( from = system.file("rjd3workspace", package = "releaser"), to = dirname(path_rjd3workspace), recursive = TRUE ) update_news_md(path = path_rjd3workspace, version_number = "1.2.3")path_rjd3workspace <- file.path(tempdir(), "rjd3workspace") file.copy( from = system.file("rjd3workspace", package = "releaser"), to = dirname(path_rjd3workspace), recursive = TRUE ) update_news_md(path = path_rjd3workspace, version_number = "1.2.3")