public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Justin Lecher" <jlec@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/gentoolkit:master commit in: pym/gentoolkit/eshowkw/
Date: Tue, 17 Nov 2015 10:19:36 +0000 (UTC)	[thread overview]
Message-ID: <1447755497.95b5655ae01c0185a9539d1921509277fa778102.jlec@gentoo> (raw)

commit:     95b5655ae01c0185a9539d1921509277fa778102
Author:     Denis Romanchuk <den4ikkss <AT> gmail <DOT> com>
AuthorDate: Mon Nov 16 04:01:21 2015 +0000
Commit:     Justin Lecher <jlec <AT> gentoo <DOT> org>
CommitDate: Tue Nov 17 10:18:17 2015 +0000
URL:        https://gitweb.gentoo.org/proj/gentoolkit.git/commit/?id=95b5655a

Add eapi column to the eshowkw

Signed-off-by: Justin Lecher <jlec <AT> gentoo.org>

 pym/gentoolkit/eshowkw/__init__.py         |  5 +---
 pym/gentoolkit/eshowkw/keywords_content.py | 42 ++++++++++++++++++++++--------
 pym/gentoolkit/eshowkw/keywords_header.py  |  2 +-
 3 files changed, 33 insertions(+), 16 deletions(-)

diff --git a/pym/gentoolkit/eshowkw/__init__.py b/pym/gentoolkit/eshowkw/__init__.py
index a20dac9..d46a773 100644
--- a/pym/gentoolkit/eshowkw/__init__.py
+++ b/pym/gentoolkit/eshowkw/__init__.py
@@ -72,7 +72,7 @@ def process_args(argv):
 	parser.add_argument('-P', '--prefix', action='store_true', default=False,
 		help='Display prefix keywords in output.')
 	parser.add_argument('-S', '--ignore-slot', action='store_true', default=False,
-		help='Treat slots as irelevant during detection of redundant pacakges.')
+		help='Treat slots as irelevant during detection of redundant packages.')
 
 	return parser.parse_args(args=argv)
 
@@ -83,9 +83,6 @@ def main(argv, indirect = False):
 	opts = process_args(argv)
 	ignore_slots = opts.ignore_slot
 	use_overlays = opts.overlays
-	# user can do both --arch=a,b,c or --arch a b c
-	if len(opts.arch) > 1:
-		opts.arch = ','.join(opts.arch)
 	highlight_arch = ''.join(opts.arch).split(',')
 	bold = opts.bold
 	order = opts.align

diff --git a/pym/gentoolkit/eshowkw/keywords_content.py b/pym/gentoolkit/eshowkw/keywords_content.py
index 2e6c0fa..b6ad118 100644
--- a/pym/gentoolkit/eshowkw/keywords_content.py
+++ b/pym/gentoolkit/eshowkw/keywords_content.py
@@ -164,7 +164,7 @@ class keywords_content:
 	def __packages_sort(package_content):
 		"""
 		Sort packages queried based on version and slot
-		%% pn , repo, slot, keywords
+		%% pn , repo, slot, eapi, keywords
 		"""
 		from operator import itemgetter
 
@@ -208,8 +208,8 @@ class keywords_content:
 						# version is not allowed by portage or unset
 						continue
 					# obtain related data from metadata and append to the pkg list
-					keywords, slot = self.__getMetadata(pdb, mysplit[0]+'/'+pf, oroot)
-					mypkgs.append([mysplit[0]+'/'+pf, oroot, slot, keywords])
+					keywords, slot, eapi = self.__getMetadata(pdb, mysplit[0]+'/'+pf, oroot)
+					mypkgs.append([mysplit[0]+'/'+pf, oroot, slot, eapi, keywords])
 
 		self.__packages_sort(mypkgs)
 		return mypkgs
@@ -226,7 +226,7 @@ class keywords_content:
 	def __getMetadata(pdb, package, repo):
 		"""Obtain all required metadata from portage auxdb"""
 		try:
-			metadata = pdb.aux_get(package, ['KEYWORDS', 'SLOT'], repo)
+			metadata = pdb.aux_get(package, ['KEYWORDS', 'SLOT', 'EAPI'], repo)
 		except KeyError:
 			# portage prints out more verbose error for us if we were lucky
 			raise SystemExit('Failed to obtain metadata')
@@ -303,24 +303,42 @@ class keywords_content:
 		return tmp
 
 	@staticmethod
-	def __prepareContentResult(versions, keywords, redundant, slots, slot_length, repos, linesep):
+	def __formatEapis(eapis, repos, repos_configs, length):
+		"""Align eapis items properly"""
+		# % are used as separators for further split so we wont loose spaces and coloring
+		tmp = []
+		for eapi, repo in zip(eapis, repos):
+			tmp_eapi = eapi
+			eapi = align_string(eapi, 'left', length)
+			eapi = '%'.join(list(eapi))
+			if repos_configs[repo].eapi_is_banned(tmp_eapi):
+				eapi = colorize_string('red', eapi)
+			elif repos_configs[repo].eapi_is_deprecated(tmp_eapi):
+				eapi = colorize_string('yellow', eapi)
+			else:
+				eapi = colorize_string('green', eapi)
+			tmp.append(eapi)
+		return tmp
+
+	@staticmethod
+	def __prepareContentResult(versions, keywords, eapi, redundant, slots, slot_length, repos, linesep):
 		"""Parse version fields into one list with proper separators"""
 		content = []
 		oldslot = ''
 		fieldsep = '% %|% %'
 		normsep = '% %'
