File: ProjectOptions.cs
Web Access
Project: src\src\Tools\dotnet-getdocument\src\dotnet-getdocument.csproj (dotnet-getdocument)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.Extensions.CommandLineUtils;
 
namespace Microsoft.Extensions.ApiDescription.Tool;
 
internal sealed class ProjectOptions
{
    public CommandOption AssemblyPath { get; private set; }
 
    public CommandOption AssetsFile { get; private set; }
 
    public CommandOption Platform { get; private set; }
 
    public CommandOption ProjectName { get; private set; }
 
    public CommandOption RuntimeFrameworkVersion { get; private set; }
 
    public CommandOption TargetFramework { get; private set; }
 
    public void Configure(CommandLineApplication command)
    {
        AssemblyPath = command.Option("--assembly <Path>", Resources.AssemblyDescription);
        AssetsFile = command.Option("--assets-file <Path>", Resources.AssetsFileDescription);
        TargetFramework = command.Option("--framework <FRAMEWORK>", Resources.TargetFrameworkDescription);
        Platform = command.Option("--platform <Target>", Resources.PlatformDescription);
        ProjectName = command.Option("--project <Name>", Resources.ProjectDescription);
        RuntimeFrameworkVersion = command.Option("--runtime <RUNTIME_IDENTIFIER>", Resources.RuntimeDescription);
    }
 
    public void Validate()
    {
        if (!AssemblyPath.HasValue())
        {
            throw new CommandException(Resources.FormatMissingOption(AssemblyPath.LongName));
        }
 
        if (!ProjectName.HasValue())
        {
            throw new CommandException(Resources.FormatMissingOption(ProjectName.LongName));
        }
 
        if (!TargetFramework.HasValue())
        {
            throw new CommandException(Resources.FormatMissingOption(TargetFramework.LongName));
        }
    }
}