Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 563202 | Differences between
and this patch

Collapse All | Expand All

(-)a/pym/gentoolkit/eshowkw/__init__.py (-4 / +1 lines)
Lines 72-78 def process_args(argv): Link Here
72
	parser.add_argument('-P', '--prefix', action='store_true', default=False,
72
	parser.add_argument('-P', '--prefix', action='store_true', default=False,
73
		help='Display prefix keywords in output.')
73
		help='Display prefix keywords in output.')
74
	parser.add_argument('-S', '--ignore-slot', action='store_true', default=False,
74
	parser.add_argument('-S', '--ignore-slot', action='store_true', default=False,
75
		help='Treat slots as irelevant during detection of redundant pacakges.')
75
		help='Treat slots as irelevant during detection of redundant packages.')
76
76
77
	return parser.parse_args(args=argv)
77
	return parser.parse_args(args=argv)
78
78
Lines 83-91 def main(argv, indirect = False): Link Here
83
	opts = process_args(argv)
83
	opts = process_args(argv)
84
	ignore_slots = opts.ignore_slot
84
	ignore_slots = opts.ignore_slot
85
	use_overlays = opts.overlays
85
	use_overlays = opts.overlays
86
	# user can do both --arch=a,b,c or --arch a b c
87
	if len(opts.arch) > 1:
88
		opts.arch = ','.join(opts.arch)
89
	highlight_arch = ''.join(opts.arch).split(',')
86
	highlight_arch = ''.join(opts.arch).split(',')
90
	bold = opts.bold
87
	bold = opts.bold
91
	order = opts.align
88
	order = opts.align
(-)a/pym/gentoolkit/eshowkw/keywords_content.py (-11 / +12 lines)
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])
(-)a/pym/gentoolkit/eshowkw/keywords_header.py (-2 / +1 lines)
Lines 11-18 from gentoolkit.eshowkw.display_pretty import align_string Link Here
11
11
12
class keywords_header:
12
class keywords_header:
13
	__IMPARCHS = [ 'arm', 'amd64', 'x86' ]
13
	__IMPARCHS = [ 'arm', 'amd64', 'x86' ]
14
	__UNSTABLE_ARCHS = [ 'arm64', 'm68k', 'mips', 's390', 'sh' ]
14
	__ADDITIONAL_FIELDS = [ 'eapi', 'unused', 'slot' ]
15
	__ADDITIONAL_FIELDS = [ 'unused', 'slot' ]
16
	__EXTRA_FIELDS = [ 'repo' ]
15
	__EXTRA_FIELDS = [ 'repo' ]
17
16
18
	@staticmethod
17
	@staticmethod

Return to bug 563202