| File: Commands\Pack\PackCommandDefinition.cs | Web Access |
| Project: 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; using Microsoft.DotNet.Cli.Commands.Build; using Microsoft.DotNet.Cli.Commands.Restore; using NuGet.Versioning; namespace Microsoft.DotNet.Cli.Commands.Pack; internal sealed class PackCommandDefinition : Command { private const string Link = "https://aka.ms/dotnet-pack"; public readonly Argument<string[]> SlnOrProjectOrFileArgument = new(CommandDefinitionStrings.SolutionOrProjectOrFileArgumentName) { Description = CommandDefinitionStrings.SolutionOrProjectOrFileArgumentDescription, Arity = ArgumentArity.ZeroOrMore }; public readonly ImplicitRestoreOptions ImplicitRestoreOptions = new(showHelp: false, useShortOptions: false); public readonly Option<string> OutputOption = new Option<string>("--output", "-o") { Description = CommandDefinitionStrings.PackCmdOutputDirDescription, HelpName = CommandDefinitionStrings.PackCmdOutputDir }.ForwardAsSingle(o => $"-property:PackageOutputPath={CommandDirectoryContext.GetFullPath(o)}"); public readonly Option<bool> NoBuildOption = new Option<bool>("--no-build") { Description = CommandDefinitionStrings.CmdNoBuildOptionDescription, Arity = ArgumentArity.Zero }.ForwardAs("-property:NoBuild=true"); public readonly Option<bool> IncludeSymbolsOption = new Option<bool>("--include-symbols") { Description = CommandDefinitionStrings.CmdIncludeSymbolsDescription, Arity = ArgumentArity.Zero }.ForwardAs("-property:IncludeSymbols=true"); public readonly Option<bool> IncludeSourceOption = new Option<bool>("--include-source") { Description = CommandDefinitionStrings.CmdIncludeSourceDescription, Arity = ArgumentArity.Zero }.ForwardAs("-property:IncludeSource=true"); public readonly Option<bool> ServiceableOption = new Option<bool>("--serviceable", "-s") { Description = CommandDefinitionStrings.CmdServiceableDescription, Arity = ArgumentArity.Zero }.ForwardAs("-property:Serviceable=true"); public readonly Option<bool> NoLogoOption = CommonOptions.CreateNoLogoOption(); public readonly Option<bool> NoRestoreOption = CommonOptions.CreateNoRestoreOption(); public readonly Option<string?> ConfigurationOption = CommonOptions.CreateConfigurationOption(CommandDefinitionStrings.PackConfigurationOptionDescription); public readonly Option<string[]> TargetOption = CreateTargetOption(); public readonly Option<Utils.VerbosityOptions?> VerbosityOption = CommonOptions.CreateVerbosityOption(); public readonly Option<string> ArtifactsPathOption = CommonOptions.CreateArtifactsPathOption(); public readonly Option<bool> InteractiveOption = CommonOptions.CreateInteractiveMsBuildForwardOption(); public readonly Option<string> VersionSuffixOption = CommonOptions.CreateVersionSuffixOption(); public readonly Option<bool> DisableBuildServersOption = CommonOptions.CreateDisableBuildServersOption(); public readonly Option<string[]?> GetPropertyOption = CommonOptions.CreateGetPropertyOption(); public readonly Option<string[]?> GetItemOption = CommonOptions.CreateGetItemOption(); public readonly Option<string[]?> GetTargetResultOption = CommonOptions.CreateGetTargetResultOption(); public readonly Option<string[]?> GetResultOutputFileOption = CommonOptions.CreateGetResultOutputFileOption(); public readonly Option<bool> NoDependenciesOption = RestoreCommandDefinition.CreateNoDependenciesOption(showHelp: false); public readonly Option<string> RuntimeOption = TargetPlatformOptions.CreateRuntimeOption(CommandDefinitionStrings.BuildRuntimeOptionDescription); public readonly Option<NuGetVersion> VersionOption = new Option<NuGetVersion>("--version") { Description = CommandDefinitionStrings.PackCmdVersionDescription, HelpName = CommandDefinitionStrings.PackCmdVersion, Arity = ArgumentArity.ExactlyOne, CustomParser = r => { if (r.Tokens.Count == 0) return null; var value = r.Tokens[0].Value; if (NuGetVersion.TryParse(value, out var version)) return version; r.AddError(string.Format(CommandDefinitionStrings.InvalidVersion, value)); return null; } }.ForwardAsSingle(o => $"--property:PackageVersion={o}"); public PackCommandDefinition() : base("pack", CommandDefinitionStrings.PackAppFullName) { this.DocsLink = Link; Arguments.Add(SlnOrProjectOrFileArgument); Options.Add(OutputOption); Options.Add(ArtifactsPathOption); Options.Add(NoBuildOption); Options.Add(IncludeSymbolsOption); Options.Add(IncludeSourceOption); Options.Add(ServiceableOption); Options.Add(NoLogoOption); Options.Add(InteractiveOption); Options.Add(NoRestoreOption); Options.Add(VerbosityOption); Options.Add(VersionSuffixOption); Options.Add(VersionOption); Options.Add(ConfigurationOption); Options.Add(DisableBuildServersOption); Options.Add(TargetOption); Options.Add(GetPropertyOption); Options.Add(GetItemOption); Options.Add(GetTargetResultOption); Options.Add(GetResultOutputFileOption); ImplicitRestoreOptions.AddTo(Options); Options.Add(NoDependenciesOption); Options.Add(RuntimeOption); } public static Option<string[]> CreateTargetOption() => CommonOptions.CreateRequiredMSBuildTargetOption("Pack", [("_IsPacking", "true")]); }