// Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace Microsoft.DotNet.Cli.Utils { internal static class CommandContext { internal static class Variables { private static readonly string Prefix = "DOTNET_CLI_CONTEXT_"; internal static readonly string Verbose = Prefix + "VERBOSE"; internal static readonly string AnsiPassThru = Prefix + "ANSI_PASS_THRU"; } private static Lazy _verbose = new Lazy(() => GetBool(Variables.Verbose)); private static Lazy _ansiPassThru = new Lazy(() => GetBool(Variables.AnsiPassThru)); public static bool IsVerbose() { return _verbose.Value; } public static bool ShouldPassAnsiCodesThrough() { return _ansiPassThru.Value; } private static bool GetBool(string name, bool defaultValue = false) { var str = Environment.GetEnvironmentVariable(name); if (string.IsNullOrEmpty(str)) { return defaultValue; } switch (str.ToLowerInvariant()) { case "true": case "1": case "yes": return true; case "false": case "0": case "no": return false; default: return defaultValue; } } } }