hiiro 0.1.341 → 0.1.342
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/bin/h-pr +27 -0
- data/lib/hiiro/git/pr.rb +26 -0
- data/lib/hiiro/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1496be512bebac30ab2a5fc84922bf0eefb05b3ff1632b04a6488142c805b388
|
|
4
|
+
data.tar.gz: 215d5c29421e45abd0b8c5fe2984e372d776e5510cab0d71cd178e1c390081fe
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3a25d21e45c9bdea4c7ca56a850f6f00b71fb62990a03eb545f0bc379a6881504bf213079ef25f50df99f9a624ae2571f1d3522089f3a837439b363ab8bbbc61
|
|
7
|
+
data.tar.gz: a17b9aeccf2740727d1f4f306a4ad446b74cc7cf996f062bb6d8f37eef74660e84162ea9a3edf1542004412e86d2d2b547d81cc1b66493860afe6e018da1c6ad
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.1.342] - 2026-04-08
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- `h pr review` / `h pr cr` — code review workflow for managing PR sessions in ~/work/codereviews worktree
|
|
7
|
+
- `Hiiro::Git::Pr.from_link(url)` — parse PR number, owner, and repo from GitHub PR links
|
|
8
|
+
- `Hiiro::Git::Pr.from_number(number)` — create PR instances from PR numbers
|
|
9
|
+
- `Hiiro::Git::Pr.is_link?(link)` — validate GitHub PR links
|
|
10
|
+
|
|
3
11
|
## [0.1.341] - 2026-04-07
|
|
4
12
|
|
|
5
13
|
### Fixed
|
data/bin/h-pr
CHANGED
|
@@ -915,6 +915,33 @@ Hiiro.run(*ARGV, plugins: [Pins]) do
|
|
|
915
915
|
matches.each_with_index { |pr, i| puts pinned_manager.display_pinned(pr, i) }
|
|
916
916
|
end
|
|
917
917
|
|
|
918
|
+
add_cmd(:review, :cr) do
|
|
919
|
+
prs = args.filter_map do |arg|
|
|
920
|
+
pr = Hiiro::Git::Pr.from_link(arg)
|
|
921
|
+
pr ||= Hiiro::Git::Pr.from_number(arg)
|
|
922
|
+
end
|
|
923
|
+
|
|
924
|
+
exit 1 if prs.empty?
|
|
925
|
+
|
|
926
|
+
parent_dir = File.join(Dir.home, 'work', 'codereviews')
|
|
927
|
+
FileUtils.mkdir_p(parent_dir)
|
|
928
|
+
Dir.chdir(parent_dir)
|
|
929
|
+
|
|
930
|
+
if `git rev-parse --is-inside-work-tree`.strip == 'true'
|
|
931
|
+
master = `git master`
|
|
932
|
+
system('git', 'checkout', `git rev-parse master`)
|
|
933
|
+
else
|
|
934
|
+
system('git', 'worktree', 'add', '--no-checkout', parent_dir)
|
|
935
|
+
end
|
|
936
|
+
|
|
937
|
+
system('git', 'checkout', `git rev-parse master`)
|
|
938
|
+
|
|
939
|
+
prs.each do |pr|
|
|
940
|
+
puts ['PR NUMBER', pr.number].join(': ')
|
|
941
|
+
# Hiiro::Shell.pipe_lines("/prcr #{pr.number}", 'claude -p')
|
|
942
|
+
end
|
|
943
|
+
end
|
|
944
|
+
|
|
918
945
|
# === Tags ===
|
|
919
946
|
|
|
920
947
|
add_subcmd(:tag) do |*raw_args|
|
data/lib/hiiro/git/pr.rb
CHANGED
|
@@ -20,6 +20,32 @@ class Hiiro
|
|
|
20
20
|
[]
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
+
def is_link?(link)
|
|
24
|
+
temp_link = link.to_s
|
|
25
|
+
return false unless temp_link.match?('github.com') && temp_link.match?(/pull\/[0-9]+/)
|
|
26
|
+
|
|
27
|
+
true
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.from_link(link)
|
|
31
|
+
return nil unless is_link?(link)
|
|
32
|
+
|
|
33
|
+
number = link[/pull\/(\d+)/].sub(/\D*/, '')
|
|
34
|
+
owner, name, _ = link.sub(/.*github.com./, '').split(?/, 3)
|
|
35
|
+
new(
|
|
36
|
+
number: number,
|
|
37
|
+
url: link,
|
|
38
|
+
repo: [owner, name].join(?/),
|
|
39
|
+
)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def self.from_number(number)
|
|
43
|
+
number = number.to_s.strip[/^\d+$/]
|
|
44
|
+
return if number&.length == 0
|
|
45
|
+
|
|
46
|
+
new(number: number)
|
|
47
|
+
end
|
|
48
|
+
|
|
23
49
|
def self.repo_from_url(url)
|
|
24
50
|
return nil unless url
|
|
25
51
|
url.match(%r{github\.com/([^/]+/[^/]+)/pull/})&.[](1)
|
data/lib/hiiro/version.rb
CHANGED