mirror of
				https://github.com/f-droid/fdroidserver.git
				synced 2025-11-04 06:30:27 +03:00 
			
		
		
		
	add ColorFormatter class for optional colorized log output
This commit is contained in:
		
							parent
							
								
									7e8e2403cd
								
							
						
					
					
						commit
						290587f449
					
				
					 6 changed files with 48 additions and 11 deletions
				
			
		| 
						 | 
					@ -110,7 +110,7 @@ __complete_gpgsign() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__complete_install() {
 | 
					__complete_install() {
 | 
				
			||||||
	opts="-v -q -a -p -n -y"
 | 
						opts="-v -q -a -p -n -y"
 | 
				
			||||||
	lopts="--verbose --quiet --all --privacy-mode --no --yes"
 | 
						lopts="--verbose --quiet --all --color --no-color --privacy-mode --no-privacy-mode --no --yes"
 | 
				
			||||||
	case "${cur}" in
 | 
						case "${cur}" in
 | 
				
			||||||
		-*)
 | 
							-*)
 | 
				
			||||||
			__complete_options
 | 
								__complete_options
 | 
				
			||||||
| 
						 | 
					@ -251,7 +251,7 @@ __complete_btlog() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__complete_mirror() {
 | 
					__complete_mirror() {
 | 
				
			||||||
	opts="-v"
 | 
						opts="-v"
 | 
				
			||||||
	lopts="--all --archive --build-logs --pgp-signatures --src-tarballs --output-dir"
 | 
						lopts="--all --archive --build-logs --color --no-color --pgp-signatures --src-tarballs --output-dir"
 | 
				
			||||||
	__complete_options
 | 
						__complete_options
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -270,7 +270,7 @@ __complete_deploy() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__complete_signatures() {
 | 
					__complete_signatures() {
 | 
				
			||||||
	opts="-v -q"
 | 
						opts="-v -q"
 | 
				
			||||||
	lopts="--verbose --no-check-https"
 | 
						lopts="--verbose --color --no-color --no-check-https"
 | 
				
			||||||
	case "${cur}" in
 | 
						case "${cur}" in
 | 
				
			||||||
		-*)
 | 
							-*)
 | 
				
			||||||
			__complete_options
 | 
								__complete_options
 | 
				
			||||||
| 
						 | 
					@ -289,7 +289,7 @@ __complete_signindex() {
 | 
				
			||||||
__complete_init() {
 | 
					__complete_init() {
 | 
				
			||||||
	opts="-v -q -d"
 | 
						opts="-v -q -d"
 | 
				
			||||||
	lopts="--verbose --quiet --distinguished-name --keystore
 | 
						lopts="--verbose --quiet --distinguished-name --keystore
 | 
				
			||||||
 --repo-keyalias --android-home --no-prompt"
 | 
					 --repo-keyalias --android-home --no-prompt --color --no-color"
 | 
				
			||||||
	__complete_options
 | 
						__complete_options
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -56,6 +56,7 @@ from pathlib import Path
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import defusedxml.ElementTree as XMLElementTree
 | 
					import defusedxml.ElementTree as XMLElementTree
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from argparse import BooleanOptionalAction
 | 
				
			||||||
from asn1crypto import cms
 | 
					from asn1crypto import cms
 | 
				
			||||||
from base64 import urlsafe_b64encode
 | 
					from base64 import urlsafe_b64encode
 | 
				
			||||||
from binascii import hexlify
 | 
					from binascii import hexlify
 | 
				
			||||||
| 
						 | 
					@ -241,9 +242,40 @@ def setup_global_opts(parser):
 | 
				
			||||||
        default=False,
 | 
					        default=False,
 | 
				
			||||||
        help=_("Restrict output to warnings and errors"),
 | 
					        help=_("Restrict output to warnings and errors"),
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
					    parser.add_argument(
 | 
				
			||||||
 | 
					        "--color",
 | 
				
			||||||
 | 
					        action=BooleanOptionalAction,
 | 
				
			||||||
 | 
					        default=None,
 | 
				
			||||||
 | 
					        help=_("Color the log output"),
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def set_console_logging(verbose=False):
 | 
					class ColorFormatter(logging.Formatter):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __init__(self, msg):
 | 
				
			||||||
 | 
					        logging.Formatter.__init__(self, msg)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        bright_black = "\x1b[90;20m"
 | 
				
			||||||
 | 
					        yellow = "\x1b[33;20m"
 | 
				
			||||||
 | 
					        red = "\x1b[31;20m"
 | 
				
			||||||
 | 
					        bold_red = "\x1b[31;1m"
 | 
				
			||||||
 | 
					        reset = "\x1b[0m"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.FORMATS = {
 | 
				
			||||||
 | 
					            logging.DEBUG: bright_black + msg + reset,
 | 
				
			||||||
 | 
					            logging.INFO: reset + msg + reset,  # use default color
 | 
				
			||||||
 | 
					            logging.WARNING: yellow + msg + reset,
 | 
				
			||||||
 | 
					            logging.ERROR: red + msg + reset,
 | 
				
			||||||
 | 
					            logging.CRITICAL: bold_red + msg + reset
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def format(self, record):
 | 
				
			||||||
 | 
					        log_fmt = self.FORMATS.get(record.levelno)
 | 
				
			||||||
 | 
					        formatter = logging.Formatter(log_fmt)
 | 
				
			||||||
 | 
					        return formatter.format(record)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def set_console_logging(verbose=False, color=False):
 | 
				
			||||||
    """Globally set logging to output nicely to the console."""
 | 
					    """Globally set logging to output nicely to the console."""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    class _StdOutFilter(logging.Filter):
 | 
					    class _StdOutFilter(logging.Filter):
 | 
				
			||||||
| 
						 | 
					@ -255,13 +287,18 @@ def set_console_logging(verbose=False):
 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
        level = logging.ERROR
 | 
					        level = logging.ERROR
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if color or (color is None and sys.stdout.isatty()):
 | 
				
			||||||
 | 
					        formatter = ColorFormatter
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        formatter = logging.Formatter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    stdout_handler = logging.StreamHandler(sys.stdout)
 | 
					    stdout_handler = logging.StreamHandler(sys.stdout)
 | 
				
			||||||
    stdout_handler.addFilter(_StdOutFilter())
 | 
					    stdout_handler.addFilter(_StdOutFilter())
 | 
				
			||||||
    stdout_handler.setFormatter(logging.Formatter('%(message)s'))
 | 
					    stdout_handler.setFormatter(formatter('%(message)s'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    stderr_handler = logging.StreamHandler(sys.stderr)
 | 
					    stderr_handler = logging.StreamHandler(sys.stderr)
 | 
				
			||||||
    stderr_handler.setLevel(logging.ERROR)
 | 
					    stderr_handler.setLevel(logging.ERROR)
 | 
				
			||||||
    stderr_handler.setFormatter(logging.Formatter(_('ERROR: %(message)s')))
 | 
					    stderr_handler.setFormatter(formatter(_('ERROR: %(message)s')))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    logging.basicConfig(
 | 
					    logging.basicConfig(
 | 
				
			||||||
        force=True, level=level, handlers=[stdout_handler, stderr_handler]
 | 
					        force=True, level=level, handlers=[stdout_handler, stderr_handler]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -82,7 +82,7 @@ def main():
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
    options = common.parse_args(parser)
 | 
					    options = common.parse_args(parser)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    common.set_console_logging(options.verbose)
 | 
					    common.set_console_logging(options.verbose, options.color)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fdroiddir = os.getcwd()
 | 
					    fdroiddir = os.getcwd()
 | 
				
			||||||
    test_config = dict()
 | 
					    test_config = dict()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -350,7 +350,7 @@ def main():
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
    options = common.parse_args(parser)
 | 
					    options = common.parse_args(parser)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    common.set_console_logging(options.verbose)
 | 
					    common.set_console_logging(options.verbose, options.color)
 | 
				
			||||||
    logging.captureWarnings(True)  # for SNIMissingWarning
 | 
					    logging.captureWarnings(True)  # for SNIMissingWarning
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    common.get_config()
 | 
					    common.get_config()
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -91,7 +91,7 @@ def main():
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
    options = common.parse_args(parser)
 | 
					    options = common.parse_args(parser)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    common.set_console_logging(options.verbose)
 | 
					    common.set_console_logging(options.verbose, options.color)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if options.all:
 | 
					    if options.all:
 | 
				
			||||||
        options.archive = True
 | 
					        options.archive = True
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -104,7 +104,7 @@ def main():
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
    parser.add_argument("--no-check-https", action="store_true", default=False)
 | 
					    parser.add_argument("--no-check-https", action="store_true", default=False)
 | 
				
			||||||
    options = common.parse_args(parser)
 | 
					    options = common.parse_args(parser)
 | 
				
			||||||
    common.set_console_logging(options.verbose)
 | 
					    common.set_console_logging(options.verbose, options.color)
 | 
				
			||||||
    common.read_config()
 | 
					    common.read_config()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    extract(options)
 | 
					    extract(options)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue