Skip to content

Commit eb2960c

Browse files
committed
bugs: add support for filtering targets by StableRequest
Add ``--filter-stablereqs`` and ``--stabletime`` to filter targets for those which have ready StableRequest pkgcheck result. Resolves: #157 Signed-off-by: Arthur Zamarin <arthurzam@gentoo.org>
1 parent 0177cb2 commit eb2960c

2 files changed

Lines changed: 30 additions & 4 deletions

File tree

data/share/bash-completion/completions/pkgdev

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,14 +247,16 @@ _pkgdev() {
247247
--api-key
248248
--auto-cc-arches
249249
--find-by-maintainer
250+
--filter-stablereqs
251+
--stabletime
250252
--blocks
251253
--dot
252254
-s --stablereq
253255
-k --keywording
254256
"
255257

256258
case "${prev}" in
257-
--api-key | --auto-cc-arches | --blocks | --find-by-maintainer)
259+
--api-key | --auto-cc-arches | --blocks | --find-by-maintainer | --stabletime)
258260
COMPREPLY=()
259261
;;
260262
--dot)

src/pkgdev/scripts/pkgdev_bugs.py

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from pkgcheck.addons import ArchesAddon, init_addon
1515
from pkgcheck.addons.profiles import ProfileAddon
1616
from pkgcheck.addons.git import GitAddon, GitModifiedRepo
17-
from pkgcheck.checks import visibility
17+
from pkgcheck.checks import visibility, stablereq
1818
from pkgcheck.scripts import argparse_actions
1919
from pkgcore.ebuild.atom import atom
2020
from pkgcore.ebuild.ebuild_src import package
@@ -77,6 +77,16 @@
7777
to find matches, which can be slow (between 1 to 3 seconds).
7878
""",
7979
)
80+
bugs.add_argument(
81+
"--filter-stablereqs",
82+
action="store_true",
83+
help="filter targets for packages with active StableRequest result",
84+
docs="""
85+
Filter targets passed to pkgdev (command line, stabilization groups,
86+
maintainer search, stdin) for packages with active ``StableRequest``
87+
result.
88+
""",
89+
)
8090
bugs.add_argument(
8191
"--blocks",
8292
metavar="BUG",
@@ -119,17 +129,20 @@
119129
help="File rekeywording bugs",
120130
)
121131

132+
bugs.plugin = bugs
122133
ArchesAddon.mangle_argparser(bugs)
123134
GitAddon.mangle_argparser(bugs)
124135
ProfileAddon.mangle_argparser(bugs)
136+
stablereq.StableRequestCheck.mangle_argparser(bugs)
125137

126138

127139
@bugs.bind_delayed_default(1500, "target_repo")
128140
def _validate_args(namespace, attr):
129141
_determine_cwd_repo(bugs, namespace)
130142
setattr(namespace, attr, namespace.repo)
131143
setattr(namespace, "verbosity", 1)
132-
setattr(namespace, "search_repo", multiplex.tree(*namespace.repo.trees))
144+
setattr(namespace, "search_repo", search_repo := multiplex.tree(*namespace.repo.trees))
145+
setattr(namespace, "gentoo_repo", search_repo)
133146
setattr(namespace, "query_caching_freq", "package")
134147

135148

@@ -286,6 +299,9 @@ def __init__(self, out: Formatter, err: Formatter, options):
286299
self.starting_nodes: set[GraphNode] = set()
287300
self.targets: tuple[package] = ()
288301

302+
git_addon = init_addon(GitAddon, options)
303+
self.stablereq_check = stablereq.StableRequestCheck(self.options, git_addon=git_addon)
304+
289305
def mk_fake_pkg(self, pkg: package, keywords: set[str]):
290306
return FakePkg(
291307
cpv=pkg.cpvstr,
@@ -372,7 +388,15 @@ def load_targets(self, targets: list[tuple[str, str]]):
372388
search_repo = self.options.search_repo
373389
for _, target in targets:
374390
try:
375-
result.append(self.find_best_match([target], search_repo.match(target), False))
391+
pkgset = search_repo.match(target)
392+
if self.options.filter_stablereqs:
393+
for res in self.stablereq_check.feed(sorted(pkgset)):
394+
if isinstance(res, stablereq.StableRequest):
395+
target = atom(f"={res.category}/{res.package}-{res.version}")
396+
break
397+
else: # no stablereq
398+
continue
399+
result.append(self.find_best_match([target], pkgset, False))
376400
except ValueError:
377401
raise ValueError(f"Restriction {target} has no match in repository")
378402
self.targets = tuple(result)

0 commit comments

Comments
 (0)