-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathConsoleHelper.cs
More file actions
90 lines (78 loc) · 2.77 KB
/
ConsoleHelper.cs
File metadata and controls
90 lines (78 loc) · 2.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
using System;
namespace DocumentParser;
/// <summary>
/// Provides console output utilities with colored output, log levels, and progress indicators.
/// </summary>
public static class ConsoleHelper
{
/// <summary>
/// Defines the log levels for console output.
/// </summary>
public enum LogLevel
{
Info,
Success,
Warning,
Error,
Verbose
}
/// <summary>
/// Gets or sets whether verbose mode is enabled.
/// </summary>
public static bool VerboseMode { get; set; } = false;
/// <summary>
/// Gets or sets whether quiet mode is enabled (suppresses all output except errors).
/// </summary>
public static bool QuietMode { get; set; } = false;
/// <summary>
/// Writes a formatted message to the console with appropriate color and prefix based on log level.
/// </summary>
/// <param name="level">The log level of the message.</param>
/// <param name="message">The message format string.</param>
/// <param name="args">Optional arguments for the message format string.</param>
public static void WriteLine(LogLevel level, string message, params object[] args)
{
if (QuietMode && level != LogLevel.Error) return;
if (!VerboseMode && level == LogLevel.Verbose) return;
var formattedMessage = args.Length > 0 ? string.Format(message, args) : message;
var originalColor = Console.ForegroundColor;
Console.ForegroundColor = level switch
{
LogLevel.Success => ConsoleColor.Green,
LogLevel.Warning => ConsoleColor.Yellow,
LogLevel.Error => ConsoleColor.Red,
LogLevel.Verbose => ConsoleColor.DarkGray,
_ => ConsoleColor.White
};
var prefix = level switch
{
LogLevel.Success => "✓",
LogLevel.Warning => "⚠",
LogLevel.Error => "✗",
LogLevel.Verbose => "→",
_ => "ℹ"
};
Console.WriteLine($"{prefix} {formattedMessage}");
Console.ForegroundColor = originalColor;
}
/// <summary>
/// Writes a progress message to the console (overwrites the current line).
/// </summary>
/// <param name="message">The progress message to display.</param>
public static void WriteProgress(string message)
{
if (QuietMode) return;
var originalColor = Console.ForegroundColor;
Console.ForegroundColor = ConsoleColor.Cyan;
Console.Write($"\r{message}");
Console.ForegroundColor = originalColor;
}
/// <summary>
/// Clears the current progress line.
/// </summary>
public static void ClearProgress()
{
if (QuietMode) return;
Console.Write("\r" + new string(' ', Console.WindowWidth - 1) + "\r");
}
}