From 86f245effb8746edae1655ece5038bd8cfaaf908 Mon Sep 17 00:00:00 2001 From: Jonathan Chang Date: Sun, 22 Mar 2020 13:12:48 +1100 Subject: [PATCH] dev-cmd: new pr-publish command --- Library/Homebrew/dev-cmd/pr-publish.rb | 36 +++++++++++++++++++ .../Homebrew/test/dev-cmd/pr-publish_spec.rb | 7 ++++ 2 files changed, 43 insertions(+) create mode 100644 Library/Homebrew/dev-cmd/pr-publish.rb create mode 100644 Library/Homebrew/test/dev-cmd/pr-publish_spec.rb diff --git a/Library/Homebrew/dev-cmd/pr-publish.rb b/Library/Homebrew/dev-cmd/pr-publish.rb new file mode 100644 index 0000000000..c2a81d9e9e --- /dev/null +++ b/Library/Homebrew/dev-cmd/pr-publish.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +require "cli/parser" +require "utils/github" + +module Homebrew + module_function + + def pr_publish_args + Homebrew::CLI::Parser.new do + usage_banner <<~EOS + `pr-publish` + + Publishes bottles for a pull request with GitHub Actions. + Requires write access to the repository. + EOS + switch :verbose + end + end + + def pr_publish + pr_publish_args.parse + + odie "You need to specify a pull request number!" if Homebrew.args.named.empty? + + args.named.each do |arg| + arg = "#{CoreTap.instance.default_remote}/pull/#{arg}" if arg.to_i.positive? + url_match = arg.match HOMEBREW_PULL_OR_COMMIT_URL_REGEX + _, user, repo, issue = *url_match + tap = Tap.fetch(user, repo) if repo.match?(HOMEBREW_OFFICIAL_REPO_PREFIXES_REGEX) + odie "Not a GitHub pull request: #{arg}" unless issue + ohai "Dispatching #{tap} pull request ##{issue}" + GitHub.dispatch(user, repo, "Publish ##{issue}", pull_request: issue) + end + end +end diff --git a/Library/Homebrew/test/dev-cmd/pr-publish_spec.rb b/Library/Homebrew/test/dev-cmd/pr-publish_spec.rb new file mode 100644 index 0000000000..f0b8e25cd6 --- /dev/null +++ b/Library/Homebrew/test/dev-cmd/pr-publish_spec.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +require "cmd/shared_examples/args_parse" + +describe "Homebrew.pr_publish_args" do + it_behaves_like "parseable arguments" +end