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

namespace Microsoft.DotNet.Cli.Commands.Workload;

internal abstract class WorkloadCommandDefinitionBase(string name, string description)
    : Command(name, description)
{
    public virtual Option<bool>? SkipSignCheckOption => null;
    public virtual Option<string>? TempDirOption => null;
    public virtual Option<Utils.VerbosityOptions>? VerbosityOption => null;
    public virtual NuGetRestoreOptions? RestoreOptions => null;

    public static Option<string> CreateSdkVersionOption() => new("--sdk-version")
    {
        Description = CommandDefinitionStrings.WorkloadInstallVersionOptionDescription,
        HelpName = CommandDefinitionStrings.WorkloadInstallVersionOptionName,
        Hidden = true
    };

    public static Argument<IEnumerable<string>> CreateWorkloadIdArgument() => new("workloadId")
    {
        HelpName = CommandDefinitionStrings.WorkloadIdArgumentName,
        Arity = ArgumentArity.OneOrMore,
        Description = CommandDefinitionStrings.WorkloadIdArgumentDescription
    };

    public static Option<string> CreateConfigOption() => new("--configfile")
    {
        Description = CommandDefinitionStrings.WorkloadInstallConfigFileOptionDescription,
        HelpName = CommandDefinitionStrings.WorkloadInstallConfigFileOptionName
    };

    public static Option<string[]> CreateSourceOption() => new Option<string[]>("--source", "-s")
    {
        Description = CommandDefinitionStrings.WorkloadInstallSourceOptionDescription,
        HelpName = CommandDefinitionStrings.WorkloadInstallSourceOptionName
    }.AllowSingleArgPerToken();

    public static Option<bool> CreateSkipSignCheckOption() => new("--skip-sign-check")
    {
        Description = CommandDefinitionStrings.SkipSignCheckOptionDescription,
        Hidden = true,
        Arity = ArgumentArity.Zero
    };

    public static Option<string> CreateTempDirOption() => new("--temp-dir")
    {
        Description = CommandDefinitionStrings.TempDirOptionDescription
    };

    public const string SkipManifestUpdateOptionName = "--skip-manifest-update";

    public static Option<bool> CreateSkipManifestUpdateOption() => new(SkipManifestUpdateOptionName)
    {
        Description = CommandDefinitionStrings.SkipManifestUpdateOptionDescription,
        Arity = ArgumentArity.Zero
    };
}