File: Commands\Project\ProjectConvertCommandDefinition.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.Project.Convert;

internal sealed class ProjectConvertCommandDefinition : Command
{
    public readonly Argument<string> FileArgument = new("file")
    {
        Description = CommandDefinitionStrings.CmdFileDescription,
        Arity = ArgumentArity.ExactlyOne,
    };

    public readonly Option<FileInfo> OutputOption = new("--output", "-o")
    {
        Description = CommandDefinitionStrings.Option_Output,
        Required = false,
        Arity = new ArgumentArity(1, 1)
    };

    public readonly Option<bool> ForceOption = new("--force")
    {
        Description = CommandDefinitionStrings.CmdOptionForceDescription,
        Arity = ArgumentArity.Zero,
    };

    public readonly Option<bool> InteractiveOption = CommonOptions.CreateInteractiveOption(acceptArgument: true);

    public readonly Option<bool> DryRunOption = new("--dry-run")
    {
        Description = CommandDefinitionStrings.ProjectConvertDryRun,
        Arity = ArgumentArity.Zero,
    };

    public readonly Option<bool> DeleteSourceOption = new("--delete-source")
    {
        Description = CommandDefinitionStrings.ProjectConvertDeleteSource,
        Arity = ArgumentArity.Zero,
    };

    public ProjectConvertCommandDefinition()
        : base("convert", CommandDefinitionStrings.ProjectConvertAppFullName)
    {
        Arguments.Add(FileArgument);
        Options.Add(OutputOption);
        Options.Add(ForceOption);
        Options.Add(InteractiveOption);
        Options.Add(DryRunOption);
        Options.Add(DeleteSourceOption);
    }
}