public override void ExecuteCommand() { if (Settings == null) { throw new InvalidOperationException(LocalizedResourceManager.GetString("Error_SettingsIsNull")); } var getKey = Arguments.FirstOrDefault(); if (Set.Any()) { foreach (var property in Set) { if (string.IsNullOrEmpty(property.Value)) { SettingsUtility.DeleteConfigValue(Settings, property.Key); } else { // Hack: Need a nicer way for the user to say encrypt this. var encrypt = HttpPasswordKey.Equals(property.Key, StringComparison.OrdinalIgnoreCase); SettingsUtility.SetConfigValue(Settings, property.Key, property.Value, encrypt); } } } else if (!string.IsNullOrEmpty(getKey)) { var value = SettingsUtility.GetConfigValue(Settings, getKey, isPath: AsPath); if (string.IsNullOrEmpty(value)) { Console.WriteError(LocalizedResourceManager.GetString("ConfigCommandKeyNotFound"), getKey); } else { Console.WriteLine(value); } } }
public static int MainCore(string workingDirectory, string[] args) { // First, optionally disable localization in resources. if (args.Any(arg => string.Equals(arg, ForceEnglishOutputOption, StringComparison.OrdinalIgnoreCase))) { CultureUtility.DisableLocalization(); } // set output encoding to UTF8 if -utf8 is specified var oldOutputEncoding = System.Console.OutputEncoding; if (args.Any(arg => string.Equals(arg, Utf8Option, StringComparison.OrdinalIgnoreCase))) { args = args.Where(arg => !string.Equals(arg, Utf8Option, StringComparison.OrdinalIgnoreCase)).ToArray(); SetConsoleOutputEncoding(Encoding.UTF8); } // Increase the maximum number of connections per server. if (!RuntimeEnvironmentHelper.IsMono) { ServicePointManager.DefaultConnectionLimit = 64; } else { // Keep mono limited to a single download to avoid issues. ServicePointManager.DefaultConnectionLimit = 1; } var console = new Console(); var fileSystem = new CoreV2.NuGet.PhysicalFileSystem(workingDirectory); try { // Remove NuGet.exe.old RemoveOldFile(fileSystem); // Import Dependencies var p = new Program(); p.Initialize(fileSystem, console); // Add commands to the manager foreach (var cmd in p.Commands) { p.Manager.RegisterCommand(cmd); } var parser = new CommandLineParser(p.Manager); // Parse the command var command = parser.ParseCommandLine(args) ?? p.HelpCommand; command.CurrentDirectory = workingDirectory; if (command is Command commandImpl) { console.Verbosity = commandImpl.Verbosity; } // Fallback on the help command if we failed to parse a valid command if (!ArgumentCountValid(command)) { // Get the command name and add it to the argument list of the help command var commandName = command.CommandAttribute.CommandName; // Print invalid arguments command error message in stderr console.WriteError(LocalizedResourceManager.GetString("InvalidArguments"), commandName); // then show help p.HelpCommand.ViewHelpForCommand(commandName); return(1); } else { SetConsoleInteractivity(console, command as Command); try { command.Execute(); } catch (CommandLineArgumentCombinationException e) { var commandName = command.CommandAttribute.CommandName; console.WriteLine($"{string.Format(CultureInfo.CurrentCulture, LocalizedResourceManager.GetString("InvalidArguments"), commandName)} {e.Message}"); p.HelpCommand.ViewHelpForCommand(commandName); return(1); } } } catch (AggregateException exception) { var unwrappedEx = ExceptionUtility.Unwrap(exception); LogException(unwrappedEx, console); return(1); } catch (ExitCodeException e) { return(e.ExitCode); } catch (PathTooLongException e) { LogException(e, console); if (RuntimeEnvironmentHelper.IsWindows) { LogHelperMessageForPathTooLongException(console); } return(1); } catch (Exception exception) { LogException(exception, console); return(1); } finally { CoreV2.NuGet.OptimizedZipPackage.PurgeCache(); SetConsoleOutputEncoding(oldOutputEncoding); } return(0); }
public static int MainCore(string workingDirectory, string[] args) { // First, optionally disable localization in resources. if (args.Any(arg => string.Equals(arg, ForceEnglishOutputOption, StringComparison.OrdinalIgnoreCase))) { CultureUtility.DisableLocalization(); } // set output encoding to UTF8 if -utf8 is specified var oldOutputEncoding = System.Console.OutputEncoding; if (args.Any(arg => string.Equals(arg, Utf8Option, StringComparison.OrdinalIgnoreCase))) { args = args.Where(arg => !string.Equals(arg, Utf8Option, StringComparison.OrdinalIgnoreCase)).ToArray(); SetConsoleOutputEncoding(Encoding.UTF8); } // Increase the maximum number of connections per server. if (!RuntimeEnvironmentHelper.IsMono) { ServicePointManager.DefaultConnectionLimit = 64; } else { // Keep mono limited to a single download to avoid issues. ServicePointManager.DefaultConnectionLimit = 1; } NetworkProtocolUtility.ConfigureSupportedSslProtocols(); var console = new Console(); var fileSystem = new CoreV2.NuGet.PhysicalFileSystem(workingDirectory); Func <Exception, string> getErrorMessage = ExceptionUtilities.DisplayMessage; try { // Remove NuGet.exe.old RemoveOldFile(fileSystem); // Import Dependencies var p = new Program(); p.Initialize(fileSystem, console); // Add commands to the manager foreach (ICommand cmd in p.Commands) { p.Manager.RegisterCommand(cmd); } CommandLineParser parser = new CommandLineParser(p.Manager); // Parse the command ICommand command = parser.ParseCommandLine(args) ?? p.HelpCommand; command.CurrentDirectory = workingDirectory; // Fallback on the help command if we failed to parse a valid command if (!ArgumentCountValid(command)) { // Get the command name and add it to the argument list of the help command string commandName = command.CommandAttribute.CommandName; // Print invalid command then show help console.WriteLine(LocalizedResourceManager.GetString("InvalidArguments"), commandName); p.HelpCommand.ViewHelpForCommand(commandName); } else { SetConsoleInteractivity(console, command as Command); // When we're detailed, get the whole exception including the stack // This is useful for debugging errors. if (console.Verbosity == Verbosity.Detailed || ExceptionLogger.Instance.ShowStack) { getErrorMessage = e => e.ToString(); } command.Execute(); } } catch (AggregateException exception) { Exception unwrappedEx = ExceptionUtility.Unwrap(exception); if (unwrappedEx is ExitCodeException) { // Return the exit code without writing out the exception type var exitCodeEx = unwrappedEx as ExitCodeException; return(exitCodeEx.ExitCode); } console.WriteError(getErrorMessage(exception)); return(1); } catch (Exception exception) { console.WriteError(getErrorMessage(exception)); return(1); } finally { CoreV2.NuGet.OptimizedZipPackage.PurgeCache(); SetConsoleOutputEncoding(oldOutputEncoding); } return(0); }