File: Extensions\CommonOptionsExtensions.cs
Web Access
Project: ..\..\..\src\Cli\dotnet\dotnet.csproj (dotnet)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
#nullable disable
 
using Microsoft.Build.Framework;
using Microsoft.Extensions.Logging;
using Microsoft.DotNet.Cli.Utils;
 
namespace Microsoft.DotNet.Cli.Extensions;
 
internal static class CommonOptionsExtensions
{
    public static LoggerVerbosity ToLoggerVerbosity(this VerbosityOptions verbosityOptions)
    {
        LoggerVerbosity verbosity = LoggerVerbosity.Normal;
        switch (verbosityOptions)
        {
            case VerbosityOptions.d:
            case VerbosityOptions.detailed:
                verbosity = LoggerVerbosity.Detailed;
                break;
            case VerbosityOptions.diag:
            case VerbosityOptions.diagnostic:
                verbosity = LoggerVerbosity.Diagnostic;
                break;
            case VerbosityOptions.m:
            case VerbosityOptions.minimal:
                verbosity = LoggerVerbosity.Minimal;
                break;
            case VerbosityOptions.n:
            case VerbosityOptions.normal:
                verbosity = LoggerVerbosity.Normal;
                break;
            case VerbosityOptions.q:
            case VerbosityOptions.quiet:
                verbosity = LoggerVerbosity.Quiet;
                break;
        }
        return verbosity;
    }
 
    public static bool IsDetailedOrDiagnostic(this VerbosityOptions verbosity)
    {
        return verbosity.Equals(VerbosityOptions.diag) ||
            verbosity.Equals(VerbosityOptions.diagnostic) ||
            verbosity.Equals(VerbosityOptions.d) ||
            verbosity.Equals(VerbosityOptions.detailed);
    }
 
    public static bool IsQuiet(this VerbosityOptions verbosity)
    {
        return verbosity.Equals(VerbosityOptions.q) ||
            verbosity.Equals(VerbosityOptions.quiet);
    }
    public static bool IsMinimal(this VerbosityOptions verbosity)
    {
        return verbosity.Equals(VerbosityOptions.m) ||
            verbosity.Equals(VerbosityOptions.minimal);
    }
    public static bool IsNormal(this VerbosityOptions verbosity)
    {
        return verbosity.Equals(VerbosityOptions.normal) ||
            verbosity.Equals(VerbosityOptions.n);
    }
 
    /// <summary>
    /// Converts <see cref="VerbosityOptions"/> to Microsoft.Extensions.Logging.<see cref="LogLevel"/>.
    /// </summary>
    public static LogLevel ToLogLevel(this VerbosityOptions verbosityOptions)
    {
        LogLevel logLevel = LogLevel.Information;
        switch (verbosityOptions)
        {
            case VerbosityOptions.d:
            case VerbosityOptions.detailed:
                logLevel = LogLevel.Debug;
                break;
            case VerbosityOptions.diag:
            case VerbosityOptions.diagnostic:
                logLevel = LogLevel.Trace;
                break;
            case VerbosityOptions.m:
            case VerbosityOptions.minimal:
                logLevel = LogLevel.Error;
                break;
            case VerbosityOptions.n:
            case VerbosityOptions.normal:
                logLevel = LogLevel.Information;
                break;
            case VerbosityOptions.q:
            case VerbosityOptions.quiet:
                logLevel = LogLevel.None;
                break;
        }
        return logLevel;
    }
}