From a2d31faa727a154d8c3a6cdbb09c9d6f81c80bde Mon Sep 17 00:00:00 2001 From: Issy Long Date: Sun, 26 Feb 2023 23:20:21 +0000 Subject: [PATCH] dev-cmd/contributions: Support date ranges in PR reviews query - Now `brew contributions --from=2023-02-23 --to=2023-02-26` works to limit the results for reviews. I forgot this in the original implementation, again, ugh. --- Library/Homebrew/dev-cmd/contributions.rb | 2 +- Library/Homebrew/utils/github.rb | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/Library/Homebrew/dev-cmd/contributions.rb b/Library/Homebrew/dev-cmd/contributions.rb index d9bd088f40..783c645f1b 100755 --- a/Library/Homebrew/dev-cmd/contributions.rb +++ b/Library/Homebrew/dev-cmd/contributions.rb @@ -175,7 +175,7 @@ module Homebrew commits: GitHub.repo_commit_count_for_user(repo_full_name, person, args), coauthorships: git_log_trailers_cmd(T.must(repo_path), person, "Co-authored-by", args), signoffs: git_log_trailers_cmd(T.must(repo_path), person, "Signed-off-by", args), - reviews: GitHub.count_issues("", is: "pr", repo: repo_full_name, reviewed_by: person), + reviews: GitHub.count_issues("", is: "pr", repo: repo_full_name, reviewed_by: person, args: args), } end diff --git a/Library/Homebrew/utils/github.rb b/Library/Homebrew/utils/github.rb index 3137393e6d..c6ca139401 100644 --- a/Library/Homebrew/utils/github.rb +++ b/Library/Homebrew/utils/github.rb @@ -173,11 +173,21 @@ module GitHub def search_query_string(*main_params, **qualifiers) params = main_params - params += qualifiers.flat_map do |key, value| + if (args = qualifiers.fetch(:args, nil)) + params << if args.from && args.to + "created:#{args.from}..#{args.to}" + elsif args.from + "created:>=#{args.from}" + elsif args.to + "created:<=#{args.to}" + end + end + + params += qualifiers.except(:args).flat_map do |key, value| Array(value).map { |v| "#{key.to_s.tr("_", "-")}:#{v}" } end - "q=#{URI.encode_www_form_component(params.join(" "))}&per_page=100" + "q=#{URI.encode_www_form_component(params.compact.join(" "))}&per_page=100" end def url_to(*subroutes)