From b459ee863dfd8d0bb889ff13e53b0c7cd01cd865 Mon Sep 17 00:00:00 2001 From: Taimur Khan <59065240+thisistaimur@users.noreply.github.com> Date: Wed, 3 Jun 2026 09:04:44 +0200 Subject: [PATCH 1/3] ci: make argument usage generation tolerate conflicting new arg docs --- .github/scripts/update_argument_usage.R | 30 +++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/.github/scripts/update_argument_usage.R b/.github/scripts/update_argument_usage.R index 482c6ac..3132ec9 100644 --- a/.github/scripts/update_argument_usage.R +++ b/.github/scripts/update_argument_usage.R @@ -18,6 +18,27 @@ normalize_arg_key <- function(x) { x } +synthesise_conflict_description <- function(arg_key, candidates) { + type_terms <- unique(unlist(regmatches( + tolower(candidates), + gregexpr("\\b(character|logical|numeric|integer|list|vector|function|data frame|sf|spatraster|cfvariable)\\b", tolower(candidates), perl = TRUE) + ))) + type_terms <- type_terms[nzchar(type_terms)] + + if (length(type_terms)) { + return(paste( + sprintf("%s.", paste(tools::toTitleCase(type_terms), collapse = "/")), + "Shared argument reused across package functions;", + "see function-specific help for exact behaviour." + )) + } + + paste( + "Shared argument reused across package functions;", + "see function-specific help for exact behaviour." + ) +} + xml_escape <- function(x) { x <- gsub("&", "&", x, fixed = TRUE) x <- gsub("<", "<", x, fixed = TRUE) @@ -414,7 +435,8 @@ build_doc_index <- function(ordered_functions, rd_docs) { resolve_argument_description <- function(arg_key, existing_argument_map, doc_index) { # Existing workbook text wins to avoid churn. New arguments must either - # have a single documented description or an explicit override above. + # have a single documented description, an explicit override above, or + # fall back to a generic shared-argument description. if (!is.null(existing_argument_map[[arg_key]])) { existing_usage <- existing_argument_map[[arg_key]]$usage if (nzchar(normalize_ws(existing_usage))) { @@ -434,12 +456,12 @@ resolve_argument_description <- function(arg_key, existing_argument_map, doc_ind } if (length(candidates) > 1) { - stop( + warning( "Conflicting descriptions found for new argument ", arg_key, ": ", paste(candidates, collapse = " | "), - ". Add a canonical entry to argument_description_overrides in ", - ".github/scripts/update_argument_usage.R." + ". Falling back to a generic shared-argument description." ) + return(synthesise_conflict_description(arg_key, candidates)) } candidates[[1]] From d1613753c74d7e7dab31c9539f383d1d3c7e25c8 Mon Sep 17 00:00:00 2001 From: Taimur Khan <59065240+thisistaimur@users.noreply.github.com> Date: Wed, 3 Jun 2026 10:37:50 +0200 Subject: [PATCH 2/3] docs: refresh ArgumentUsage workbook --- .github/scripts/update_argument_usage.R | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/scripts/update_argument_usage.R b/.github/scripts/update_argument_usage.R index 3132ec9..fa44424 100644 --- a/.github/scripts/update_argument_usage.R +++ b/.github/scripts/update_argument_usage.R @@ -700,3 +700,4 @@ write_text(shared_strings_path, new_shared_xml) write_text(sheet_path, new_sheet_xml) repack_xlsx(tempdir, xlsx_path) message("Updated ", xlsx_path) + From 91e93090fecdfa9217c40657d148ddd6ff2ba5da Mon Sep 17 00:00:00 2001 From: Taimur Khan <59065240+thisistaimur@users.noreply.github.com> Date: Wed, 3 Jun 2026 10:45:00 +0200 Subject: [PATCH 3/3] docs: refresh ArgumentUsage workbook --- .github/ArgumentUsage.xlsx | Bin 15617 -> 12806 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.github/ArgumentUsage.xlsx b/.github/ArgumentUsage.xlsx index 8be007085d9b5112106ebd2cca11162a83aee1d9..a8a3330bea4131861f0056d687435dcfd9fdb774 100644 GIT binary patch delta 9030 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 VWWZO@PGIu^qB?*Qc1Cn3^?!SVng{>@