File: Commands\Tool\ToolExecuteCommandDefinition.cs
Web Access
Project: src\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;

namespace Microsoft.DotNet.Cli.Commands.Tool.Execute;

internal sealed class ToolExecuteCommandDefinition : ToolExecuteCommandDefinitionBase
{
    public ToolExecuteCommandDefinition()
        : base("execute")
    {
        Aliases.Add("exec");
    }
}

internal abstract class ToolExecuteCommandDefinitionBase : Command
{
    public readonly Argument<PackageIdentityWithRange> PackageIdentityArgument = CommonArguments.CreateRequiredPackageIdentityArgument("dotnetsay", "2.1.7");

    public readonly Argument<IEnumerable<string>> CommandArgument = new("commandArguments")
    {
        Description = CommandDefinitionStrings.ToolRunArgumentsDescription
    };

    public readonly Option<string> VersionOption = ToolAppliedOption.CreateVersionOption();
    public readonly Option<bool> RollForwardOption = ToolAppliedOption.CreateRollForwardOption();
    public readonly Option<bool> PrereleaseOption = ToolAppliedOption.CreatePrereleaseOption();
    public readonly Option<string> ConfigOption = ToolAppliedOption.CreateConfigOption();
    public readonly Option<string[]> SourceOption = ToolAppliedOption.CreateSourceOption();
    public readonly Option<string[]> AddSourceOption = ToolAppliedOption.CreateAddSourceOption();
    public readonly Option<bool> YesOption = CommonOptions.CreateYesOption(hidden: true);
    public readonly Option<Utils.VerbosityOptions> VerbosityOption = CommonOptions.CreateVerbosityOption(Utils.VerbosityOptions.normal);

    public readonly NuGetRestoreOptions RestoreOptions = new(forward: true);

    public ToolExecuteCommandDefinitionBase(string name)
        : base(name, CommandDefinitionStrings.ToolExecuteCommandDescription)
    {
        Arguments.Add(PackageIdentityArgument);
        Arguments.Add(CommandArgument);

        Options.Add(VersionOption);
        Options.Add(YesOption);
        Options.Add(RollForwardOption);
        Options.Add(PrereleaseOption);
        Options.Add(ConfigOption);
        Options.Add(SourceOption);
        Options.Add(AddSourceOption);
        Options.Add(VerbosityOption);

        RestoreOptions.AddTo(Options);
    }
}