| File: Commands\Tool\ToolLocationOptions.cs | Web Access |
| Project: src\sdk\src\Cli\Microsoft.DotNet.Cli.Definitions\Microsoft.DotNet.Cli.Definitions.csproj (Microsoft.DotNet.Cli.Definitions) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.CommandLine; using Microsoft.DotNet.Cli.Utils; using Microsoft.DotNet.Cli.CommandLine; namespace Microsoft.DotNet.Cli.Commands.Tool; internal readonly struct ToolLocationOptions( string globalOptionDescription, string localOptionDescription, string toolPathOptionDescription) { public readonly Option<bool> GlobalOption = ToolAppliedOption.CreateGlobalOption(globalOptionDescription); public readonly Option<bool> LocalOption = ToolAppliedOption.CreateLocalOption(localOptionDescription); public readonly Option<string> ToolPathOption = ToolAppliedOption.CreateToolPathOption(toolPathOptionDescription); public void AddTo(IList<Option> options) { options.Add(GlobalOption); options.Add(LocalOption); options.Add(ToolPathOption); } public bool IsGlobalOrToolPath(ParseResult parseResult) => parseResult.HasOption(GlobalOption) || parseResult.HasOption(ToolPathOption); public void EnsureNoConflictGlobalLocalToolPathOption(ParseResult parseResult, string message) { List<string> options = []; if (parseResult.HasOption(GlobalOption)) { options.Add(GlobalOption.Name); } if (parseResult.HasOption(LocalOption.Name)) { options.Add(LocalOption.Name); } if (parseResult.HasOption(ToolPathOption)) { options.Add(ToolPathOption.Name); } if (options.Count > 1) { throw new GracefulException( string.Format( message, string.Join(" ", options))); } } public void EnsureToolManifestAndOnlyLocalFlagCombination(ParseResult parseResult, Option<string> toolManifestOption) { if (IsGlobalOrToolPath(parseResult) && parseResult.HasOption(toolManifestOption)) { throw new GracefulException( string.Format( CommandDefinitionStrings.OnlyLocalOptionSupportManifestFileOption)); } } }