Lines 164-170
class keywords_content:
Link Here
|
164 |
def __packages_sort(package_content): |
164 |
def __packages_sort(package_content): |
165 |
""" |
165 |
""" |
166 |
Sort packages queried based on version and slot |
166 |
Sort packages queried based on version and slot |
167 |
%% pn , repo, slot, keywords |
167 |
%% pn , repo, slot, eapi, keywords |
168 |
""" |
168 |
""" |
169 |
from operator import itemgetter |
169 |
from operator import itemgetter |
170 |
|
170 |
|
Lines 208-215
class keywords_content:
Link Here
|
208 |
# version is not allowed by portage or unset |
208 |
# version is not allowed by portage or unset |
209 |
continue |
209 |
continue |
210 |
# obtain related data from metadata and append to the pkg list |
210 |
# obtain related data from metadata and append to the pkg list |
211 |
keywords, slot = self.__getMetadata(pdb, mysplit[0]+'/'+pf, oroot) |
211 |
keywords, slot, eapi = self.__getMetadata(pdb, mysplit[0]+'/'+pf, oroot) |
212 |
mypkgs.append([mysplit[0]+'/'+pf, oroot, slot, keywords]) |
212 |
mypkgs.append([mysplit[0]+'/'+pf, oroot, slot, eapi, keywords]) |
213 |
|
213 |
|
214 |
self.__packages_sort(mypkgs) |
214 |
self.__packages_sort(mypkgs) |
215 |
return mypkgs |
215 |
return mypkgs |
Lines 226-232
class keywords_content:
Link Here
|
226 |
def __getMetadata(pdb, package, repo): |
226 |
def __getMetadata(pdb, package, repo): |
227 |
"""Obtain all required metadata from portage auxdb""" |
227 |
"""Obtain all required metadata from portage auxdb""" |
228 |
try: |
228 |
try: |
229 |
metadata = pdb.aux_get(package, ['KEYWORDS', 'SLOT'], repo) |
229 |
metadata = pdb.aux_get(package, ['KEYWORDS', 'SLOT', 'EAPI'], repo) |
230 |
except KeyError: |
230 |
except KeyError: |
231 |
# portage prints out more verbose error for us if we were lucky |
231 |
# portage prints out more verbose error for us if we were lucky |
232 |
raise SystemExit('Failed to obtain metadata') |
232 |
raise SystemExit('Failed to obtain metadata') |
Lines 303-326
class keywords_content:
Link Here
|
303 |
return tmp |
303 |
return tmp |
304 |
|
304 |
|
305 |
@staticmethod |
305 |
@staticmethod |
306 |
def __prepareContentResult(versions, keywords, redundant, slots, slot_length, repos, linesep): |
306 |
def __prepareContentResult(versions, keywords, eapi, redundant, slots, slot_length, repos, linesep): |
307 |
"""Parse version fields into one list with proper separators""" |
307 |
"""Parse version fields into one list with proper separators""" |
308 |
content = [] |
308 |
content = [] |
309 |
oldslot = '' |
309 |
oldslot = '' |
310 |
fieldsep = '% %|% %' |
310 |
fieldsep = '% %|% %' |
311 |
normsep = '% %' |
311 |
normsep = '% %' |
312 |
for v, k, r, s, t in zip(versions, keywords, redundant, slots, repos): |
312 |
for v, k, e, r, s, t in zip(versions, keywords, eapi, redundant, slots, repos): |
313 |
if oldslot != s: |
313 |
if oldslot != s: |
314 |
oldslot = s |
314 |
oldslot = s |
315 |
content.append(linesep) |
315 |
content.append(linesep) |
316 |
else: |
316 |
else: |
317 |
s = '%'.join(list(''.rjust(slot_length))) |
317 |
s = '%'.join(list(''.rjust(slot_length))) |
318 |
content.append('%s%s%s%s%s%s%s%s%s' % (v, fieldsep, k, fieldsep, r, normsep, s, fieldsep, t)) |
318 |
content.append('%s%s%s%s%s%s%s%s%s%s%s' % (v, fieldsep, k, fieldsep, e, normsep, r, normsep, s, fieldsep, t)) |
319 |
return content |
319 |
return content |
320 |
|
320 |
|
321 |
def __init__(self, package, keywords_list, porttree, ignoreslots = False, content_align = 'bottom', usebold = False, toplist = 'archlist'): |
321 |
def __init__(self, package, keywords_list, porttree, ignoreslots = False, content_align = 'bottom', usebold = False, toplist = 'archlist'): |
322 |
"""Query all relevant data from portage databases.""" |
322 |
"""Query all relevant data from portage databases.""" |
323 |
packages, self.repositories, self.slots, self.keywords = self.__checkExist(porttree, package) |
323 |
packages, self.repositories, self.slots, self.eapi, self.keywords = self.__checkExist(porttree, package) |
324 |
# convert repositories from path to name |
324 |
# convert repositories from path to name |
325 |
self.repositories = [porttree.getRepositoryName(x) for x in self.repositories] |
325 |
self.repositories = [porttree.getRepositoryName(x) for x in self.repositories] |
326 |
self.slot_length = max([len(x) for x in self.slots]) |
326 |
self.slot_length = max([len(x) for x in self.slots]) |
Lines 336-351
class keywords_content:
Link Here
|
336 |
|
336 |
|
337 |
ver = self.__formatVersions(self.versions, content_align, self.version_length) |
337 |
ver = self.__formatVersions(self.versions, content_align, self.version_length) |
338 |
kws = self.__formatKeywords(self.keywords, keywords_list, usebold, toplist) |
338 |
kws = self.__formatKeywords(self.keywords, keywords_list, usebold, toplist) |
|
|
339 |
eap = self.__formatAdditional(self.eapi, 'bold', 1) |
339 |
red = self.__formatAdditional(self.redundant, 'purple', redundant_length) |
340 |
red = self.__formatAdditional(self.redundant, 'purple', redundant_length) |
340 |
slt = self.__formatAdditional(self.slots, 'bold', self.slot_length) |
341 |
slt = self.__formatAdditional(self.slots, 'bold', self.slot_length) |
341 |
rep = self.__formatAdditional(self.repositories, 'yellow', repositories_length) |
342 |
rep = self.__formatAdditional(self.repositories, 'yellow', repositories_length) |
342 |
# those + nubers are spaces in printout. keywords are multiplied also because of that |
343 |
# those + numbers are spaces in printout. keywords are multiplied also because of that |
343 |
linesep = '%s+%s+%s+%s' % (''.ljust(self.version_length+1, '-'), |
344 |
linesep = '%s+%s+%s+%s' % (''.ljust(self.version_length+1, '-'), |
344 |
''.ljust(self.keyword_length*2+1, '-'), |
345 |
''.ljust(self.keyword_length*2+1, '-'), |
345 |
''.ljust(redundant_length+self.slot_length+3, '-'), |
346 |
''.ljust(redundant_length+self.slot_length+1+4, '-'), |
346 |
''.ljust(repositories_length+1, '-') |
347 |
''.ljust(repositories_length+1, '-') |
347 |
) |
348 |
) |
348 |
|
349 |
|
349 |
self.content = self.__prepareContentResult(ver, kws, red, slt, self.slot_length, rep, linesep) |
350 |
self.content = self.__prepareContentResult(ver, kws, eap, red, slt, self.slot_length, rep, linesep) |
350 |
self.content_length = len(linesep) |
351 |
self.content_length = len(linesep) |
351 |
self.cp = port.cpv_getkey(packages[0]) |
352 |
self.cp = port.cpv_getkey(packages[0]) |