Skip to content

Commit

Permalink
Create dependency-change
Browse files Browse the repository at this point in the history
  • Loading branch information
Bisaloo committed Aug 3, 2023
1 parent 50ff4a6 commit fb6272e
Showing 1 changed file with 71 additions and 0 deletions.
71 changes: 71 additions & 0 deletions workflows/dependency-change.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples
# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help
on:
pull_request:

name: Analyze dependency changes

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
dependency-changes:
runs-on: ubuntu-latest
env:
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
permissions:
pull-requests:
write
steps:
- name: Setup R
uses: r-lib/actions/setup-r@v2
with:
use-public-rspm: true

- name: Install dependencies
uses: r-lib/actions/setup-r-dependencies@v2
with:
packages: any::pak, glue, gh

- name: Analyze dependency changes
shell: Rscript {0}
run: |
deps_base <- pak::pkg_deps("${{ github.repository }}@${{ github.base_ref }}", dependencies = TRUE) |>
subset(!directpkg) |>
subset(is.na(priority))
# We install from PR number rather than branch to deal with the case
# of PR coming from forks
deps_head <- pak::pkg_deps("${{ github.repository }}#${{ github.event.number }}", dependencies = TRUE) |>
subset(!directpkg) |>
subset(is.na(priority))
deps_added <- deps_head |>
subset(!ref %in% deps_base$ref)
deps_removed <- deps_base |>
subset(!ref %in% deps_head$ref)
if (nrow(deps_added) + nrow(deps_removed) > 0) {
message("Dependencies have changed! Analyzing...")
msg <- glue::glue(
.sep = "\n",
"This pull request:",
"- Adds {nrow(deps_added)} new dependencies (direct and indirect)",
"- Adds {length(unique(deps_added$sysreqs))} new system dependencies",
"- Removes {nrow(deps_removed)} existing dependencies (direct and indirect)",
"- Removes {length(unique(deps_removed$sysreqs))} existing system dependencies"
)
message("Posting results as a pull request comment.")
gh::gh(
"POST /repos/{repo}/issues/{issue_number}/comments",
repo = "${{ github.repository }}",
issue_number = "${{ github.event.number }}",
body = msg
)
}

0 comments on commit fb6272e

Please sign in to comment.