hiiro 0.1.340 → 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 +16 -0
- data/bin/h-pr +33 -1
- data/lib/hiiro/git/pr.rb +26 -0
- data/lib/hiiro/version.rb +1 -1
- data/script/publish +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,21 @@
|
|
|
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
|
+
|
|
11
|
+
## [0.1.341] - 2026-04-07
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
- `h pr view` now defaults to current branch's PR when no PR number is specified
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
- Update publish script to use `claude-haiku-4-5` model identifier
|
|
18
|
+
|
|
3
19
|
## [0.1.340] - 2026-04-07
|
|
4
20
|
|
|
5
21
|
### Fixed
|
data/bin/h-pr
CHANGED
|
@@ -125,7 +125,12 @@ Hiiro.run(*ARGV, plugins: [Pins]) do
|
|
|
125
125
|
end
|
|
126
126
|
}
|
|
127
127
|
add_subcmd(:view) { |pr_number=nil|
|
|
128
|
-
|
|
128
|
+
if pr_number.nil?
|
|
129
|
+
current = pm.fetch_current_branch_pr
|
|
130
|
+
pr_number = current ? current.number.to_s : resolve(:pr, nil)
|
|
131
|
+
else
|
|
132
|
+
pr_number = resolve(:pr, pr_number)
|
|
133
|
+
end
|
|
129
134
|
system('gh', 'pr', 'view', pr_number.to_s) if pr_number
|
|
130
135
|
}
|
|
131
136
|
|
|
@@ -910,6 +915,33 @@ Hiiro.run(*ARGV, plugins: [Pins]) do
|
|
|
910
915
|
matches.each_with_index { |pr, i| puts pinned_manager.display_pinned(pr, i) }
|
|
911
916
|
end
|
|
912
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
|
+
|
|
913
945
|
# === Tags ===
|
|
914
946
|
|
|
915
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
data/script/publish
CHANGED