Coverage for lintro / utils / display_helpers.py: 100%
68 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-04-03 18:53 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2026-04-03 18:53 +0000
1"""Display helpers for Lintro console output.
3Contains ASCII art display functions and styling constants.
4"""
6from collections.abc import Callable
8from loguru import logger
10from lintro.enums.action import Action
11from lintro.utils.formatting import read_ascii_art
13# Constants for border lengths
14BORDER_LENGTH: int = 50
15INFO_BORDER_LENGTH: int = 40
18def print_ascii_art(
19 console_output_func: Callable[..., None],
20 issue_count: int,
21) -> None:
22 """Print ASCII art based on the issue count.
24 Args:
25 console_output_func: Function to output text to console
26 issue_count: The number of issues (remaining, fixed, or total)
27 """
28 try:
29 if issue_count == 0:
30 ascii_art = read_ascii_art(filename="success.txt")
31 else:
32 ascii_art = read_ascii_art(filename="fail.txt")
34 if ascii_art:
35 art_text: str = "\n".join(ascii_art)
36 console_output_func(text=art_text)
37 except (OSError, ValueError, TypeError) as e:
38 logger.debug(f"Could not load ASCII art: {e}")
41def print_final_status(
42 console_output_func: Callable[..., None],
43 action: Action,
44 total_issues: int,
45) -> None:
46 """Print the final status for the run.
48 Args:
49 console_output_func: Function to output text to console
50 action: Action: The Action enum value representing the action being performed.
51 total_issues: int: The total number of issues found.
52 """
53 try:
54 import click
56 if action == Action.FIX:
57 # Format operations: show success regardless of fixes made
58 if total_issues == 0:
59 final_msg: str = "✓ No issues found."
60 else:
61 final_msg = f"✓ Fixed {total_issues} issues."
62 console_output_func(text=click.style(final_msg, fg="green", bold=True))
63 else: # check
64 # Check operations: show failure if issues found
65 if total_issues == 0:
66 final_msg = "✓ No issues found."
67 console_output_func(text=click.style(final_msg, fg="green", bold=True))
68 else:
69 final_msg = f"✗ Found {total_issues} issues."
70 console_output_func(text=click.style(final_msg, fg="red", bold=True))
72 console_output_func(text="")
73 except ImportError:
74 # Fallback if click not available
75 if action == Action.FIX:
76 if total_issues == 0:
77 final_msg = "✓ No issues found."
78 else:
79 final_msg = f"✓ Fixed {total_issues} issues."
80 console_output_func(text=f"\033[92m{final_msg}\033[0m") # green
81 else: # check
82 if total_issues == 0:
83 final_msg = "✓ No issues found."
84 console_output_func(text=f"\033[92m{final_msg}\033[0m") # green
85 else:
86 final_msg = f"✗ Found {total_issues} issues."
87 console_output_func(text=f"\033[91m{final_msg}\033[0m") # red
89 console_output_func(text="")
92def print_final_status_format(
93 console_output_func: Callable[..., None],
94 total_fixed: int,
95 total_remaining: int,
96) -> None:
97 """Print the final status for format operations.
99 Args:
100 console_output_func: Function to output text to console
101 total_fixed: int: The total number of issues fixed.
102 total_remaining: int: The total number of remaining issues.
103 """
104 try:
105 import click
107 if total_remaining == 0:
108 if total_fixed == 0:
109 final_msg: str = "✓ No issues found."
110 else:
111 final_msg = f"✓ {total_fixed} fixed"
112 console_output_func(text=click.style(final_msg, fg="green", bold=True))
113 else:
114 if total_fixed > 0:
115 fixed_msg: str = f"✓ {total_fixed} fixed"
116 console_output_func(text=click.style(fixed_msg, fg="green", bold=True))
117 remaining_msg: str = f"✗ {total_remaining} remaining"
118 console_output_func(text=click.style(remaining_msg, fg="red", bold=True))
120 console_output_func(text="")
121 except ImportError:
122 # Fallback if click not available
123 if total_remaining == 0:
124 if total_fixed == 0:
125 final_msg = "✓ No issues found."
126 else:
127 final_msg = f"✓ {total_fixed} fixed"
128 console_output_func(text=f"\033[92m{final_msg}\033[0m") # green
129 else:
130 if total_fixed > 0:
131 fixed_msg = f"✓ {total_fixed} fixed"
132 console_output_func(text=f"\033[92m{fixed_msg}\033[0m") # green
133 remaining_msg = f"✗ {total_remaining} remaining"
134 console_output_func(text=f"\033[91m{remaining_msg}\033[0m") # red
136 console_output_func(text="")