euscan: fixed progressbar
added -p option, now the progressbar is "global" and shows the total progress Signed-off-by: volpino <fox91@anche.no>
This commit is contained in:
		
							
								
								
									
										43
									
								
								bin/euscan
									
									
									
									
									
								
							
							
						
						
									
										43
									
								
								bin/euscan
									
									
									
									
									
								
							@@ -21,8 +21,8 @@ __description__ = "A tool to detect new upstream releases."
 | 
			
		||||
import sys
 | 
			
		||||
import os
 | 
			
		||||
import getopt
 | 
			
		||||
import errno
 | 
			
		||||
import httplib
 | 
			
		||||
from errno import EINTR, EINVAL
 | 
			
		||||
from httplib import HTTPConnection
 | 
			
		||||
 | 
			
		||||
from portage.output import white, yellow, turquoise, green
 | 
			
		||||
from portage.exception import AmbiguousPackageName
 | 
			
		||||
@@ -37,6 +37,8 @@ from euscan.out import progress_bar
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Globals
 | 
			
		||||
isatty = os.environ.get('TERM') != 'dumb' and sys.stdout.isatty()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def exit_helper(status):
 | 
			
		||||
    if CONFIG["format"]:
 | 
			
		||||
@@ -52,7 +54,7 @@ def setup_signals():
 | 
			
		||||
        signal.signal(signal.SIGINT, signal.SIG_IGN)
 | 
			
		||||
        signal.signal(signal.SIGTERM, signal.SIG_IGN)
 | 
			
		||||
        print()
 | 
			
		||||
        exit_helper(errno.EINTR)
 | 
			
		||||
        exit_helper(EINTR)
 | 
			
		||||
 | 
			
		||||
    signal.signal(signal.SIGINT, exithandler)
 | 
			
		||||
    signal.signal(signal.SIGTERM, exithandler)
 | 
			
		||||
@@ -121,6 +123,8 @@ def print_usage(_error=None, help=None):
 | 
			
		||||
        print(yellow(" -f, --format=<format>") +
 | 
			
		||||
              "     - define the output " + yellow("<format>") +
 | 
			
		||||
              " (available: json)", file=out)
 | 
			
		||||
        print(yellow(" -p, --progress") +
 | 
			
		||||
              "     - display a progress bar", file=out)
 | 
			
		||||
        print(file=out)
 | 
			
		||||
 | 
			
		||||
    if _error in ('packages',) or help:
 | 
			
		||||
@@ -172,6 +176,8 @@ def parse_args():
 | 
			
		||||
                CONFIG['format'] = a
 | 
			
		||||
                CONFIG['nocolor'] = True
 | 
			
		||||
                pp.output.nocolor()
 | 
			
		||||
            elif o in ("-p", "--progress"):
 | 
			
		||||
                CONFIG['progress'] = isatty
 | 
			
		||||
            else:
 | 
			
		||||
                return_code = False
 | 
			
		||||
 | 
			
		||||
@@ -179,7 +185,7 @@ def parse_args():
 | 
			
		||||
 | 
			
		||||
    # here are the different allowed command line options (getopt args)
 | 
			
		||||
    getopt_options = {'short': {}, 'long': {}}
 | 
			
		||||
    getopt_options['short']['global'] = "hVCqv1bf:"
 | 
			
		||||
    getopt_options['short']['global'] = "hVCqv1bf:p"
 | 
			
		||||
    getopt_options['long']['global'] = [
 | 
			
		||||
        "help", "version", "nocolor", "quiet", "verbose", "oneshot",
 | 
			
		||||
        "brute-force=", "format="
 | 
			
		||||
@@ -207,7 +213,7 @@ def parse_args():
 | 
			
		||||
def main():
 | 
			
		||||
    """Parse command line and execute all actions."""
 | 
			
		||||
    CONFIG['nocolor'] = (
 | 
			
		||||
        port_settings["NOCOLOR"] in ('yes', 'true') or not sys.stdout.isatty()
 | 
			
		||||
        port_settings["NOCOLOR"] in ('yes', 'true') or not isatty
 | 
			
		||||
    )
 | 
			
		||||
    if CONFIG['nocolor']:
 | 
			
		||||
        pp.output.nocolor()
 | 
			
		||||
@@ -230,19 +236,22 @@ def main():
 | 
			
		||||
 | 
			
		||||
        else:
 | 
			
		||||
            print_usage(e.value)
 | 
			
		||||
            exit_helper(errno.EINVAL)
 | 
			
		||||
            exit_helper(EINVAL)
 | 
			
		||||
 | 
			
		||||
    if CONFIG['verbose'] > 2:
 | 
			
		||||
        httplib.HTTPConnection.debuglevel = 1
 | 
			
		||||
        HTTPConnection.debuglevel = 1
 | 
			
		||||
 | 
			
		||||
    isatty = os.environ.get('TERM') != 'dumb' and sys.stdout.isatty()
 | 
			
		||||
    if not CONFIG["format"]:
 | 
			
		||||
        CONFIG["progress"] = False
 | 
			
		||||
 | 
			
		||||
    on_progress = None
 | 
			
		||||
    if CONFIG['progress']:
 | 
			
		||||
        on_progress_gen = progress_bar()
 | 
			
		||||
        on_progress = on_progress_gen.next()
 | 
			
		||||
        on_progress(maxval=len(queries) * 100, increment=0)
 | 
			
		||||
 | 
			
		||||
    for query in queries:
 | 
			
		||||
        on_progress = None
 | 
			
		||||
        if (CONFIG['format'] or CONFIG['quiet']) and isatty:
 | 
			
		||||
            print("%s:" % query, file=sys.stderr)
 | 
			
		||||
            on_progress_gen = progress_bar()
 | 
			
		||||
            on_progress = on_progress_gen.next()
 | 
			
		||||
        on_progress(increment=10, label=query)
 | 
			
		||||
 | 
			
		||||
        ret = []
 | 
			
		||||
 | 
			
		||||
@@ -271,16 +280,16 @@ def main():
 | 
			
		||||
            output.eerror('%s: %s' % (query, str(err)))
 | 
			
		||||
            exit_helper(1)
 | 
			
		||||
 | 
			
		||||
        if (CONFIG['format'] or CONFIG['quiet']) and isatty:
 | 
			
		||||
            on_progress_gen.next()
 | 
			
		||||
            print("\n", file=sys.stderr)
 | 
			
		||||
 | 
			
		||||
        if not ret and not CONFIG['quiet']:
 | 
			
		||||
            output.ewarn(
 | 
			
		||||
                "Didn't find any new version, check package's homepage " +
 | 
			
		||||
                "for more informations"
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
    if CONFIG['progress']:
 | 
			
		||||
        on_progress_gen.next()
 | 
			
		||||
        print("\n", file=sys.stderr)
 | 
			
		||||
 | 
			
		||||
    output.set_query(None)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user