From 7d5c2f0a2e004b10727cdd6a0a5a0911cc54de9c Mon Sep 17 00:00:00 2001 From: Yethal Date: Thu, 23 Jun 2022 13:32:11 +0200 Subject: [PATCH] Added delete-merged-branches.nu (#255) Co-authored-by: Yethal --- .../branch-protections/branch-protections.yml | 2 +- github/merged-branches/README.md | 9 +++++++ github/merged-branches/merged-branches.nu | 15 +++++++++++ github/merged-branches/merged-branches.yml | 25 +++++++++++++++++++ 4 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 github/merged-branches/README.md create mode 100644 github/merged-branches/merged-branches.nu create mode 100644 github/merged-branches/merged-branches.yml diff --git a/github/branch-protections/branch-protections.yml b/github/branch-protections/branch-protections.yml index 6cf959d..b2cd903 100644 --- a/github/branch-protections/branch-protections.yml +++ b/github/branch-protections/branch-protections.yml @@ -18,7 +18,7 @@ jobs: - name: Setup Nu uses: hustcer/setup-nu@main with: - version: '0.63.0' + version: '0.64.0' - run: ./branch-protections.nu env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/github/merged-branches/README.md b/github/merged-branches/README.md new file mode 100644 index 0000000..be09fe0 --- /dev/null +++ b/github/merged-branches/README.md @@ -0,0 +1,9 @@ +# Merged Branches + +### Definition + +Do your developers often forget to delete their branches after merging PRs? Are you tired of manually going into every repository and deleting them? Don't! Let nushell do it for you! + +### Setup +1. Create a repo in your organization account to store the github action +1. Push both the attached script and the github action to the repo \ No newline at end of file diff --git a/github/merged-branches/merged-branches.nu b/github/merged-branches/merged-branches.nu new file mode 100644 index 0000000..be4127f --- /dev/null +++ b/github/merged-branches/merged-branches.nu @@ -0,0 +1,15 @@ +#!/usr/bin/env nu +gh api $"orgs/($env.OWNER)/repos" +|from json +|each {|repo| + gh api $"repos/($env.OWNER)/($repo.name)/pulls?state=closed" + |from json + |if ($in|length) > 0 { + each {|pull| + print $"Removing branch ($pull.head.ref) from repo ($repo.name)" + gh api -X DELETE $"repos/($env.OWNER)/($repo.name)/git/refs/heads/($pull.head.ref)" + } + } else { + print $"Repo ($repo.name) has no branches to delete" + } +} \ No newline at end of file diff --git a/github/merged-branches/merged-branches.yml b/github/merged-branches/merged-branches.yml new file mode 100644 index 0000000..739b8ed --- /dev/null +++ b/github/merged-branches/merged-branches.yml @@ -0,0 +1,25 @@ +--- +name: Delete merged branches from all repositories +'on': + schedule: + - cron: '0 * * * *' + workflow_dispatch: + +defaults: + run: + shell: nu {0} + +jobs: + delete-merged-branches: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + - name: Setup Nu + uses: hustcer/setup-nu@main + with: + version: '0.64.0' + - run: ./merged-branches.nu + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + OWNER: ${{ github.repository_owner }}