mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-04-15 18:11:48 +04:00
Adding argument: --summary-json-output-file
This commit is contained in:
parent
7858ad066f
commit
9fd260feb1
2 changed files with 15 additions and 2 deletions
|
|
@ -3,12 +3,15 @@ from __future__ import annotations
|
|||
import argparse
|
||||
import contextlib
|
||||
import functools
|
||||
import json
|
||||
import logging
|
||||
import os
|
||||
import pathlib
|
||||
import re
|
||||
import subprocess
|
||||
import time
|
||||
import unicodedata
|
||||
|
||||
from typing import Any
|
||||
from typing import Collection
|
||||
from typing import MutableMapping
|
||||
|
|
@ -72,6 +75,7 @@ def filter_by_include_exclude(
|
|||
class Classifier:
|
||||
def __init__(self, filenames: Collection[str]) -> None:
|
||||
self.filenames = [f for f in filenames if os.path.lexists(f)]
|
||||
self.summary_json = {}
|
||||
|
||||
@functools.lru_cache(maxsize=None)
|
||||
def _types_for_file(self, filename: str) -> set[str]:
|
||||
|
|
@ -160,6 +164,7 @@ def _run_single_hook(
|
|||
cols=cols,
|
||||
),
|
||||
)
|
||||
classifier.summary_json[hook.name] = SKIPPED
|
||||
duration = None
|
||||
retcode = 0
|
||||
diff_after = diff_before
|
||||
|
|
@ -176,6 +181,7 @@ def _run_single_hook(
|
|||
cols=cols,
|
||||
),
|
||||
)
|
||||
classifier.summary_json[hook.name] = SKIPPED
|
||||
duration = None
|
||||
retcode = 0
|
||||
diff_after = diff_before
|
||||
|
|
@ -204,7 +210,7 @@ def _run_single_hook(
|
|||
status = 'Passed'
|
||||
|
||||
output.write_line(color.format_color(status, print_color, use_color))
|
||||
|
||||
classifier.summary_json[hook.name] = status
|
||||
if verbose or hook.verbose or retcode or files_modified:
|
||||
_subtle_line(f'- hook id: {hook.id}', use_color)
|
||||
|
||||
|
|
@ -306,7 +312,10 @@ def _run_hooks(
|
|||
'git', '--no-pager', 'diff', '--no-ext-diff',
|
||||
f'--color={git_color_opt}',
|
||||
))
|
||||
|
||||
if args.summary_json_output_file:
|
||||
fn = pathlib.Path(args.summary_json_output_file).expanduser().resolve()
|
||||
with open(fn,'w') as f:
|
||||
f.write(json.dumps(classifier.summary_json))
|
||||
return retval
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -154,6 +154,10 @@ def _add_run_options(parser: argparse.ArgumentParser) -> None:
|
|||
'the rewrite'
|
||||
),
|
||||
)
|
||||
parser.add_argument(
|
||||
'--summary-json-output-file',
|
||||
help='Write summary information to a json file.'
|
||||
)
|
||||
|
||||
|
||||
def _adjust_args_and_chdir(args: argparse.Namespace) -> None:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue