Ejemplo n.º 1
0
def display_useflags(output):
    """Print USE flag descriptions and statuses.

	@type output: list
	@param output: [(inuse, inused, flag, desc, restrict), ...]
		inuse (int) = 0 or 1; if 1, flag is set in make.conf
		inused (int) = 0 or 1; if 1, package is installed with flag enabled
		flag (str) = the name of the USE flag
		desc (str) = the flag's description
		restrict (str) = corresponds to the text of restrict in metadata
	"""

    maxflag_len = len(max([t[2] for t in output], key=len))

    twrap = TextWrapper()
    twrap.width = CONFIG['termWidth']
    twrap.subsequent_indent = " " * (maxflag_len + 8)

    markers = ("-", "+")
    color = (partial(pp.useflag,
                     enabled=False), partial(pp.useflag, enabled=True))
    for in_makeconf, in_installed, flag, desc, restrict in output:
        if CONFIG['verbose']:
            flag_name = ""
            if in_makeconf != in_installed:
                flag_name += pp.emph(
                    " %s %s" % (markers[in_makeconf], markers[in_installed]))
            else:
                flag_name += (" %s %s" %
                              (markers[in_makeconf], markers[in_installed]))

            flag_name += " " + color[in_makeconf](flag.ljust(maxflag_len))
            flag_name += " : "

            # Strip initial whitespace at the start of the description
            # Bug 432530
            if desc:
                desc = desc.lstrip()

            # print description
            if restrict:
                restrict = "(%s %s)" % (pp.emph("Restricted to"),
                                        pp.cpv(restrict))
                twrap.initial_indent = flag_name
                pp.uprint(twrap.fill(restrict))
                if desc:
                    twrap.initial_indent = twrap.subsequent_indent
                    pp.uprint(twrap.fill(desc))
                else:
                    print(" : <unknown>")
            else:
                if desc:
                    twrap.initial_indent = flag_name
                    desc = twrap.fill(desc)
                    pp.uprint(desc)
                else:
                    twrap.initial_indent = flag_name
                    print(twrap.fill("<unknown>"))
        else:
            pp.uprint(markers[in_makeconf] + flag)
Ejemplo n.º 2
0
def format_line(line, first="", subsequent="", force_quiet=False):
	"""Wrap a string at word boundaries and optionally indent the first line
	and/or subsequent lines with custom strings.

	Preserve newlines if the longest line is not longer than
	CONFIG['termWidth']. To force the preservation of newlines and indents,
	split the string into a list and feed it to format_line via format_list.

	@see: format_list()
	@type line: string
	@param line: text to format
	@type first: string
	@param first: text to prepend to the first line
	@type subsequent: string
	@param subsequent: text to prepend to subsequent lines
	@type force_quiet: boolean
	@rtype: string
	@return: A wrapped line
	"""

	if line:
		line = line.expandtabs().strip("\n").splitlines()
	else:
		if force_quiet:
			return
		else:
			return first + "None specified"

	if len(first) > len(subsequent):
		wider_indent = first
	else:
		wider_indent = subsequent

	widest_line_len = len(max(line, key=len)) + len(wider_indent)

	if widest_line_len > CONFIG['termWidth']:
		twrap = TextWrapper(width=CONFIG['termWidth'], expand_tabs=False,
			initial_indent=first, subsequent_indent=subsequent)
		line = " ".join(line)
		line = re.sub("\s+", " ", line)
		line = line.lstrip()
		result = twrap.fill(line)
	else:
		# line will fit inside CONFIG['termWidth'], so preserve whitespace and
		# newlines
		line[0] = first + line[0]          # Avoid two newlines if len == 1

		if len(line) > 1:
			line[0] = line[0] + "\n"
			for i in range(1, (len(line[1:-1]) + 1)):
				line[i] = subsequent + line[i] + "\n"
			line[-1] = subsequent + line[-1]  # Avoid two newlines on last line

		if line[-1].isspace():
			del line[-1]                # Avoid trailing blank lines

		result = "".join(line)

	return result
Ejemplo n.º 3
0
def format_options(options):
    """Format module options.

    @type options: list
    @param options: [('option 1', 'description 1'), ('option 2', 'des... )]
    @rtype: str
    @return: formatted options string
    """

    result = []
    twrap = TextWrapper(width=gentoolkit.CONFIG["termWidth"])
    opts = (x[0] for x in options)
    descs = (x[1] for x in options)
    for opt, desc in zip(opts, descs):
        twrap.initial_indent = pp.emph(opt.ljust(25))
        twrap.subsequent_indent = " " * 25
        result.append(twrap.fill(desc))
    return "\n".join(result)
Ejemplo n.º 4
0
 def __init__(self, cpv_width=None, width=None):
     self.cpv_width = cpv_width
     if width is None:
         width = gentoolkit.CONFIG["termWidth"]
     self.twrap = TextWrapper(width=width)