diff --git a/DESCRIPTION b/DESCRIPTION index 70e7631..808ad85 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -15,6 +15,13 @@ Authors@R: c( email = "will.landau.oss@gmail.com", comment = c(ORCID = "0000-0003-1878-3253") ), + person( + given = "Charlie", + family = "Gao", + role = "aut", + email = "charlie.gao@shikokuchuo.net", + comment = c(ORCID = "0000-0002-0750-061X") + ), person( family = "Eli Lilly and Company", role = "cph" @@ -23,7 +30,9 @@ Depends: R (>= 3.5.0) Imports: gh, - jsonlite + jsonlite, + nanonext, + pkgsearch Encoding: UTF-8 Language: en-US Config/testthat/edition: 3 diff --git a/NAMESPACE b/NAMESPACE index 1113829..76aec0b 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -6,3 +6,5 @@ export(review_pull_request) export(review_pull_requests) importFrom(gh,gh) importFrom(jsonlite,read_json) +importFrom(nanonext,parse_url) +importFrom(pkgsearch,ps) diff --git a/NEWS.md b/NEWS.md index d83d92d..727c1af 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,6 @@ # r.releases.utils 0.0.2.9000 (development) - +* Checks URL matches the package description for CRAN packages. # r.releases.utils 0.0.2 diff --git a/R/assert_package.R b/R/assert_package.R index b6d3df6..629a4de 100644 --- a/R/assert_package.R +++ b/R/assert_package.R @@ -40,4 +40,25 @@ assert_package_contents <- function(name, url) { paste("Found malformed URL", shQuote(url), "of package", shQuote(name)) ) } + res <- ps(name, size = 1L) + pkg <- res[["package"]] + if (length(pkg) && name == pkg) { + + purl <- parse_url(sub("/$", "", url, perl = TRUE)) + urls <- strsplit(res[["url"]], ",\n|, |\n", perl = TRUE)[[1L]] + for (u in urls) { + pu <- parse_url(sub("/$", "", u, perl = TRUE)) + purl[["host"]] == pu[["host"]] && purl[["path"]] == pu[["path"]] && + return(invisible()) + } + + burl <- parse_url(res[["bugreports"]]) + purl[["host"]] == burl[["host"]] && + purl[["path"]] == sub("/issues/*$", "", burl[["path"]], perl = TRUE) && + return(invisible()) + + return( + paste("URL of CRAN package", shQuote(name), "is not", shQuote(url)) + ) + } } diff --git a/R/package.R b/R/package.R index 7b77f63..7ff19b1 100644 --- a/R/package.R +++ b/R/package.R @@ -4,4 +4,6 @@ #' @family help #' @importFrom gh gh #' @importFrom jsonlite read_json +#' @importFrom nanonext parse_url +#' @importFrom pkgsearch ps NULL