From 57a30764b716fba102e39466d9120bad7238d8ce Mon Sep 17 00:00:00 2001 From: Ruslan Kuprieiev Date: Mon, 22 May 2017 02:57:54 +0300 Subject: [PATCH] dvc: add -v|--verbose and -q|-quiet These are cmdline shortcuts to change dvc's verbosity without fiddling around with loglevel in dvc.conf. Both are added and handled as a common options for all dvc commands in base cmd class. --- dvc/command/base.py | 13 +++++++++++++ dvc/logger.py | 8 ++++++++ 2 files changed, 21 insertions(+) diff --git a/dvc/command/base.py b/dvc/command/base.py index 1cd76bd9f..c58a72b17 100644 --- a/dvc/command/base.py +++ b/dvc/command/base.py @@ -41,10 +41,13 @@ class CmdBase(object): self._settings = settings parser = argparse.ArgumentParser() + self.define_common_args(parser) self.define_args(parser) self._parsed_args, self._command_args = parser.parse_known_args(args=self.args) + self.process_common_args() + @property def settings(self): return self._settings @@ -88,6 +91,16 @@ class CmdBase(object): help='Lock data item - disable reproduction. ' + 'It can be enabled by `dvc lock` command or by forcing reproduction.') + def define_common_args(self, parser): + parser.add_argument('--quiet', '-q', action='store_true', default=False, help='Be quiet.') + parser.add_argument('--verbose', '-v', action='store_true', default=False, help='Be verbose.') + + def process_common_args(self): + if self._parsed_args.quiet and not self._parsed_args.verbose: + Logger.be_quiet() + elif not self._parsed_args.quiet and self._parsed_args.verbose: + Logger.be_verbose() + @property def no_git_actions(self): return self.parsed_args.no_git_actions diff --git a/dvc/logger.py b/dvc/logger.py index 3fc76a626..e630a685a 100644 --- a/dvc/logger.py +++ b/dvc/logger.py @@ -18,6 +18,14 @@ class Logger(object): def set_level(level): Logger._logger.setLevel(Logger.LEVEL_MAP.get(level.lower(), 'debug')) + @staticmethod + def be_quiet(): + Logger._logger.setLevel(logging.CRITICAL) + + @staticmethod + def be_verbose(): + Logger._logger.setLevel(logging.DEBUG) + @staticmethod def error(msg): return Logger._logger.error(msg)