| File: Commands\Tool\ToolCommandParser.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. using System.CommandLine; #if !CLI_AOT using Microsoft.DotNet.Cli.Commands.Tool.Execute; using Microsoft.DotNet.Cli.Commands.Tool.Install; using Microsoft.DotNet.Cli.Commands.Tool.Restore; using Microsoft.DotNet.Cli.Commands.Tool.Update; using Microsoft.DotNet.Cli.Extensions; #endif using Microsoft.DotNet.Cli.Commands.Tool.List; using Microsoft.DotNet.Cli.Commands.Tool.Run; using Microsoft.DotNet.Cli.Commands.Tool.Search; using Microsoft.DotNet.Cli.Commands.Tool.Uninstall; namespace Microsoft.DotNet.Cli.Commands.Tool; internal static class ToolCommandParser { public static void ConfigureCommand(ToolCommandDefinition command) { #if CLI_AOT // ConfigureAotActions already set every `tool` subcommand (and the bare `tool` command) to // throw CommandNotAvailableInAotException by default, so we only override the paths that run // in AOT. Only the local `list`/`uninstall`, `run`, and `search` paths are AOT-capable; the // `--global`/`--tool-path` variants and `install`/`update`/`restore`/`execute` keep the // default fallback because they depend on NuGet package install/restore infrastructure that // isn't AOT-ready. NativeEntryPoint catches the exception and hosts the managed CLI. command.ListCommand.SetAction(parseResult => command.ListCommand.LocationOptions.IsGlobalOrToolPath(parseResult) ? throw new CommandNotAvailableInAotException() : new ToolListLocalCommand(parseResult).Execute()); command.UninstallCommand.SetAction(parseResult => command.UninstallCommand.LocationOptions.IsGlobalOrToolPath(parseResult) ? throw new CommandNotAvailableInAotException() : new ToolUninstallLocalCommand(parseResult).Execute()); command.RunCommand.SetAction(parseResult => new ToolRunCommand(parseResult).Execute()); command.SearchCommand.SetAction(parseResult => new ToolSearchCommand(parseResult).Execute()); #else command.SetAction(parseResult => parseResult.HandleMissingCommand()); command.InstallCommand.SetAction(parseResult => new ToolInstallCommand(parseResult).Execute()); command.UninstallCommand.SetAction(parseResult => new ToolUninstallCommand(parseResult).Execute()); command.UpdateCommand.SetAction(parseResult => new ToolUpdateCommand(parseResult).Execute()); command.ListCommand.SetAction(parseResult => new ToolListCommand(parseResult).Execute()); command.RunCommand.SetAction(parseResult => new ToolRunCommand(parseResult).Execute()); command.SearchCommand.SetAction(parseResult => new ToolSearchCommand(parseResult).Execute()); command.RestoreCommand.SetAction(parseResult => new ToolRestoreCommand(parseResult).Execute()); command.ExecuteCommand.SetAction(parseResult => new ToolExecuteCommand(parseResult).Execute()); #endif } }