From 54a5690391cc76c292ae9ea0ccd6767cd6880ab5 Mon Sep 17 00:00:00 2001 From: Ruoyu Zhong Date: Thu, 11 May 2023 01:29:57 +0800 Subject: [PATCH 1/5] dev-cmd/tap-new: throw an error when tap is installed --- Library/Homebrew/dev-cmd/tap-new.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/Library/Homebrew/dev-cmd/tap-new.rb b/Library/Homebrew/dev-cmd/tap-new.rb index bb8099a07b..5f9c2bcc53 100644 --- a/Library/Homebrew/dev-cmd/tap-new.rb +++ b/Library/Homebrew/dev-cmd/tap-new.rb @@ -36,6 +36,7 @@ module Homebrew tap = args.named.to_taps.fetch(0) odie "Invalid tap name '#{tap}'" unless tap.path.to_s.match?(HOMEBREW_TAP_PATH_REGEX) + odie "Tap is already installed!" if tap.installed? titleized_user = tap.user.dup titleized_repo = tap.repo.dup From adbe6edc844866e8841ca9b0d1ab4b4c9932956b Mon Sep 17 00:00:00 2001 From: Ruoyu Zhong Date: Fri, 19 Apr 2024 10:43:41 +0800 Subject: [PATCH 2/5] dev-cmd/tap-new: use `actions/upload-artifact@v4` --- Library/Homebrew/dev-cmd/tap-new.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Library/Homebrew/dev-cmd/tap-new.rb b/Library/Homebrew/dev-cmd/tap-new.rb index 5f9c2bcc53..b8533976b7 100644 --- a/Library/Homebrew/dev-cmd/tap-new.rb +++ b/Library/Homebrew/dev-cmd/tap-new.rb @@ -98,9 +98,9 @@ module Homebrew - name: Upload bottles as artifact if: always() && github.event_name == 'pull_request' - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: bottles + name: bottles_${{ matrix.os }} path: '*.bottle.*' YAML From 7e43853216ad0d8e68ece23c1f3f8786f78c190b Mon Sep 17 00:00:00 2001 From: Ruoyu Zhong Date: Fri, 19 Apr 2024 11:03:54 +0800 Subject: [PATCH 3/5] dev-cmd/tap-new: fix GitHub Packages user It should be `github.repository_owner` rather than `github.actor`. --- Library/Homebrew/dev-cmd/tap-new.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/dev-cmd/tap-new.rb b/Library/Homebrew/dev-cmd/tap-new.rb index b8533976b7..7fc1009236 100644 --- a/Library/Homebrew/dev-cmd/tap-new.rb +++ b/Library/Homebrew/dev-cmd/tap-new.rb @@ -129,7 +129,7 @@ module Homebrew env: HOMEBREW_GITHUB_API_TOKEN: ${{ github.token }} HOMEBREW_GITHUB_PACKAGES_TOKEN: ${{ github.token }} - HOMEBREW_GITHUB_PACKAGES_USER: ${{ github.actor }} + HOMEBREW_GITHUB_PACKAGES_USER: ${{ github.repository_owner }} PULL_REQUEST: ${{ github.event.pull_request.number }} run: brew pr-pull --debug --tap=$GITHUB_REPOSITORY $PULL_REQUEST From 82ad03fe2893fa1ea1f093291f82a16e0b594880 Mon Sep 17 00:00:00 2001 From: Ruoyu Zhong Date: Fri, 19 Apr 2024 11:05:39 +0800 Subject: [PATCH 4/5] dev-cmd/tap-new: various improvements 1. Update `actions/cache` to `v4`. 2. Unset GitHub Packages tokens if unused. 3. Quote shell variables. --- Library/Homebrew/dev-cmd/tap-new.rb | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Library/Homebrew/dev-cmd/tap-new.rb b/Library/Homebrew/dev-cmd/tap-new.rb index 7fc1009236..c77d943292 100644 --- a/Library/Homebrew/dev-cmd/tap-new.rb +++ b/Library/Homebrew/dev-cmd/tap-new.rb @@ -63,11 +63,13 @@ module Homebrew actions_main = <<~YAML name: brew test-bot + on: push: branches: - #{branch} pull_request: + jobs: test-bot: strategy: @@ -80,8 +82,7 @@ module Homebrew uses: Homebrew/actions/setup-homebrew@master - name: Cache Homebrew Bundler RubyGems - id: cache - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ${{ steps.set-up-homebrew.outputs.gems-path }} key: ${{ runner.os }}-rubygems-${{ steps.set-up-homebrew.outputs.gems-hash }} @@ -93,7 +94,7 @@ module Homebrew - run: brew test-bot --only-tap-syntax - - run: brew test-bot --only-formulae#{" --root-url=#{root_url}" if root_url} + - run: brew test-bot --only-formulae#{" --root-url='#{root_url}'" if root_url} if: github.event_name == 'pull_request' - name: Upload bottles as artifact @@ -106,10 +107,12 @@ module Homebrew actions_publish = <<~YAML name: brew pr-pull + on: pull_request_target: types: - labeled + jobs: pr-pull: if: contains(github.event.pull_request.labels.*.name, '#{label}') @@ -128,10 +131,10 @@ module Homebrew - name: Pull bottles env: HOMEBREW_GITHUB_API_TOKEN: ${{ github.token }} - HOMEBREW_GITHUB_PACKAGES_TOKEN: ${{ github.token }} - HOMEBREW_GITHUB_PACKAGES_USER: ${{ github.repository_owner }} + HOMEBREW_GITHUB_PACKAGES_TOKEN: #{args.github_packages? ? "${{ github.token }}" : "null"} + HOMEBREW_GITHUB_PACKAGES_USER: #{args.github_packages? ? "${{ github.repository_owner }}" : "null"} PULL_REQUEST: ${{ github.event.pull_request.number }} - run: brew pr-pull --debug --tap=$GITHUB_REPOSITORY $PULL_REQUEST + run: brew pr-pull --debug --tap="$GITHUB_REPOSITORY" "$PULL_REQUEST" - name: Push commits uses: Homebrew/actions/git-try-push@master @@ -143,7 +146,7 @@ module Homebrew if: github.event.pull_request.head.repo.fork == false env: BRANCH: ${{ github.event.pull_request.head.ref }} - run: git push --delete origin $BRANCH + run: git push --delete origin "$BRANCH" YAML (tap.path/".github/workflows").mkpath From ea37708591d3582e6a0857f582d9cc4290ade227 Mon Sep 17 00:00:00 2001 From: Ruoyu Zhong Date: Fri, 19 Apr 2024 23:14:35 +0800 Subject: [PATCH 5/5] dev-cmd/tap-new: simplify --- Library/Homebrew/dev-cmd/tap-new.rb | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/Library/Homebrew/dev-cmd/tap-new.rb b/Library/Homebrew/dev-cmd/tap-new.rb index c77d943292..84d0d415a6 100644 --- a/Library/Homebrew/dev-cmd/tap-new.rb +++ b/Library/Homebrew/dev-cmd/tap-new.rb @@ -105,6 +105,18 @@ module Homebrew path: '*.bottle.*' YAML + pr_pull_permissions = { + "contents" => "write", + "pull-requests" => "write", + } + pr_pull_env = { + "HOMEBREW_GITHUB_API_TOKEN" => "${{ github.token }}", + } + if args.github_packages? + pr_pull_permissions["packages"] = "write" + pr_pull_env["HOMEBREW_GITHUB_PACKAGES_TOKEN"] = "${{ github.token }}" + pr_pull_env["HOMEBREW_GITHUB_PACKAGES_USER"] = "${{ github.repository_owner }}" + end actions_publish = <<~YAML name: brew pr-pull @@ -118,9 +130,7 @@ module Homebrew if: contains(github.event.pull_request.labels.*.name, '#{label}') runs-on: ubuntu-22.04 permissions: - contents: write - packages: #{args.github_packages? ? "write" : "none"} - pull-requests: write + #{pr_pull_permissions.sort.map { |k, v| " #{k}: #{v}" }.join("\n")} steps: - name: Set up Homebrew uses: Homebrew/actions/setup-homebrew@master @@ -130,9 +140,7 @@ module Homebrew - name: Pull bottles env: - HOMEBREW_GITHUB_API_TOKEN: ${{ github.token }} - HOMEBREW_GITHUB_PACKAGES_TOKEN: #{args.github_packages? ? "${{ github.token }}" : "null"} - HOMEBREW_GITHUB_PACKAGES_USER: #{args.github_packages? ? "${{ github.repository_owner }}" : "null"} + #{pr_pull_env.sort.map { |k, v| " #{k}: #{v}" }.join("\n")} PULL_REQUEST: ${{ github.event.pull_request.number }} run: brew pr-pull --debug --tap="$GITHUB_REPOSITORY" "$PULL_REQUEST"