File: Commands\Tool\ToolUpdateInstallCommandDefinition.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;
using Microsoft.DotNet.Cli.Utils;

namespace Microsoft.DotNet.Cli.Commands.Tool;

internal abstract class ToolUpdateInstallCommandDefinition : System.CommandLine.Command
{
    public readonly Option<bool> AllowPackageDowngradeOption = ToolAppliedOption.CreateAllowPackageDowngradeOption();

    public readonly ToolLocationOptions LocationOptions = new(
        globalOptionDescription: CommandDefinitionStrings.ToolInstallGlobalOptionDescription,
        localOptionDescription: CommandDefinitionStrings.ToolInstallLocalOptionDescription,
        toolPathOptionDescription: CommandDefinitionStrings.ToolInstallToolPathOptionDescription);

    public readonly Option<string> VersionOption = ToolAppliedOption.CreateVersionOption();
    public readonly Option<string> ConfigOption = ToolAppliedOption.CreateConfigOption();
    public readonly Option<string> ToolManifestOption = ToolAppliedOption.CreateToolManifestOption(CommandDefinitionStrings.ToolInstallManifestPathOptionDescription);

    public readonly Option<string[]> AddSourceOption = ToolAppliedOption.CreateAddSourceOption();
    public readonly Option<string[]> SourceOption = ToolAppliedOption.CreateSourceOption();

    public readonly Option<string> FrameworkOption = new("--framework")
    {
        Description = CommandDefinitionStrings.ToolInstallFrameworkOptionDescription,
        HelpName = CommandDefinitionStrings.ToolInstallFrameworkOptionName
    };

    public readonly Option<bool> PrereleaseOption = ToolAppliedOption.CreatePrereleaseOption();

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

    public readonly Option<VerbosityOptions> VerbosityOption = CommonOptions.CreateVerbosityOption(VerbosityOptions.normal);

    public ToolUpdateInstallCommandDefinition(string name, string description)
        : base(name, description)
    {
        LocationOptions.AddTo(Options);

        Options.Add(VersionOption);
        Options.Add(ConfigOption);
        Options.Add(ToolManifestOption);
        Options.Add(AddSourceOption);
        Options.Add(SourceOption);
        Options.Add(FrameworkOption);
        Options.Add(PrereleaseOption);

        RestoreOptions.AddTo(Options);

        Options.Add(VerbosityOption);
        Options.Add(AllowPackageDowngradeOption);
    }
}