73 lines
1.9 KiB
C#
73 lines
1.9 KiB
C#
// Copyright (c) .NET Foundation. All rights reserved.
|
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
|
|
using System;
|
|
using System.IO;
|
|
|
|
namespace Microsoft.Extensions.Tools.Internal
|
|
{
|
|
public class ConsoleReporter : IReporter
|
|
{
|
|
private object _writeLock = new object();
|
|
|
|
public ConsoleReporter(IConsole console)
|
|
: this(console, verbose: false, quiet: false)
|
|
{ }
|
|
|
|
public ConsoleReporter(IConsole console, bool verbose, bool quiet)
|
|
{
|
|
Ensure.NotNull(console, nameof(console));
|
|
|
|
Console = console;
|
|
IsVerbose = verbose;
|
|
IsQuiet = quiet;
|
|
}
|
|
|
|
protected IConsole Console { get; }
|
|
public bool IsVerbose { get; set; }
|
|
public bool IsQuiet { get; set; }
|
|
|
|
protected virtual void WriteLine(TextWriter writer, string message, ConsoleColor? color)
|
|
{
|
|
lock (_writeLock)
|
|
{
|
|
if (color.HasValue)
|
|
{
|
|
Console.ForegroundColor = color.Value;
|
|
}
|
|
|
|
writer.WriteLine(message);
|
|
|
|
if (color.HasValue)
|
|
{
|
|
Console.ResetColor();
|
|
}
|
|
}
|
|
}
|
|
|
|
public virtual void Error(string message)
|
|
=> WriteLine(Console.Error, message, ConsoleColor.Red);
|
|
public virtual void Warn(string message)
|
|
=> WriteLine(Console.Out, message, ConsoleColor.Yellow);
|
|
|
|
public virtual void Output(string message)
|
|
{
|
|
if (IsQuiet)
|
|
{
|
|
return;
|
|
}
|
|
WriteLine(Console.Out, message, color: null);
|
|
}
|
|
|
|
public virtual void Verbose(string message)
|
|
{
|
|
if (!IsVerbose)
|
|
{
|
|
return;
|
|
}
|
|
|
|
WriteLine(Console.Out, message, ConsoleColor.DarkGray);
|
|
}
|
|
}
|
|
}
|