| File: CommandFactory\CommandResolution\AbstractPathBasedCommandResolver.cs | Web Access |
| Project: src\sdk\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.DotNet.Cli.Utils; using Microsoft.DotNet.Cli.Utils.Extensions; namespace Microsoft.DotNet.Cli.CommandFactory.CommandResolution; public abstract class AbstractPathBasedCommandResolver : ICommandResolver { protected IEnvironmentProvider _environment; protected IPlatformCommandSpecFactory _commandSpecFactory; public AbstractPathBasedCommandResolver(IEnvironmentProvider environment, IPlatformCommandSpecFactory commandSpecFactory) { if (environment == null) { throw new ArgumentNullException(nameof(environment)); } if (commandSpecFactory == null) { throw new ArgumentNullException(nameof(commandSpecFactory)); } _environment = environment; _commandSpecFactory = commandSpecFactory; } public CommandSpec Resolve(CommandResolverArguments commandResolverArguments) { if (commandResolverArguments.CommandName == null) { return null; } var commandPath = ResolveCommandPath(commandResolverArguments); if (commandPath == null) { return null; } return _commandSpecFactory.CreateCommandSpec( commandResolverArguments.CommandName, commandResolverArguments.CommandArguments.OrEmptyIfNull(), commandPath, _environment); } internal abstract string ResolveCommandPath(CommandResolverArguments commandResolverArguments); }