Skip to content

Commit df4e40c

Browse files
committed
LiveOnlyCheck: only report packages over a year old
1 parent 4116591 commit df4e40c

File tree

1 file changed

+31
-4
lines changed

1 file changed

+31
-4
lines changed

src/pkgcheck/checks/pkgdir.py

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from datetime import datetime
12
import os
23
import stat
34
from collections import defaultdict
@@ -295,18 +296,44 @@ def feed(self, pkgset):
295296

296297

297298
class LiveOnlyPackage(results.PackageResult, results.Warning):
298-
"""Package only has VCS-based ebuilds."""
299+
"""Package has only had VCS-based ebuilds for over a year."""
299300

300-
desc = 'all versions are VCS-based'
301+
def __init__(self, age, **kwargs):
302+
super().__init__(**kwargs)
303+
self.age = age
304+
305+
@property
306+
def desc(self):
307+
return f'all versions are VCS-based added over {self.age} years ago'
301308

302309

303310
class LiveOnlyCheck(GentooRepoCheck):
304-
"""Scan for packages with only live versions."""
311+
"""Scan for old packages with only live versions."""
305312

306313
scope = base.package_scope
307314
_source = sources.PackageRepoSource
315+
required_addons = (git.GitAddon,)
308316
known_results = frozenset([LiveOnlyPackage])
309317

318+
def __init__(self, *args, git_addon):
319+
super().__init__(*args)
320+
self.today = datetime.today()
321+
self.added_repo = git_addon.cached_repo(git.GitAddedRepo)
322+
310323
def feed(self, pkgset):
324+
# disable check when git repo parsing is disabled
325+
if self.added_repo is None:
326+
return
327+
311328
if all(pkg.live for pkg in pkgset):
312-
yield LiveOnlyPackage(pkg=pkgset[0])
329+
# assume highest package version is most recently committed
330+
pkg = sorted(pkgset)[-1]
331+
try:
332+
match = self.added_repo.match(pkg.versioned_atom)[0]
333+
except IndexError:
334+
# probably an uncommitted package
335+
return
336+
added = datetime.strptime(match.date, '%Y-%m-%d')
337+
years_old = round((self.today - added).days / 365, 2)
338+
if years_old > 1:
339+
yield LiveOnlyPackage(years_old, pkg=pkg)

0 commit comments

Comments
 (0)