| File: Commands\ConfigCommands\ConfigCommand.cs | Web Access |
| Project: src\nuget-client\src\NuGet.Core\NuGet.CommandLine.XPlat\NuGet.CommandLine.XPlat.csproj (NuGet.CommandLine.XPlat) |
// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. #nullable enable using System; using System.CommandLine; using System.Threading.Tasks; using NuGet.CommandLine.XPlat.Commands; using NuGet.Common; namespace NuGet.CommandLine.XPlat { internal class ConfigCommand { internal static void LogException(Exception e, ILogger log) { // Log the error if (ExceptionLogger.Instance.ShowStack) { log.LogError(e.ToString()); } else { log.LogError(ExceptionUtilities.DisplayMessage(e)); } // Log the stack trace as verbose output. log.LogVerbose(e.ToString()); } internal static Command Register(Command app, Func<ILoggerWithColor> getLogger) { var ConfigCmd = new DocumentedCommand(name: "config", description: Strings.Config_Description, "https://aka.ms/dotnet/nuget/config"); // Options directly under the verb 'config' // noun sub-command: config paths var PathsCmd = new DocumentedCommand(name: "paths", description: Strings.ConfigPathsCommandDescription, "https://aka.ms/dotnet/nuget/config/paths"); // Options under sub-command: config paths RegisterOptionsForCommandConfigPaths(PathsCmd, getLogger); ConfigCmd.Subcommands.Add(PathsCmd); // noun sub-command: config get var GetCmd = new DocumentedCommand(name: "get", description: Strings.ConfigGetCommandDescription, "https://aka.ms/dotnet/nuget/config/get"); // Options under sub-command: config get RegisterOptionsForCommandConfigGet(GetCmd, getLogger); ConfigCmd.Subcommands.Add(GetCmd); // noun sub-command: config set var SetCmd = new DocumentedCommand(name: "set", description: Strings.ConfigSetCommandDescription, "https://aka.ms/dotnet/nuget/config/set"); // Options under sub-command: config set RegisterOptionsForCommandConfigSet(SetCmd, getLogger); ConfigCmd.Subcommands.Add(SetCmd); // noun sub-command: config unset var UnsetCmd = new DocumentedCommand(name: "unset", description: Strings.ConfigUnsetCommandDescription, "https://aka.ms/dotnet/nuget/config/unset"); // Options under sub-command: config unset RegisterOptionsForCommandConfigUnset(UnsetCmd, getLogger); ConfigCmd.Subcommands.Add(UnsetCmd); app.Subcommands.Add(ConfigCmd); return ConfigCmd; } // End noun method private static void RegisterOptionsForCommandConfigPaths(Command cmd, Func<ILogger> getLogger) { var workingDirectory = new Option<string>(name: "--working-directory") { Arity = ArgumentArity.ZeroOrOne, Description = Strings.ConfigPathsWorkingDirectoryDescription }; cmd.Options.Add(workingDirectory); // Create handler delegate handler for cmd cmd.SetAction((parseResult, cancellationToken) => { var args = new ConfigPathsArgs() { WorkingDirectory = parseResult.GetValue(workingDirectory), }; int exitCode = ConfigPathsRunner.Run(args, getLogger); return Task.FromResult(exitCode); }); } private static void RegisterOptionsForCommandConfigGet(Command cmd, Func<ILogger> getLogger) { var allOrConfigKeyArgument = new Argument<string>(name: "all-or-config-key") { Arity = ArgumentArity.ExactlyOne, Description = Strings.ConfigGetAllOrConfigKeyDescription }; var workingDirectory = new Option<string>(name: "--working-directory") { Arity = ArgumentArity.ZeroOrOne, Description = Strings.ConfigPathsWorkingDirectoryDescription }; var showPathOption = new Option<bool>(name: "--show-path") { Arity = ArgumentArity.Zero, Description = Strings.ConfigGetShowPathDescription, }; cmd.Arguments.Add(allOrConfigKeyArgument); cmd.Options.Add(workingDirectory); cmd.Options.Add(showPathOption); // Create handler delegate handler for cmd cmd.SetAction((parseResult, cancellationToken) => { var args = new ConfigGetArgs() { AllOrConfigKey = parseResult.GetValue(allOrConfigKeyArgument), WorkingDirectory = parseResult.GetValue(workingDirectory), ShowPath = parseResult.GetValue(showPathOption), }; int exitCode = ConfigGetRunner.Run(args, getLogger); return Task.FromResult(exitCode); }); } private static void RegisterOptionsForCommandConfigSet(Command cmd, Func<ILogger> getLogger) { var setConfigKeyArgument = new Argument<string>(name: "config-key") { Arity = ArgumentArity.ExactlyOne, Description = Strings.ConfigSetConfigKeyDescription, }; var configValueArgument = new Argument<string>(name: "config-value") { Arity = ArgumentArity.ExactlyOne, Description = Strings.ConfigSetConfigValueDescription, }; var configFileOption = new Option<string>(name: "--configfile") { Arity = ArgumentArity.ZeroOrOne, Description = Strings.Option_ConfigFile, }; cmd.Arguments.Add(setConfigKeyArgument); cmd.Arguments.Add(configValueArgument); cmd.Options.Add(configFileOption); // Create handler delegate handler for cmd cmd.SetAction((parseResult, cancellationToken) => { var args = new ConfigSetArgs() { ConfigKey = parseResult.GetValue(setConfigKeyArgument), ConfigValue = parseResult.GetValue(configValueArgument), ConfigFile = parseResult.GetValue(configFileOption), }; int exitCode = ConfigSetRunner.Run(args, getLogger); return Task.FromResult(exitCode); }); } private static void RegisterOptionsForCommandConfigUnset(Command cmd, Func<ILogger> getLogger) { var unsetConfigKeyArgument = new Argument<string>(name: "config-key") { Arity = ArgumentArity.ExactlyOne, Description = Strings.ConfigUnsetConfigKeyDescription, }; var configFileOption = new Option<string>(name: "--configfile") { Arity = ArgumentArity.ZeroOrOne, Description = Strings.Option_ConfigFile, }; cmd.Arguments.Add(unsetConfigKeyArgument); cmd.Options.Add(configFileOption); // Create handler delegate handler for cmd cmd.SetAction((parseResult, cancellationToken) => { var args = new ConfigUnsetArgs() { ConfigKey = parseResult.GetValue(unsetConfigKeyArgument), ConfigFile = parseResult.GetValue(configFileOption), }; int exitCode = ConfigUnsetRunner.Run(args, getLogger); return Task.FromResult(exitCode); }); } } }