Problem
Many fpr functions use global variables as default arguments:
fpr_kable <- function(dat, font = font_set, ...) {
This works in RStudio (persistent global env) but fails in scripted/CI contexts like GitHub Actions builds where environment scoping is stricter.
Error example:
Error in `fpr::fpr_kable()`:
! object 'font_set' not found
Proposed Solution
Replace global variable defaults with getOption() pattern:
fpr_kable <- function(dat, font = getOption("fpr.font_set", 11), ...) {
Implementation
- Audit functions for global variable dependencies
- Create options list with defaults:
# In zzz.R or similar
.onLoad <- function(libname, pkgname) {
options(
fpr.font_set = 11,
fpr.photo_width = "100%"
# ... other defaults
)
}
- Update function signatures to use
getOption()
- Document available options in package docs
Benefits
- Works in interactive AND scripted contexts
- Users can override via
options(fpr.font_set = 14)
- Enables GitHub Actions builds for bookdown reports
- Cleaner, more explicit design
Known Global Variables to Audit
font_set
photo_width
- (need full audit)
Related
Problem
Many fpr functions use global variables as default arguments:
This works in RStudio (persistent global env) but fails in scripted/CI contexts like GitHub Actions builds where environment scoping is stricter.
Error example:
Proposed Solution
Replace global variable defaults with
getOption()pattern:Implementation
getOption()Benefits
options(fpr.font_set = 14)Known Global Variables to Audit
font_setphoto_widthRelated