-		for v, k, r, s, t in zip(versions, keywords, redundant, slots, repos):
+		for v, k, e, r, s, t in zip(versions, keywords, eapi, redundant, slots, repos):
 			if oldslot != s:
 				oldslot = s
 				content.append(linesep)
 			else:
 				s = '%'.join(list(''.rjust(slot_length)))
-			content.append('%s%s%s%s%s%s%s%s%s' % (v, fieldsep, k, fieldsep, r, normsep, s, fieldsep, t))
+			content.append('%s%s%s%s%s%s%s%s%s%s%s' % (v, fieldsep, k, fieldsep, e, normsep, r, normsep, s, fieldsep, t))
 		return content
 
 	def __init__(self, package, keywords_list, porttree, ignoreslots = False, content_align = 'bottom', usebold = False, toplist = 'archlist'):
 		"""Query all relevant data from portage databases."""
-		packages, self.repositories, self.slots, self.keywords = self.__checkExist(porttree, package)
+		packages, self.repositories, self.slots, self.eapi, self.keywords = self.__checkExist(porttree, package)
 		# convert repositories from path to name
 		self.repositories = [porttree.getRepositoryName(x) for x in self.repositories]
 		self.slot_length = max([len(x) for x in self.slots])
@@ -336,16 +354,18 @@ class keywords_content:
 
 		ver = self.__formatVersions(self.versions, content_align, self.version_length)
 		kws = self.__formatKeywords(self.keywords, keywords_list, usebold, toplist)
+		repos_configs = porttree.repositories.prepos
+		eap = self.__formatEapis(self.eapi, self.repositories, repos_configs, 1)
 		red = self.__formatAdditional(self.redundant, 'purple', redundant_length)
 		slt = self.__formatAdditional(self.slots, 'bold', self.slot_length)
 		rep = self.__formatAdditional(self.repositories, 'yellow', repositories_length)
-		# those + nubers are spaces in printout. keywords are multiplied also because of that
+		# those + numbers are spaces in printout. keywords are multiplied also because of that
 		linesep = '%s+%s+%s+%s' % (''.ljust(self.version_length+1, '-'),
 			''.ljust(self.keyword_length*2+1, '-'),
-			''.ljust(redundant_length+self.slot_length+3, '-'),
+			''.ljust(redundant_length+self.slot_length+1+4, '-'),
 			''.ljust(repositories_length+1, '-')
 		)
 
-		self.content = self.__prepareContentResult(ver, kws, red, slt, self.slot_length, rep, linesep)
+		self.content = self.__prepareContentResult(ver, kws, eap, red, slt, self.slot_length, rep, linesep)
 		self.content_length = len(linesep)
 		self.cp = port.cpv_getkey(packages[0])

diff --git a/pym/gentoolkit/eshowkw/keywords_header.py b/pym/gentoolkit/eshowkw/keywords_header.py
index 610fcaf..320406e 100644
--- a/pym/gentoolkit/eshowkw/keywords_header.py
+++ b/pym/gentoolkit/eshowkw/keywords_header.py
@@ -12,7 +12,7 @@ from gentoolkit.eshowkw.display_pretty import align_string
 class keywords_header:
 	__IMPARCHS = [ 'arm', 'amd64', 'x86' ]
 	__UNSTABLE_ARCHS = [ 'arm64', 'm68k', 'mips', 's390', 'sh' ]
-	__ADDITIONAL_FIELDS = [ 'unused', 'slot' ]
+	__ADDITIONAL_FIELDS = [ 'eapi', 'unused', 'slot' ]
 	__EXTRA_FIELDS = [ 'repo' ]
 
 	@staticmethod


             reply	other threads:[~2015-11-17 10:19 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-17 10:19 Justin Lecher [this message]
  -- strict thread matches above, loose matches on Subject: below --
2015-11-19 11:59 [gentoo-commits] proj/gentoolkit:master commit in: pym/gentoolkit/eshowkw/ Justin Lecher
2016-03-17 21:39 Dirkjan Ochtman
2016-03-31 22:10 Paul Varner
2016-04-06 17:25 Paul Varner
2016-07-03  4:23 Zac Medico
2016-07-03 17:53 Zac Medico
2016-07-03 17:59 Zac Medico
2016-11-23 23:26 Zac Medico
2018-01-26 23:25 Michał Górny
2018-01-26 23:25 Michał Górny
2018-01-26 23:25 Michał Górny
2018-01-26 23:25 Michał Górny
2018-01-26 23:25 Michał Górny
2018-01-26 23:25 Michał Górny
2018-01-26 23:25 Michał Górny
2018-01-26 23:25 Michał Górny
2019-05-11 20:26 Michał Górny
2020-01-26 15:20 Michał Górny
2022-06-08  0:12 Brian Dolbec
2022-06-08  1:19 Brian Dolbec
2022-06-08 20:11 Brian Dolbec
2022-07-09  1:49 Mike Gilbert

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1447755497.95b5655ae01c0185a9539d1921509277fa778102.jlec@gentoo \
    --to=jlec@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox