File: CommandLine\CommandLineSwitchesAccessor.cs
Web Access
Project: ..\..\..\src\MSBuild\MSBuild.csproj (MSBuild)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using static Microsoft.Build.CommandLine.Experimental.CommandLineSwitches;
 
namespace Microsoft.Build.CommandLine.Experimental
{
    internal readonly struct CommandLineSwitchesAccessor
    {
        private readonly CommandLineSwitches switches;
 
        internal CommandLineSwitchesAccessor(CommandLineSwitches switches)
        {
            this.switches = switches;
        }
 
        // Parameterless switches
        public bool? Help => GetParameterlessSwitchValue(ParameterlessSwitch.Help);
 
        public bool? Version => GetParameterlessSwitchValue(ParameterlessSwitch.Version);
 
        public bool? NoAutoResponse => GetParameterlessSwitchValue(ParameterlessSwitch.NoAutoResponse);
 
        public bool? NoConsoleLogger => GetParameterlessSwitchValue(ParameterlessSwitch.NoConsoleLogger);
 
        public bool? FileLogger => GetParameterlessSwitchValue(ParameterlessSwitch.FileLogger);
 
        public bool? FileLogger1 => GetParameterlessSwitchValue(ParameterlessSwitch.FileLogger1);
 
        public bool? FileLogger2 => GetParameterlessSwitchValue(ParameterlessSwitch.FileLogger2);
 
        public bool? FileLogger3 => GetParameterlessSwitchValue(ParameterlessSwitch.FileLogger3);
 
        public bool? FileLogger4 => GetParameterlessSwitchValue(ParameterlessSwitch.FileLogger4);
 
        public bool? FileLogger5 => GetParameterlessSwitchValue(ParameterlessSwitch.FileLogger5);
 
        public bool? FileLogger6 => GetParameterlessSwitchValue(ParameterlessSwitch.FileLogger6);
 
        public bool? FileLogger7 => GetParameterlessSwitchValue(ParameterlessSwitch.FileLogger7);
 
        public bool? FileLogger8 => GetParameterlessSwitchValue(ParameterlessSwitch.FileLogger8);
 
        public bool? FileLogger9 => GetParameterlessSwitchValue(ParameterlessSwitch.FileLogger9);
 
        public bool? DistributedFileLogger => GetParameterlessSwitchValue(ParameterlessSwitch.DistributedFileLogger);
 
#if DEBUG
        public bool? WaitForDebugger => GetParameterlessSwitchValue(ParameterlessSwitch.WaitForDebugger);
#endif
 
        // Parameterized switches
        public string[]? Project => GetParameterizedSwitchValue(ParameterizedSwitch.Project);
 
        public string[]? Target => GetParameterizedSwitchValue(ParameterizedSwitch.Target);
 
        public string[]? Property => GetParameterizedSwitchValue(ParameterizedSwitch.Property);
 
        public string[]? Logger => GetParameterizedSwitchValue(ParameterizedSwitch.Logger);
 
        public string[]? DistributedLogger => GetParameterizedSwitchValue(ParameterizedSwitch.DistributedLogger);
 
        public string[]? Verbosity => GetParameterizedSwitchValue(ParameterizedSwitch.Verbosity);
 
#if FEATURE_XML_SCHEMA_VALIDATION
        public string[]? Validate => GetParameterizedSwitchValue(ParameterizedSwitch.Validate);
#endif
 
        public string[]? ConsoleLoggerParameters => GetParameterizedSwitchValue(ParameterizedSwitch.ConsoleLoggerParameters);
 
        public string[]? NodeMode => GetParameterizedSwitchValue(ParameterizedSwitch.NodeMode);
 
        public string[]? MaxCpuCount => GetParameterizedSwitchValue(ParameterizedSwitch.MaxCPUCount);
 
        public string[]? IgnoreProjectExtensions => GetParameterizedSwitchValue(ParameterizedSwitch.IgnoreProjectExtensions);
 
        public string[]? ToolsVersion => GetParameterizedSwitchValue(ParameterizedSwitch.ToolsVersion);
 
        public string[]? FileLoggerParameters => GetParameterizedSwitchValue(ParameterizedSwitch.FileLoggerParameters);
 
        public string[]? FileLoggerParameters1 => GetParameterizedSwitchValue(ParameterizedSwitch.FileLoggerParameters1);
 
        public string[]? FileLoggerParameters2 => GetParameterizedSwitchValue(ParameterizedSwitch.FileLoggerParameters2);
 
        public string[]? FileLoggerParameters3 => GetParameterizedSwitchValue(ParameterizedSwitch.FileLoggerParameters3);
 
        public string[]? FileLoggerParameters4 => GetParameterizedSwitchValue(ParameterizedSwitch.FileLoggerParameters4);
 
        public string[]? FileLoggerParameters5 => GetParameterizedSwitchValue(ParameterizedSwitch.FileLoggerParameters5);
 
        public string[]? FileLoggerParameters6 => GetParameterizedSwitchValue(ParameterizedSwitch.FileLoggerParameters6);
 
        public string[]? FileLoggerParameters7 => GetParameterizedSwitchValue(ParameterizedSwitch.FileLoggerParameters7);
 
        public string[]? FileLoggerParameters8 => GetParameterizedSwitchValue(ParameterizedSwitch.FileLoggerParameters8);
 
        public string[]? FileLoggerParameters9 => GetParameterizedSwitchValue(ParameterizedSwitch.FileLoggerParameters9);
 
        public string[]? TerminalLogger => GetParameterizedSwitchValue(ParameterizedSwitch.TerminalLogger);
 
        public string[]? TerminalLoggerParameters => GetParameterizedSwitchValue(ParameterizedSwitch.TerminalLoggerParameters);
 
        public string[]? NodeReuse => GetParameterizedSwitchValue(ParameterizedSwitch.NodeReuse);
 
        public string[]? Preprocess => GetParameterizedSwitchValue(ParameterizedSwitch.Preprocess);
 
        public string[]? Targets => GetParameterizedSwitchValue(ParameterizedSwitch.Targets);
 
        public string[]? WarningsAsErrors => GetParameterizedSwitchValue(ParameterizedSwitch.WarningsAsErrors);
 
        public string[]? WarningsNotAsErrors => GetParameterizedSwitchValue(ParameterizedSwitch.WarningsNotAsErrors);
 
        public string[]? WarningsAsMessages => GetParameterizedSwitchValue(ParameterizedSwitch.WarningsAsMessages);
 
        public string[]? BinaryLogger => GetParameterizedSwitchValue(ParameterizedSwitch.BinaryLogger);
 
        public string[]? Check => GetParameterizedSwitchValue(ParameterizedSwitch.Check);
 
        public string[]? Restore => GetParameterizedSwitchValue(ParameterizedSwitch.Restore);
 
        public string[]? ProfileEvaluation => GetParameterizedSwitchValue(ParameterizedSwitch.ProfileEvaluation);
 
        public string[]? RestoreProperty => GetParameterizedSwitchValue(ParameterizedSwitch.RestoreProperty);
 
        public string[]? Interactive => GetParameterizedSwitchValue(ParameterizedSwitch.Interactive);
 
        public string[]? IsolateProjects => GetParameterizedSwitchValue(ParameterizedSwitch.IsolateProjects);
 
        public string[]? GraphBuild => GetParameterizedSwitchValue(ParameterizedSwitch.GraphBuild);
 
        public string[]? InputResultsCaches => GetParameterizedSwitchValue(ParameterizedSwitch.InputResultsCaches);
 
        public string[]? OutputResultsCache => GetParameterizedSwitchValue(ParameterizedSwitch.OutputResultsCache);
 
#if FEATURE_REPORTFILEACCESSES
        public string[]? ReportFileAccesses => GetParameterizedSwitchValue(ParameterizedSwitch.ReportFileAccesses);
#endif
 
        public string[]? LowPriority => GetParameterizedSwitchValue(ParameterizedSwitch.LowPriority);
 
        public string[]? Question => GetParameterizedSwitchValue(ParameterizedSwitch.Question);
 
        public string[]? DetailedSummary => GetParameterizedSwitchValue(ParameterizedSwitch.DetailedSummary);
 
        public string[]? GetProperty => GetParameterizedSwitchValue(ParameterizedSwitch.GetProperty);
 
        public string[]? GetItem => GetParameterizedSwitchValue(ParameterizedSwitch.GetItem);
 
        public string[]? GetTargetResult => GetParameterizedSwitchValue(ParameterizedSwitch.GetTargetResult);
 
        public string[]? GetResultOutputFile => GetParameterizedSwitchValue(ParameterizedSwitch.GetResultOutputFile);
 
        public string[]? FeatureAvailability => GetParameterizedSwitchValue(ParameterizedSwitch.FeatureAvailability);
 
        public string[]? MultiThreaded => GetParameterizedSwitchValue(ParameterizedSwitch.MultiThreaded);
 
        public string[]? NoLogo => GetParameterizedSwitchValue(ParameterizedSwitch.NoLogo);
 
        private bool? GetParameterlessSwitchValue(ParameterlessSwitch switchType) => switches.IsParameterlessSwitchSet(switchType) ? switches[switchType] : null;
 
        private string[]? GetParameterizedSwitchValue(ParameterizedSwitch switchType) => switches.IsParameterizedSwitchSet(switchType) ? switches[switchType] : null;
    }
}