Changelog
projr 0.0.8.9002
Breaking Changes
CRAN Compliance: Removed Automatic Package Installation
Removed automatic package installation from all package code to comply with CRAN policy that prohibits writing to user filespace during checks.
Pre-build package validation: Builds now check for all required packages (build engines, remote destinations) BEFORE starting the build process. If packages are missing, you get a clear error with a copy-paste installation command for all missing packages at once.
Improved error messages: When running interactively and a package is needed but not installed, projr provides clear, actionable error messages with exact installation commands. No automatic installation occurs to ensure CRAN compliance.
.dep_install_only()and.renv_lockfile_read()no longer automatically install missing packages. Instead, they throw clear, informative errors with installation instructions when required packages are missing.Users must now manually install required optional dependencies before using features that depend on them. The error messages provide exact installation commands.
-
This change affects functions that previously auto-installed packages like:
- Build engines (quarto, rmarkdown, bookdown)
- Remote destinations (piggyback for GitHub, osfr for OSF)
- GitHub operations (requires
ghpackage) - Git operations in test mode (requires
gertpackage) - License creation (requires
usethispackage) - Documentation generation (requires
roxygen2package) - And other optional features
For renv projects: Use
renv::install()to install dependenciesFor non-renv projects: Use
install.packages()orremotes::install_github()as shown in error messages
Bug Fixes and Improvements
Piggyback (GitHub Releases) Operations
-
Improved debug output: All piggyback operations (download, upload, delete, list) now provide detailed debug messages when
PROJR_OUTPUT_LEVEL="debug"is set- Shows repository and tag information
- Reports file names and sizes
- Displays success/failure status
- Shows error messages from piggyback operations (previously hidden by
suppressWarnings/suppressMessages) - Reports retry attempts with reasons
- Logs cache clearing operations
- Lists available vs. requested files
-
Better error handling for manifest.csv and VERSION file operations:
- Added
tryCatchblocks to handle download failures gracefully - Added informative debug messages for download attempts, successes, and failures
- Fixed silent failures - now properly reports when files are not found or downloads fail
- Improved error messages to help diagnose issues
- Added
-
Enhanced reliability:
- All retry logic now includes debug output explaining why retries are happening
- Piggyback operations provide better feedback about what’s happening under the hood
- Error messages from the
piggybackpackage are no longer silently suppressed
Usage
To enable detailed debug output for piggyback operations:
# Set environment variable before running builds
Sys.setenv(PROJR_OUTPUT_LEVEL = "debug")
projr_build_patch()
# Or pass directly to build functions
projr_build_patch(output_level = "debug")This will show detailed information about all GitHub release operations, making it much easier to diagnose issues with manifest.csv, VERSION file downloads, or release asset uploads.
- Added a
NEWS.mdfile to track changes to the package.