hiiro 0.1.161 → 0.1.163

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/bin/h-pr +56 -14
  3. data/lib/hiiro/version.rb +1 -1
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bba280c058e3179fcf5430d57c5ad67725dfdd5787d05e256f6cefd5561b809d
4
- data.tar.gz: 67315c92d268a4163193049a36b5d9e3e29fd70378efc9560a1d748d45216ed7
3
+ metadata.gz: 2c3b8a7ef37a2274bf4b52e02065157b4b8594acfc46247515567a70a72d4358
4
+ data.tar.gz: f82e3af631f319bcfaf44ad0fee394af8e06047efa9c90643e3566a299e2ba7a
5
5
  SHA512:
6
- metadata.gz: 652249cc95ecae99c1b4de0514117ee5c00a1911e00c85c4c236a15f9593493dadb92cd0e4c6311cd8d930f4fe40ca51fa790e0b03154a678795b3ada931c814
7
- data.tar.gz: 030563f1521442ab306ff67e8bf454c7729ce711f35a02371d3b69da3d1c36e578cf3ad99b10b3f6dd3164c359cc6977511393a1e69a2a81d321d376e23a9fff
6
+ metadata.gz: f19c0547afbd4b7daed0b32e53698eb03ec7e561608a4da56dc7f988afed623048e8085868190917e5f08f640fd7c41b42119465dad98922f44a5ba67c32b83e
7
+ data.tar.gz: 6ea2b1d2cfa23b14e78684647f373452682a2996dd957f17f641f018c4434df54950f902fb9c5b03425dc134de38368eaa35107aca98f8d0852e2ee3f78f969e
data/bin/h-pr CHANGED
@@ -245,14 +245,20 @@ class PinnedPRManager
245
245
  JSON.parse(output) rescue []
246
246
  end
247
247
 
248
+ def fetch_assigned_prs
249
+ output = `gh pr list --assignee @me --state open --json number,title,headRefName,url 2>/dev/null`.strip
250
+ return [] if output.empty?
251
+ JSON.parse(output) rescue []
252
+ end
253
+
248
254
  def fetch_my_and_assigned_prs
249
- authored = `gh pr list --author @me --state open --json number,title,headRefName,url 2>/dev/null`.strip
250
- assigned = `gh pr list --assignee @me --state open --json number,title,headRefName,url 2>/dev/null`.strip
255
+ authored_prs = fetch_my_prs
256
+ assigned_prs = fetch_assigned_prs
251
257
 
252
- authored_prs = authored.empty? ? [] : (JSON.parse(authored) rescue [])
253
- assigned_prs = assigned.empty? ? [] : (JSON.parse(assigned) rescue [])
258
+ authored_numbers = authored_prs.map { |pr| pr['number'] }.to_set
259
+ assigned_prs.each { |pr| pr['assigned'] = true unless authored_numbers.include?(pr['number']) }
260
+ authored_prs.each { |pr| pr['authored'] = true }
254
261
 
255
- # Dedupe by PR number
256
262
  (authored_prs + assigned_prs).uniq { |pr| pr['number'] }
257
263
  end
258
264
 
@@ -452,13 +458,11 @@ class PinnedPRManager
452
458
 
453
459
  reviews_str =
454
460
  if pr['reviews']
455
- reviews = pr['reviews'].map do |r|
456
- parts = []
457
- parts << "#{r['approved']} approved" if r['approved'] > 0
458
- parts << "#{r['changes_requested']} changes" if r['changes_requested'] > 0
459
- parts.empty? ? "" : " | #{parts.join(', ')}"
460
- end
461
- reviews.join('; ')
461
+ r = pr['reviews']
462
+ parts = []
463
+ parts << "#{r['approved']} approved" if r['approved'].to_i > 0
464
+ parts << "#{r['changes_requested']} changes" if r['changes_requested'].to_i > 0
465
+ parts.empty? ? "" : " | #{parts.join(', ')}"
462
466
  else
463
467
  ""
464
468
  end
@@ -955,6 +959,40 @@ Hiiro.run(*ARGV, plugins: [Pins]) do
955
959
  filtered.each_with_index { |pr, i| puts pinned_manager.display_pinned(pr, i) }
956
960
  end
957
961
 
962
+ add_subcmd(:assigned) do
963
+ prs = pinned_manager.fetch_assigned_prs
964
+
965
+ if prs.empty?
966
+ puts "No PRs assigned to you"
967
+ next
968
+ end
969
+
970
+ pinned_numbers = pinned_manager.load_pinned.map { |p| p['number'] }.to_set
971
+ puts "PRs assigned to you (#{prs.count}):"
972
+ puts
973
+ prs.each_with_index do |pr, i|
974
+ tracked = pinned_numbers.include?(pr['number']) ? ' [tracked]' : ''
975
+ puts " #{i + 1}. ##{pr['number']} #{pr['title']} [#{pr['headRefName']}]#{tracked}"
976
+ end
977
+ end
978
+
979
+ add_subcmd(:created) do
980
+ prs = pinned_manager.fetch_my_prs
981
+
982
+ if prs.empty?
983
+ puts "No open PRs created by you"
984
+ next
985
+ end
986
+
987
+ pinned_numbers = pinned_manager.load_pinned.map { |p| p['number'] }.to_set
988
+ puts "PRs created by you (#{prs.count}):"
989
+ puts
990
+ prs.each_with_index do |pr, i|
991
+ tracked = pinned_numbers.include?(pr['number']) ? ' [tracked]' : ''
992
+ puts " #{i + 1}. ##{pr['number']} #{pr['title']} [#{pr['headRefName']}]#{tracked}"
993
+ end
994
+ end
995
+
958
996
  add_subcmd(:missing) do
959
997
  my_prs = pinned_manager.fetch_my_and_assigned_prs
960
998
  pinned_numbers = pinned_manager.load_pinned.map { |p| p['number'] }
@@ -967,7 +1005,10 @@ Hiiro.run(*ARGV, plugins: [Pins]) do
967
1005
 
968
1006
  puts "Untracked PRs (#{missing.count}):"
969
1007
  puts
970
- missing.each { |pr| puts " ##{pr['number']} [#{pr['headRefName']}] #{pr['title']}" }
1008
+ missing.each do |pr|
1009
+ relationship = pr['assigned'] ? 'assigned' : 'authored'
1010
+ puts " ##{pr['number']} [#{pr['headRefName']}] #{pr['title']} (#{relationship})"
1011
+ end
971
1012
  end
972
1013
 
973
1014
  add_subcmd(:amissing) do
@@ -985,8 +1026,9 @@ Hiiro.run(*ARGV, plugins: [Pins]) do
985
1026
  tmpfile = Tempfile.new(['missing-prs-', '.yml'])
986
1027
  lines = ['---']
987
1028
  missing.each do |pr|
1029
+ relationship = pr['assigned'] ? 'assigned' : 'authored'
988
1030
  lines << ''
989
- lines << "# [#{pr['headRefName']}] #{pr['title']}"
1031
+ lines << "# [#{relationship}] [#{pr['headRefName']}] #{pr['title']}"
990
1032
  lines << "# url: #{pr['url']}"
991
1033
  lines << "- #{pr['number']}"
992
1034
  end
data/lib/hiiro/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Hiiro
2
- VERSION = "0.1.161"
2
+ VERSION = "0.1.163"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hiiro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.161
4
+ version: 0.1.163
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Toyota