This guide documents important internal coding conventions used in rextendr.
rextendr uses the cli package to format messages to the user, which are generally then routed through rlang::inform()
. Most UI will happen through ui_*()
functions:
function | purpose |
---|---|
cli::cli_alert_success() |
communicate that rextendr has done something successfully, such as wrote a file |
cli::cli_alert_info() |
provide extra information to the user |
cli::cli_alert_warning() |
warn the user about something (note: this is still condition of class message , not warning ) |
cli::cli_ul() |
indicate that the user has something to do |
cli::cli_alert_danger() |
tell the user that something has gone wrong (note: this still is a condition of class message , not error ) |
{cli}
supports glue-based interpolation and inline text formatting.
Pass all errors via cli::cli_abort()
. Ensure that the class rextendr_error
is specified. You can also add details by providing a named vector. See ?cli::cli_abort()
and ?cli::cli_bulelts()
for the message
argument.
cli::cli_abort(
c(
"Unable to register the extendr module.",
"x" = "Could not find file {.file src/entrypoint.c}.",
"*" = "Are you sure this package is using extendr Rust code?"
),
class = "rextendr_error"
)
{cli}
is used to verbosely inform the user. The user should be able to optionally silence functions that have particularly verbose output by setting quiet
argument to TRUE
—see ?rust_source
for example.
Silencing cli
output should be done with the helper local_quiet_cli(quiet)
. When quiet = TRUE
all, cli
output is suppressed.