File: Commands\Workload\InstallingWorkloadCommandDefinition.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.Workload;

/// <summary>
/// Shared options of workload install and update commands.
/// </summary>
internal abstract class InstallingWorkloadCommandDefinition : WorkloadCommandDefinitionBase
{
    public sealed override Option<string> TempDirOption { get; } = CreateTempDirOption();
    public sealed override Option<Utils.VerbosityOptions> VerbosityOption { get; } = CommonOptions.CreateVerbosityOption(Utils.VerbosityOptions.normal);

    public readonly Option<IEnumerable<string>> WorkloadSetVersionOption = new("--version")
    {
        Description = CommandDefinitionStrings.WorkloadSetVersionOptionDescription,
        AllowMultipleArgumentsPerToken = true
    };

    public readonly Option<bool> PrintDownloadLinkOnlyOption = new("--print-download-link-only")
    {
        Description = CommandDefinitionStrings.PrintDownloadLinkOnlyDescription,
        Hidden = true
    };

    public readonly Option<string> FromCacheOption = new("--from-cache")
    {
        Description = CommandDefinitionStrings.FromCacheOptionDescription,
        HelpName = CommandDefinitionStrings.FromCacheOptionArgumentName,
        Hidden = true
    };

    public readonly Option<bool> IncludePreviewOption = new("--include-previews")
    {
        Description = CommandDefinitionStrings.IncludePreviewOptionDescription
    };

    public readonly Option<string> DownloadToCacheOption = new("--download-to-cache")
    {
        Description = CommandDefinitionStrings.DownloadToCacheOptionDescription,
        HelpName = CommandDefinitionStrings.DownloadToCacheOptionArgumentName,
        Hidden = true
    };

    public readonly Option<string> FromRollbackFileOption = new("--from-rollback-file")
    {
        Description = CommandDefinitionStrings.FromRollbackDefinitionOptionDescription,
        Hidden = true
    };

    public readonly Option<string> ConfigOption = CreateConfigOption();

    public readonly Option<string[]> SourceOption = CreateSourceOption();

    public readonly Option<string> SdkVersionOption = CreateSdkVersionOption();

    public sealed override Option<bool> SkipSignCheckOption { get; } = CreateSkipSignCheckOption();

    public sealed override NuGetRestoreOptions RestoreOptions { get; } = new();

    public InstallingWorkloadCommandDefinition(string name, string description)
        : base(name, description)
    {
        Options.Add(TempDirOption);
        Options.Add(VerbosityOption);
        Options.Add(SdkVersionOption);
        Options.Add(ConfigOption);
        Options.Add(SourceOption);
        Options.Add(PrintDownloadLinkOnlyOption);
        Options.Add(FromCacheOption);
        Options.Add(DownloadToCacheOption);
        Options.Add(IncludePreviewOption);
        Options.Add(FromRollbackFileOption);
        Options.Add(SkipSignCheckOption);
        Options.Add(WorkloadSetVersionOption);

        RestoreOptions.AddTo(Options);
    }
}