// ***************************************************************************************************************************
// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *
// * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *
// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *
// * with the License.  You may obtain a copy of the License at                                                              * 
// *                                                                                                                         *
// *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *
// *                                                                                                                         *
// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *
// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
// * specific language governing permissions and limitations under the License.                                              *
// ***************************************************************************************************************************

ExitCommand.info = Shut down service
ExitCommand.description = Immediately shuts down the microservice and then the JVM.

RestartCommand.info = Restarts service
RestartCommand.description = Immediately shuts down and then restarts the microservice without restarting the JVM.

HelpCommand.info = Commands help
HelpCommand.description = \
	When called without arguments, prints the descriptions of all available commands.\n\
	Can also be called with one or more arguments to get detailed information on a command.
HelpCommand.examples = \
	List all commands:\n\
	\t> help\n\
	\n\
	List help on the help command:\n\
	\t> help help\n	
HelpCommand.ListOfAvailableCommands = List of available commands:
HelpCommand.NAME = NAME
HelpCommand.SYNOPSIS = SYNOPSIS
HelpCommand.DESCRIPTION = DESCRIPTION
HelpCommand.EXAMPLES = EXAMPLES
HelpCommand.CommandNotFound = Command not found.
ConfigCommand.info = Get or set configuration
ConfigCommand.description = Get configuration value for given key and set (Restart required) for given key and value 
ConfigCommand.InvalidArguments = Invalid or missing arguments for config command
ConfigCommand.TooManyArguments = Too many arguments for config command
ConfigCommand.KeyNotFound = key ''{0}'' is not found in current configuration
ConfigCommand.ConfigSet = Configuration updated.
ConfigCommand.ConfigRemove = key ''{0}'' was removed.
