From 646270cc4d792344ee7819348091e91b29cda02d Mon Sep 17 00:00:00 2001 From: Josiah Parry Date: Thu, 20 Feb 2025 13:26:12 -0800 Subject: [PATCH 1/3] add use_extendr_badge() --- R/badge.R | 34 ++++++++++++++++++++++++++++ R/use_extendr.R | 6 +++++ README.Rmd | 1 + man/use_extendr_badge.Rd | 23 +++++++++++++++++++ tests/testthat/_snaps/use_extendr.md | 14 ++++++++++++ 5 files changed, 78 insertions(+) create mode 100644 R/badge.R create mode 100644 man/use_extendr_badge.Rd diff --git a/R/badge.R b/R/badge.R new file mode 100644 index 00000000..94fd8ba6 --- /dev/null +++ b/R/badge.R @@ -0,0 +1,34 @@ +#' extendr README badge +#' +#' Add the version of extendr being used by an R package to its README. +#' +#' Requires `usethis` to be available. +#' +#' @examples +#' \dontrun{ +#' use_extendr_badge() +#' } +#' +#' @inheritParams use_extendr +use_extendr_badge <- function(path = ".") { + rlang::check_installed("usethis") + meta <- read_cargo_metadata(path) + deps <- meta[[c("packages", "dependencies")]][[1]] + + if (rlang::is_null(deps)) { + cli::cli_abort("Unable to determine version of `extendr-api`") + } + + is_extendr <- which(deps$name == "extendr-api") + if (!rlang::is_bare_numeric(is_extendr, 1)) { + cli::cli_abort("Unable to determine version of `extendr-api`") + } + + extendr_version <- deps$req[is_extendr] + + usethis::use_badge( + "extendr", + "https://extendr.github.io/extendr/extendr_api/", + sprintf("https://img.shields.io/badge/extendr-%s-276DC2", extendr_version) + ) +} diff --git a/R/use_extendr.R b/R/use_extendr.R index e33be192..ffce5ce7 100644 --- a/R/use_extendr.R +++ b/R/use_extendr.R @@ -206,6 +206,9 @@ use_extendr <- function(path = ".", Sys.chmod("configure", "0755") } + # Set the minimum version of R to 4.2 as now required by libR-sys 0.7 + usethis::use_package("R", "Depends", "4.2") + # the temporary cargo directory must be ignored usethis::use_build_ignore("src/.cargo") @@ -225,6 +228,9 @@ use_extendr <- function(path = ".", usethis::use_build_ignore("src/Makevars.win") usethis::use_git_ignore("src/Makevars.win") + + use_extendr_badge() + if (!isTRUE(quiet)) { cli::cli_alert_success("Finished configuring {.pkg extendr} for package {.pkg {pkg_name}}.") cli::cli_ul( diff --git a/README.Rmd b/README.Rmd index 0bc04b4a..47abbfec 100644 --- a/README.Rmd +++ b/README.Rmd @@ -22,6 +22,7 @@ knitr::opts_chunk$set( [![Lifecycle: stable](https://img.shields.io/badge/lifecycle-stable-brightgreen.svg)](https://lifecycle.r-lib.org/articles/stages.html#stable) [![R build status](https://github.com/extendr/rextendr/workflows/R-CMD-check/badge.svg)](https://github.com/extendr/rextendr/actions) [![Codecov test coverage](https://codecov.io/gh/extendr/rextendr/graph/badge.svg)](https://app.codecov.io/gh/extendr/rextendr) +[![extendr](https://img.shields.io/badge/extendr-^0.7.1-276DC2)](https://extendr.github.io/extendr/extendr_api/) ## Installation diff --git a/man/use_extendr_badge.Rd b/man/use_extendr_badge.Rd new file mode 100644 index 00000000..38f3ccbb --- /dev/null +++ b/man/use_extendr_badge.Rd @@ -0,0 +1,23 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/badge.R +\name{use_extendr_badge} +\alias{use_extendr_badge} +\title{extendr README badge} +\usage{ +use_extendr_badge(path = ".") +} +\arguments{ +\item{path}{File path to the package for which to generate wrapper code.} +} +\value{ +Returns a boolean invisibly. +} +\description{ +Add the version of extendr being used by an R package to its README. +} +\examples{ +\dontrun{ +use_extendr_badge() +} + +} diff --git a/tests/testthat/_snaps/use_extendr.md b/tests/testthat/_snaps/use_extendr.md index 6d53afcf..ee4aa38a 100644 --- a/tests/testthat/_snaps/use_extendr.md +++ b/tests/testthat/_snaps/use_extendr.md @@ -410,6 +410,13 @@ > File 'tools/msrv.R' already exists. Skip writing the file. > File 'configure' already exists. Skip writing the file. > File 'configure.win' already exists. Skip writing the file. + ! Can't find a README for the current project. + i See `usethis::use_readme_rmd()` for help creating this file. + i Badge link will only be printed to screen. + [ ] Copy and paste the following lines into 'README': + + [![extendr](https://img.shields.io/badge/extendr-*-276DC2)](https://extendr.github.io/extendr/extendr_api/) + v Finished configuring extendr for package testpkg.wrap. * Please run `rextendr::document()` for changes to take effect. @@ -430,6 +437,13 @@ v Writing 'tools/msrv.R' v Writing 'configure' v Writing 'configure.win' + ! Can't find a README for the current project. + i See `usethis::use_readme_rmd()` for help creating this file. + i Badge link will only be printed to screen. + [ ] Copy and paste the following lines into 'README': + + [![extendr](https://img.shields.io/badge/extendr-*-276DC2)](https://extendr.github.io/extendr/extendr_api/) + v Finished configuring extendr for package testpkg. * Please run `rextendr::document()` for changes to take effect. From 2cdae4e059b182fd30b22b02910442385a4cc6cb Mon Sep 17 00:00:00 2001 From: Josiah Parry Date: Tue, 25 Feb 2025 10:50:33 -0800 Subject: [PATCH 2/3] update NEWS.md and add to NAMESPACE and pkgdown --- NAMESPACE | 1 + NEWS.md | 1 + R/badge.R | 1 + _pkgdown.yml | 1 + man/use_extendr_badge.Rd | 6 +++--- 5 files changed, 7 insertions(+), 3 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index 8570dae7..6bc39ca0 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -23,6 +23,7 @@ export(rust_source) export(to_toml) export(use_crate) export(use_extendr) +export(use_extendr_badge) export(use_msrv) export(vendor_pkgs) export(write_license_note) diff --git a/NEWS.md b/NEWS.md index 73280190..1494b112 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,6 @@ # rextendr (development version) +* `use_extendr_badge()` has been added to add an extendr-specific badge to a `README.Rmd` via `usethis::use_badge()` * `purrr` has been replaced with [`R/standalone-purrr.R`](https://github.com/r-lib/rlang/blob/main/R/standalone-purrr.R) removing `purrr` from `Imports` * `document()` will no longer try to save all open files using rstudioapi * `use_cran_default()` has been removed as the default package template is CRAN compatible diff --git a/R/badge.R b/R/badge.R index 94fd8ba6..61815192 100644 --- a/R/badge.R +++ b/R/badge.R @@ -10,6 +10,7 @@ #' } #' #' @inheritParams use_extendr +#' @export use_extendr_badge <- function(path = ".") { rlang::check_installed("usethis") meta <- read_cargo_metadata(path) diff --git a/_pkgdown.yml b/_pkgdown.yml index 8fc013b3..716b3cfd 100644 --- a/_pkgdown.yml +++ b/_pkgdown.yml @@ -32,3 +32,4 @@ reference: - make_module_macro - rust_sitrep - read_cargo_metadata + - use_extendr_badge diff --git a/man/use_extendr_badge.Rd b/man/use_extendr_badge.Rd index 38f3ccbb..2b71af93 100644 --- a/man/use_extendr_badge.Rd +++ b/man/use_extendr_badge.Rd @@ -9,12 +9,12 @@ use_extendr_badge(path = ".") \arguments{ \item{path}{File path to the package for which to generate wrapper code.} } -\value{ -Returns a boolean invisibly. -} \description{ Add the version of extendr being used by an R package to its README. } +\details{ +Requires \code{usethis} to be available. +} \examples{ \dontrun{ use_extendr_badge() From acb6da241e7fd33b4166ba02686a72e065cc5670 Mon Sep 17 00:00:00 2001 From: Josiah Parry Date: Tue, 25 Feb 2025 10:51:18 -0800 Subject: [PATCH 3/3] remove extendr badge from readme --- README.Rmd | 1 - 1 file changed, 1 deletion(-) diff --git a/README.Rmd b/README.Rmd index 47abbfec..0bc04b4a 100644 --- a/README.Rmd +++ b/README.Rmd @@ -22,7 +22,6 @@ knitr::opts_chunk$set( [![Lifecycle: stable](https://img.shields.io/badge/lifecycle-stable-brightgreen.svg)](https://lifecycle.r-lib.org/articles/stages.html#stable) [![R build status](https://github.com/extendr/rextendr/workflows/R-CMD-check/badge.svg)](https://github.com/extendr/rextendr/actions) [![Codecov test coverage](https://codecov.io/gh/extendr/rextendr/graph/badge.svg)](https://app.codecov.io/gh/extendr/rextendr) -[![extendr](https://img.shields.io/badge/extendr-^0.7.1-276DC2)](https://extendr.github.io/extendr/extendr_api/) ## Installation