feat: renv-cache overhaul for dynamic repos, explicit caching, and security stripping#237
Conversation
- Support dynamic repositories for cloning lockfiles. - Add packages option for caching specific packages explicitly. - Introduce recursive stripping (skipPackages) and purge private caches. - Resolve system requirements via Posit Package Manager API (opt-in). - Avoid failing build when no RENV_DIR exists, ensuring safe Rscript path executions. Co-authored-by: MiguelRodo <23501332+MiguelRodo@users.noreply.github.com>
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
- Skip the Rscript requirement check if no explicit packages, dynamic repositories, or valid renv local directory exists to prevent failing gracefully in environments with disabled cache features. Co-authored-by: MiguelRodo <23501332+MiguelRodo@users.noreply.github.com>
- Skip the Rscript requirement check if no explicit packages, dynamic repositories, or valid renv local directory exists to prevent failing gracefully in environments with disabled cache features. Co-authored-by: MiguelRodo <23501332+MiguelRodo@users.noreply.github.com>
…requirements - `skipPackages` and `pkgExclude` parameters now act symmetrically, providing the same exclusion and strip functionality regardless of which is used. - Enabled `installSystemRequirements` to explicitly default to `true` according to feature configuration specification. Co-authored-by: MiguelRodo <23501332+MiguelRodo@users.noreply.github.com>
… packages - Rename the `packages` parameter to `pkg` to align with the existing naming convention of `pkgExclude`. - Reconcile `skipPackages` and `pkgExclude` overlap by entirely removing `skipPackages` from devcontainer-feature.json and the implementation script. Users will solely rely on the existing `pkgExclude` to trigger recursive cache stripping and ignore behavior. - Ensure system requirements explicitly default to true for the environment context. Co-authored-by: MiguelRodo <23501332+MiguelRodo@users.noreply.github.com>
This submission refactors the renv-cache DevContainer feature by moving beyond local
.devcontainer/renv/requirements to full dynamic caching.Users can now specify
repositoriesto clone and cache profiles remotely. The feature introduces explicit cache targeting (packages) and importantly, adds a recursive stripping function (skipPackages) to ensure sensitive private dependencies are excluded and actively purged from the final Docker cache layers using the Posit API for requirements.Care has been taken to properly encapsulate R scripting processes within user execution boundaries and strictly obey standard lifecycle dependencies.
PR created automatically by Jules for task 16545879209187589265 started by @MiguelRodo