diff --git a/pre_commit/commands/autoupdate.py b/pre_commit/commands/autoupdate.py index 872de173..714dfd97 100644 --- a/pre_commit/commands/autoupdate.py +++ b/pre_commit/commands/autoupdate.py @@ -1,8 +1,6 @@ from __future__ import print_function from __future__ import unicode_literals -import logging - from aspy.yaml import ordered_dump from aspy.yaml import ordered_load @@ -12,7 +10,6 @@ from pre_commit.clientlib.validate_config import CONFIG_JSON_SCHEMA from pre_commit.clientlib.validate_config import is_local_hooks from pre_commit.clientlib.validate_config import load_config from pre_commit.jsonschema_extensions import remove_defaults -from pre_commit.logging_handler import LoggingHandler from pre_commit.ordereddict import OrderedDict from pre_commit.repository import Repository from pre_commit.util import CalledProcessError @@ -20,9 +17,6 @@ from pre_commit.util import cmd_output from pre_commit.util import cwd -logger = logging.getLogger('pre_commit') - - class RepositoryCannotBeUpdatedError(RuntimeError): pass @@ -69,10 +63,6 @@ def _update_repository(repo_config, runner): def autoupdate(runner): """Auto-update the pre-commit config to the latest versions of repos.""" - # Set up our logging handler - logger.addHandler(LoggingHandler(False)) - logger.setLevel(logging.WARNING) - retv = 0 output_configs = [] changed = False diff --git a/pre_commit/commands/install_uninstall.py b/pre_commit/commands/install_uninstall.py index 520c4f1e..1277ec35 100644 --- a/pre_commit/commands/install_uninstall.py +++ b/pre_commit/commands/install_uninstall.py @@ -2,21 +2,15 @@ from __future__ import print_function from __future__ import unicode_literals import io -import logging -import os import os.path import sys from pre_commit import output -from pre_commit.logging_handler import LoggingHandler from pre_commit.util import make_executable from pre_commit.util import mkdirp from pre_commit.util import resource_filename -logger = logging.getLogger('pre_commit') - - # This is used to identify the hook file we install PREVIOUS_IDENTIFYING_HASHES = ( '4d9958c90bc262f47553e2c073f14cfe', @@ -88,9 +82,6 @@ def install(runner, overwrite=False, hooks=False, hook_type='pre-commit'): # If they requested we install all of the hooks, do so. if hooks: - # Set up our logging handler - logger.addHandler(LoggingHandler(False)) - logger.setLevel(logging.INFO) for repository in runner.repositories: repository.require_installed() diff --git a/pre_commit/commands/run.py b/pre_commit/commands/run.py index 43a76bb4..67d0b778 100644 --- a/pre_commit/commands/run.py +++ b/pre_commit/commands/run.py @@ -8,7 +8,6 @@ import sys from pre_commit import color from pre_commit import git from pre_commit import output -from pre_commit.logging_handler import LoggingHandler from pre_commit.output import get_hook_message from pre_commit.staged_files_only import staged_files_only from pre_commit.util import cmd_output @@ -178,9 +177,6 @@ def _has_unstaged_config(runner): def run(runner, args, environ=os.environ): no_stash = args.no_stash or args.all_files or bool(args.files) - # Set up our logging handler - logger.addHandler(LoggingHandler(args.color)) - logger.setLevel(logging.INFO) # Check if we have unresolved merge conflict files and fail fast. if _has_unmerged_paths(runner): diff --git a/pre_commit/git.py b/pre_commit/git.py index 17b42905..96e7390d 100644 --- a/pre_commit/git.py +++ b/pre_commit/git.py @@ -2,7 +2,6 @@ from __future__ import unicode_literals import functools import logging -import os import os.path import re diff --git a/pre_commit/logging_handler.py b/pre_commit/logging_handler.py index f8472e07..78c2827a 100644 --- a/pre_commit/logging_handler.py +++ b/pre_commit/logging_handler.py @@ -6,6 +6,8 @@ from pre_commit import color from pre_commit import output +logger = logging.getLogger('pre_commit') + LOG_LEVEL_COLORS = { 'DEBUG': '', 'INFO': '', @@ -30,3 +32,8 @@ class LoggingHandler(logging.Handler): record.getMessage(), ) ) + + +def add_logging_handler(*args, **kwargs): + logger.addHandler(LoggingHandler(*args, **kwargs)) + logger.setLevel(logging.INFO) diff --git a/pre_commit/main.py b/pre_commit/main.py index 1afbef0b..97281890 100644 --- a/pre_commit/main.py +++ b/pre_commit/main.py @@ -15,6 +15,7 @@ from pre_commit.commands.install_uninstall import install from pre_commit.commands.install_uninstall import uninstall from pre_commit.commands.run import run from pre_commit.error_handler import error_handler +from pre_commit.logging_handler import add_logging_handler from pre_commit.runner import Runner @@ -25,6 +26,14 @@ from pre_commit.runner import Runner os.environ.pop('__PYVENV_LAUNCHER__', None) +def _add_color_option(parser): + parser.add_argument( + '--color', default='auto', type=color.use_color, + metavar='{' + ','.join(color.COLOR_CHOICES) + '}', + help='Whether to use color in output. Defaults to `%(default)s`.', + ) + + def main(argv=None): argv = argv if argv is not None else sys.argv[1:] argv = [five.to_text(arg) for arg in argv] @@ -44,6 +53,7 @@ def main(argv=None): install_parser = subparsers.add_parser( 'install', help='Install the pre-commit script.', ) + _add_color_option(install_parser) install_parser.add_argument( '-f', '--overwrite', action='store_true', help='Overwrite existing hooks / remove migration mode.', @@ -63,25 +73,26 @@ def main(argv=None): uninstall_parser = subparsers.add_parser( 'uninstall', help='Uninstall the pre-commit script.', ) + _add_color_option(uninstall_parser) uninstall_parser.add_argument( '-t', '--hook-type', choices=('pre-commit', 'pre-push'), default='pre-commit', ) - subparsers.add_parser('clean', help='Clean out pre-commit files.') + clean_parser = subparsers.add_parser( + 'clean', help='Clean out pre-commit files.', + ) + _add_color_option(clean_parser) - subparsers.add_parser( + autoupdate_parser = subparsers.add_parser( 'autoupdate', help="Auto-update pre-commit config to the latest repos' versions.", ) + _add_color_option(autoupdate_parser) run_parser = subparsers.add_parser('run', help='Run hooks.') + _add_color_option(run_parser) run_parser.add_argument('hook', nargs='?', help='A single hook-id to run') - run_parser.add_argument( - '--color', default='auto', type=color.use_color, - metavar='{' + ','.join(color.COLOR_CHOICES) + '}', - help='Whether to use color in output. Defaults to `%(default)s`.', - ) run_parser.add_argument( '--no-stash', default=False, action='store_true', help='Use this option to prevent auto stashing of unstaged files.', @@ -140,6 +151,7 @@ def main(argv=None): parser.parse_args(['--help']) with error_handler(): + add_logging_handler(args.color) runner = Runner.create() if args.command == 'install': diff --git a/pre_commit/prefixed_command_runner.py b/pre_commit/prefixed_command_runner.py index fc4a3198..6ae85099 100644 --- a/pre_commit/prefixed_command_runner.py +++ b/pre_commit/prefixed_command_runner.py @@ -1,6 +1,5 @@ from __future__ import unicode_literals -import os import os.path import subprocess diff --git a/pre_commit/runner.py b/pre_commit/runner.py index 35ab3427..c055b126 100644 --- a/pre_commit/runner.py +++ b/pre_commit/runner.py @@ -1,6 +1,5 @@ from __future__ import unicode_literals -import os import os.path from cached_property import cached_property diff --git a/pre_commit/store.py b/pre_commit/store.py index 9b2320e6..8e7e9ddf 100644 --- a/pre_commit/store.py +++ b/pre_commit/store.py @@ -3,7 +3,6 @@ from __future__ import unicode_literals import contextlib import io import logging -import os import os.path import sqlite3 import tempfile diff --git a/pre_commit/util.py b/pre_commit/util.py index a1435ae4..18394c3f 100644 --- a/pre_commit/util.py +++ b/pre_commit/util.py @@ -3,7 +3,6 @@ from __future__ import unicode_literals import contextlib import errno import functools -import os import os.path import shutil import stat diff --git a/testing/util.py b/testing/util.py index a234adf6..10e84462 100644 --- a/testing/util.py +++ b/testing/util.py @@ -1,6 +1,5 @@ from __future__ import unicode_literals -import os import os.path import shutil diff --git a/tests/commands/install_uninstall_test.py b/tests/commands/install_uninstall_test.py index 331d857f..2d80d49f 100644 --- a/tests/commands/install_uninstall_test.py +++ b/tests/commands/install_uninstall_test.py @@ -2,7 +2,6 @@ from __future__ import absolute_import from __future__ import unicode_literals import io -import os import os.path import re import shutil diff --git a/tests/commands/run_test.py b/tests/commands/run_test.py index 0618faf0..d0948378 100644 --- a/tests/commands/run_test.py +++ b/tests/commands/run_test.py @@ -2,7 +2,6 @@ from __future__ import unicode_literals import io -import os import os.path import subprocess import sys diff --git a/tests/conftest.py b/tests/conftest.py index b8227230..ca629e7f 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -4,7 +4,6 @@ from __future__ import unicode_literals import functools import io import logging -import os import os.path import mock diff --git a/tests/repository_test.py b/tests/repository_test.py index 8fe2206b..79400ae1 100644 --- a/tests/repository_test.py +++ b/tests/repository_test.py @@ -3,7 +3,6 @@ from __future__ import unicode_literals import io import logging -import os import os.path import re import shutil diff --git a/tests/runner_test.py b/tests/runner_test.py index 782e8d53..29bbee3e 100644 --- a/tests/runner_test.py +++ b/tests/runner_test.py @@ -1,7 +1,6 @@ from __future__ import absolute_import from __future__ import unicode_literals -import os import os.path import pre_commit.constants as C diff --git a/tests/store_test.py b/tests/store_test.py index 21aceb64..950693cf 100644 --- a/tests/store_test.py +++ b/tests/store_test.py @@ -2,7 +2,6 @@ from __future__ import absolute_import from __future__ import unicode_literals import io -import os import os.path import sqlite3 diff --git a/tests/util_test.py b/tests/util_test.py index 7fa25bcd..e9c7500a 100644 --- a/tests/util_test.py +++ b/tests/util_test.py @@ -1,6 +1,5 @@ from __future__ import unicode_literals -import os import os.path import random