// Copyright (c) .NET Foundation and contributors. All rights reserved. // Licensed under the MIT license. See LICENSE file in the project root for full license information. using System.Collections.Generic; using System.Linq; using Microsoft.DotNet.Cli.CommandLine; using LocalizableStrings = Microsoft.DotNet.Tools.List.PackageReferences.LocalizableStrings; namespace Microsoft.DotNet.Cli { internal static class ListPackageReferencesCommandParser { public static Command ListPackageReferences() => Create.Command( "package", LocalizableStrings.AppFullName, Accept.NoArguments(), CommonOptions.HelpOption(), Create.Option("--outdated", LocalizableStrings.CmdOutdatedDescription, Accept.NoArguments().ForwardAs("--outdated")), Create.Option("--framework", LocalizableStrings.CmdFrameworkDescription, Accept.OneOrMoreArguments() .With(name: LocalizableStrings.CmdFramework) .ForwardAsMany(o => ForwardedArguments("--framework", o.Arguments))), Create.Option("--include-transitive", LocalizableStrings.CmdTransitiveDescription, Accept.NoArguments().ForwardAs("--include-transitive")), Create.Option("--include-prerelease", LocalizableStrings.CmdPrereleaseDescription, Accept.NoArguments().ForwardAs("--include-prerelease")), Create.Option("--highest-patch", LocalizableStrings.CmdHighestPatchDescription, Accept.NoArguments().ForwardAs("--highest-patch")), Create.Option("--highest-minor", LocalizableStrings.CmdHighestMinorDescription, Accept.NoArguments().ForwardAs("--highest-minor")), Create.Option("--config", LocalizableStrings.CmdConfigDescription, Accept.ExactlyOneArgument() .With(name: LocalizableStrings.CmdConfig) .ForwardAsMany(o => new [] { "--config", o.Arguments.Single() })), Create.Option("--source", LocalizableStrings.CmdSourceDescription, Accept.OneOrMoreArguments() .With(name: LocalizableStrings.CmdSource) .ForwardAsMany(o => ForwardedArguments("--source", o.Arguments)))); private static IEnumerable ForwardedArguments(string token, IEnumerable arguments) { foreach (var arg in arguments) { yield return token; yield return arg; } } } }