Skip to content

Use {cli} for messages/errors #772

Description

@peterdesmet

I suggest we use the cli package (we use in our packages). It allows:

  • Nicely formatted error, warnings and messages
  • Error classes (which makes testing easier)
  • Much easier to create messages (no need for glue)

In my experience, it doesn't jive well with {assertthat}, so that's a dependency I would remove. Here's how typical cli message works (example from the frictionless R package):

  # Check resources
  if (length(package$resources) == 0) {
    cli::cli_abort(
      c(
        "{.arg package} must have resources.",
        "i" = "Use {.fun add_resource} to add resources."
      ),
      class = "frictionless_error_package_without_resources"
    )
  }

This would print:

Image

And you can test it like:

expect_error(
  write_package(p_empty, dir),
  class = "frictionless_error_package_without_resources"
)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions