diff options
author | Brian Dolbec <dolsen@gentoo.org> | 2016-07-08 08:20:15 -0700 |
---|---|---|
committer | Brian Dolbec <dolsen@gentoo.org> | 2016-07-08 08:35:38 -0700 |
commit | 0c2b748b987d629ba7b9f75756db16758ed426bc (patch) | |
tree | 38eecd7bc42ba58d0a292d16099c3bb10ee496d1 | |
parent | module_base.py: Add a char type cli option capability (diff) | |
download | gentoolkit-0c2b748b987d629ba7b9f75756db16758ed426bc.tar.gz gentoolkit-0c2b748b987d629ba7b9f75756db16758ed426bc.tar.bz2 gentoolkit-0c2b748b987d629ba7b9f75756db16758ed426bc.zip |
enalyze: Add width and prepend options
These options are useful for creating preformatted wiki list entries.
Feature request from Fernando Reyes for the livedvd packages list.
This adds a prepend and width setting for any of the analyze keys.
-rw-r--r-- | pym/gentoolkit/enalyze/analyze.py | 32 | ||||
-rw-r--r-- | pym/gentoolkit/enalyze/output.py | 28 |
2 files changed, 40 insertions, 20 deletions
diff --git a/pym/gentoolkit/enalyze/analyze.py b/pym/gentoolkit/enalyze/analyze.py index ce83ba6..86f0987 100644 --- a/pym/gentoolkit/enalyze/analyze.py +++ b/pym/gentoolkit/enalyze/analyze.py @@ -175,7 +175,9 @@ class Analyse(ModuleBase): "verbose": False, "quiet": False, 'prefix': False, - 'portage': True + 'portage': True, + "width": 80, + "prepend": "", } self.module_opts = { "-f": ("flags", "boolean", True), @@ -188,8 +190,12 @@ class Analyse(ModuleBase): "--verbose": ("verbose", "boolean", True), "-p": ("prefix", "boolean", True), "--prefix": ("prefix", "boolean", True), + "-P": ("prepend", "char", None), + "--prepend": ("prepend", "char", None), "-G": ("portage", "boolean", False), "--portage": ("portage", "boolean", False), + "-W": ("width", "int", 80), + "--width": ("width", "int", 80), } self.formatted_options = [ (" -h, --help", "Outputs this useage message"), @@ -201,9 +207,15 @@ class Analyse(ModuleBase): (" -p, --prefix", "Used for testing purposes only, runs report using " + "a prefix keyword and 'prefix' USE flag"), + (" -P, --prepend", + "Prepend the string to any list output. " + + "ie: prepend '* ' to the ""front of each package being listed." + "This is useful for generating preformatted wiki text."), #(" -G, --portage", #"Use portage directly instead of gentoolkit's Package " + #"object for some operations. Usually a little faster."), + (" -W, --width", + "Format the output to wrap at 'WIDTH' ie: long line output"), ] self.formatted_args = [ (" use", @@ -223,8 +235,9 @@ class Analyse(ModuleBase): (" ", "for those that need to be unmasked") ] - self.short_opts = "huvpG" - self.long_opts = ("help", "unset", "verbose", "prefix") #, "portage") + self.short_opts = "huvpGP:W:" + self.long_opts = ("help", "unset", "verbose", "prefix", "prepend=", + "width=") #, "portage") self.need_queries = True self.arg_spec = "Target" self.arg_options = ['use', 'pkguse','keywords', 'packages', 'unmask'] @@ -262,10 +275,13 @@ class Analyse(ModuleBase): @param target: the target to be analyzed, one of ["use", "pkguse"] """ system_use = portage.settings["USE"].split() + self.printer = AnalysisPrinter( "use", self.options["verbose"], - system_use) + system_use, + width=self.options["width"], + prepend=self.options["prepend"]) if self.options["verbose"]: cpvs = portage.db[portage.root]["vartree"].dbapi.cpv_all() #cpvs = get_installed_cpvs() @@ -326,7 +342,9 @@ class Analyse(ModuleBase): self.printer = AnalysisPrinter( "keywords", self.options["verbose"], - system_keywords) + system_keywords, + width=self.options["width"], + prepend=self.options["prepend"]) self.analyser = KeywordAnalyser( arch, system_keywords, portage.db[portage.root]["vartree"].dbapi) #self.analyser.set_order(portage.settings["USE"].split()) # only for testing @@ -410,7 +428,9 @@ class Analyse(ModuleBase): self.printer = AnalysisPrinter( "packages", self.options["verbose"], - key_width=key_width) + key_width=key_width, + width=self.options["width"], + prepend=self.options["prepend"]) cpvs = sorted(cpvs) flags = FlagAnalyzer( diff --git a/pym/gentoolkit/enalyze/output.py b/pym/gentoolkit/enalyze/output.py index 326ebbc..01a9b98 100644 --- a/pym/gentoolkit/enalyze/output.py +++ b/pym/gentoolkit/enalyze/output.py @@ -28,13 +28,15 @@ def nl(lines=1): class AnalysisPrinter(CpvValueWrapper): """Printing functions""" - def __init__(self, target, verbose=True, references=None, key_width=1, width=None): + def __init__(self, target, verbose=True, references=None, key_width=1, + width=None, prepend=''): """@param references: list of accepted keywords or the system use flags """ self.references = references self.key_width = key_width self.width = width + self.prepend = prepend CpvValueWrapper.__init__(self, cpv_width=key_width, width=width) self.set_target(target, verbose) @@ -78,8 +80,7 @@ class AnalysisPrinter(CpvValueWrapper): pkgs.sort() self.print_fn(key, active, default, count, pkgs) - @staticmethod - def print_use_verbose(key, active, default, count, pkgs): + def print_use_verbose(self, key, active, default, count, pkgs): """Verbosely prints a set of use flag info. including the pkgs using them. """ @@ -89,25 +90,24 @@ class AnalysisPrinter(CpvValueWrapper): else: _key = (" " + key) cpv = _pkgs.pop(0) - print(_key,'.'*(35-len(key)), default, pp.number(count), pp.cpv(cpv)) + print(self.prepend + _key,'.'*(35-len(key)), default, pp.number(count), + pp.cpv(cpv)) while _pkgs: cpv = _pkgs.pop(0) print(' '*52 + pp.cpv(cpv)) # W0613: *Unused argument %r* # pylint: disable-msg=W0613 - @staticmethod - def print_use_quiet(key, active, default, count, pkgs): + def print_use_quiet(self, key, active, default, count, pkgs): """Quietly prints a subset set of USE flag info.. """ if active in ["+", "-"]: _key = pp.useflag((active+key), active=="+") else: _key = (" " + key) - print(_key,'.'*(35-len(key)), default, pp.number(count)) + print(self.prepend + _key,'.'*(35-len(key)), default, pp.number(count)) - @staticmethod - def print_keyword_verbose(key, stability, default, count, pkgs): + def print_keyword_verbose(self, key, stability, default, count, pkgs): """Verbosely prints a set of keywords info. including the pkgs using them. """ @@ -115,20 +115,20 @@ class AnalysisPrinter(CpvValueWrapper): _key = (pp.keyword((stability+key),stable=(stability==" "), hard_masked=stability=="-")) cpv = _pkgs.pop(0) - print(_key,'.'*(20-len(key)), default, pp.number(count), pp.cpv(cpv)) + print(self.prepend + _key,'.'*(20-len(key)), default, pp.number(count), + pp.cpv(cpv)) while _pkgs: cpv = _pkgs.pop(0) print(' '*37 + pp.cpv(cpv)) # W0613: *Unused argument %r* # pylint: disable-msg=W0613 - @staticmethod - def print_keyword_quiet(key, stability, default, count, pkgs): + def print_keyword_quiet(self, key, stability, default, count, pkgs): """Quietly prints a subset set of USE flag info.. """ _key = (pp.keyword((stability+key), stable=(stability==" "), hard_masked=stability=="-")) - print(_key,'.'*(20-len(key)), default, pp.number(count)) + print(self.prepend + _key,'.'*(20-len(key)), default, pp.number(count)) # W0613: *Unused argument %r* # pylint: disable-msg=W0613 @@ -153,7 +153,7 @@ class AnalysisPrinter(CpvValueWrapper): if _flag: _cleaned.append(_flag) #print("cpv=", key, "_plus=", _plus, "_minus=", _minus) - self.print_fn(key, (plus, minus, cleaned)) + self.print_fn(self.prepend + key, (plus, minus, cleaned)) def print_pkg_verbose(self, cpv, flags): """Verbosely prints the pkg's use flag info. |