hiiro 0.1.242 → 0.1.243

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 +40 -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: 4c64038815390689951d01cb646238dff574581c7aa1cd73b25ff7520f5fcc18
4
- data.tar.gz: 3cf588abdac607b3a171fec89f627739336fd253132ff806290315285ae62368
3
+ metadata.gz: 451f995a33a97fcc96f14d46d9e5db921bd0fd7d3c82e3398f36b38c11acdcbe
4
+ data.tar.gz: 297b009bba497838b4c9c2b1958632feb84e4348fcbd5027e7663f146e3c3cf1
5
5
  SHA512:
6
- metadata.gz: 4c4f1c4e6602efcef678b6f229e41b9050c49a734770dccc9e4878611e9c77a0720f1878e9a8e8cf88c5303f636e3ce530b6f8642c14edcaeeaed88aa97b7e5a
7
- data.tar.gz: 5a6523eaf01e06c0f2889a66d30fd74b35d0a8533c4925b1d01cb89c07faf99f675f949e454acf060638c99b330264fc1f45cc0cd3bf9d31c975ee7bf5ed2bb2
6
+ metadata.gz: c7c71c733b7be2b9a12ba342d681bef838a3a79b54eda8e4f0ca05a996f7738104a709079591d36465d9dc52eddcca0a3e681ea54b5433c2c82b38a97b9c1c40
7
+ data.tar.gz: '0295aa80f43ab13e2b8f1bae5a0a1fa37f1527d90384bc4167365eb183ab42d5743338f4aab8c4c9d754b8de5625f638434e79358595e44f9316dd0f9ef28514'
data/bin/h-pr CHANGED
@@ -341,8 +341,16 @@ class PinnedPRManager
341
341
  { 'approved' => approved, 'changes_requested' => changes_requested, 'commented' => commented, 'reviewers' => latest_by_author }
342
342
  end
343
343
 
344
- def display_pinned(pr, idx = nil)
345
- num = idx ? "#{(pr['slot'] || idx + 1).to_s.rjust(3)}." : ""
344
+ def display_pinned(pr, idx = nil, widths: {})
345
+ slot_w = widths[:slot] || 1
346
+ succ_w = widths[:succ] || 1
347
+ total_w = widths[:total] || 1
348
+ as_w = widths[:as] || 1
349
+ crs_w = widths[:crs] || 1
350
+
351
+ slot_num = (pr['slot'] || (idx ? idx + 1 : 1)).to_s
352
+ num = "#{slot_num.rjust(slot_w)}."
353
+ indent = " " * (slot_w + 2)
346
354
 
347
355
  check_emoji, checks_count_str =
348
356
  if pr['checks']
@@ -352,13 +360,15 @@ class PinnedPRManager
352
360
  emoji = if has_failed && has_pending
353
361
  "⏳❌"
354
362
  elsif has_failed
355
- "❌"
363
+ " ❌"
356
364
  elsif has_pending
357
- "⏳"
365
+ "⏳ "
358
366
  else
359
- "✅"
367
+ " ✅"
360
368
  end
361
- [emoji, "#{c['success']}/#{c['total']}"]
369
+ succ = c['success'].to_i.to_s.rjust(succ_w)
370
+ total = c['total'].to_i.to_s.rjust(total_w)
371
+ [emoji, "#{succ}/#{total}"]
362
372
  else
363
373
  ["", nil]
364
374
  end
@@ -373,21 +383,31 @@ class PinnedPRManager
373
383
  state_icon = "[#{bracket_parts.join(' ')}]"
374
384
 
375
385
  r = pr['reviews'] || {}
376
- as = r['approved'].to_i
386
+ as = r['approved'].to_i
377
387
  crs = r['changes_requested'].to_i
378
388
 
379
- as_str = as > 0 ? "\e[30;102m#{as}\e[0m" : '-'
380
- crs_str = crs > 0 ? "\e[30;103m#{crs}\e[0m" : '-'
389
+ as_val = as > 0 ? as.to_s : '-'
390
+ crs_val = crs > 0 ? crs.to_s : '-'
391
+ as_colored = as > 0 ? "\e[30;102m#{as_val}\e[0m" : as_val
392
+ crs_colored = crs > 0 ? "\e[30;103m#{crs_val}\e[0m" : crs_val
393
+ as_pad = " " * [as_w - as_val.length, 0].max
394
+ crs_pad = " " * [crs_w - crs_val.length, 0].max
381
395
  conflict_str = pr['mergeable'] == 'CONFLICTING' ? " \e[30;101mC\e[0m" : ""
382
- reviews_str = "#{as_str}a/#{crs_str}cr#{conflict_str}"
396
+ reviews_str = "#{as_pad}#{as_colored}a/#{crs_pad}#{crs_colored}cr#{conflict_str}"
383
397
 
384
398
  repo = pr_repo(pr)
385
- repo_label = (repo && repo != 'instacart/carrot') ? " [#{repo}]" : ""
399
+ repo_label = (repo && repo != 'instacart/carrot') ? "[#{repo}] " : ""
386
400
 
387
401
  tags = Array(pr['tags'])
388
- tags_str = tags.any? ? " " + tags.map { |t| "\e[30;104m#{t}\e[0m" }.join(' ') : ""
402
+ tags_str = tags.any? ? tags.map { |t| "\e[30;104m#{t}\e[0m" }.join(' ') : nil
403
+
404
+ branch_str = pr['headRefName'] ? " #{pr['headRefName']}" : ""
405
+ line1 = "#{num} ##{pr['number']} #{state_icon} #{reviews_str}#{branch_str}"
406
+ line2 = "#{indent}#{repo_label}#{pr['title']}"
407
+ line3 = pr['url'] ? "#{indent}#{pr['url']}" : nil
408
+ line4 = tags_str ? "#{indent}#{tags_str}" : nil
389
409
 
390
- "#{num} #{state_icon} #{reviews_str} ##{pr['number']}#{repo_label}#{tags_str} #{pr['title']}".strip
410
+ [line1, line2, line3, line4].compact.join("\n")
391
411
  end
392
412
 
393
413
  def filter_active?(opts)
@@ -767,7 +787,13 @@ Hiiro.run(*ARGV, plugins: [Pins]) do
767
787
  if opts.numbers
768
788
  results.each { |pr| puts pr['number'] }
769
789
  else
770
- results.each_with_index { |pr, idx| puts pinned_manager.display_pinned(pr, idx) }
790
+ slot_w = results.map { |pr| (pr['slot'] || 1).to_s.length }.max
791
+ succ_w = results.filter_map { |pr| pr.dig('checks', 'success')&.to_i&.to_s&.length }.max || 1
792
+ total_w = results.filter_map { |pr| pr.dig('checks', 'total')&.to_i&.to_s&.length }.max || 1
793
+ as_w = results.map { |pr| [pr.dig('reviews', 'approved').to_i.to_s.length, 1].max }.max
794
+ crs_w = results.map { |pr| [pr.dig('reviews', 'changes_requested').to_i.to_s.length, 1].max }.max
795
+ widths = { slot: slot_w, succ: succ_w, total: total_w, as: as_w, crs: crs_w }
796
+ results.each_with_index { |pr, idx| puts pinned_manager.display_pinned(pr, idx, widths: widths) }
771
797
  last_checked = pinned.filter_map { |pr| pr['last_checked'] }.max
772
798
  puts "---"
773
799
  puts "Last updated: #{last_checked || 'never'}"
data/lib/hiiro/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Hiiro
2
- VERSION = "0.1.242"
2
+ VERSION = "0.1.243"
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.242
4
+ version: 0.1.243
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Toyota