Improve the "show version" command

Add "show version cmdline" to display the command line
Add doxygen tags to the source code

Change-Id: I0205b373062fd88f176d9c8086d89d7784a5172f
Signed-off-by: Dave Barach <dave@barachs.net>
This commit is contained in:
Dave Barach
2018-07-13 09:59:45 -04:00
committed by Florin Coras
parent a8d476468d
commit 9779197f02

View File

@ -16,12 +16,23 @@
#include <vppinfra/cpu.h>
#include <vpp/app/version.h>
/* N.B. Variable is not static to ensure it's visible in core dumps, i.e.,
* it doesn't go to rodata segment */
/** \file
Display image version information
*/
/*? %%clicmd:group_label Image Version Information %% ?*/
/*
* Version variables are static to ensure that they're visible in core
* dumps, i.e., not in the rodata segment
*/
/** The image version string */
char *vpe_version_string =
"vpp v" VPP_BUILD_VER
" built by " VPP_BUILD_USER " on " VPP_BUILD_HOST " at " VPP_BUILD_DATE;
/** The name of the compiler */
static char *vpe_compiler =
#if defined(__INTEL_COMPILER)
#define __(x) #x
@ -37,12 +48,30 @@ static char *vpe_compiler =
"unknown compiler";
#endif
/** \brief Display image version info, a debug CLI command function
*/
static clib_error_t *
show_vpe_version_command_fn (vlib_main_t * vm,
unformat_input_t * input,
vlib_cli_command_t * cmd)
{
if (unformat (input, "verbose"))
int i;
int verbose = 0;
int cmdline = 0;
int indent = 2;
char **argv = (char **) vm->argv;
while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
{
if (unformat (input, "verbose %=", &verbose, 1))
;
else if (unformat (input, "cmdline %=", &cmdline, 1))
;
else
break;
}
if (verbose)
{
#define _(a,b,c) vlib_cli_output (vm, "%-25s " b, a ":", c);
_("Version", "%s", "v" VPP_BUILD_VER);
@ -54,31 +83,79 @@ show_vpe_version_command_fn (vlib_main_t * vm,
_("Current PID", "%d", getpid ());
#undef _
}
else
if (cmdline)
{
vlib_cli_output (vm, "%-25s", "Command line arguments:");
for (i = 0; argv[i]; i++)
{
if (strstr (argv[i], "{"))
indent += 2;
vlib_cli_output (vm, "%U%s", format_white_space, indent, argv[i]);
if (strstr (argv[i], "}"))
indent -= 2;
}
}
if ((verbose + cmdline) == 0)
vlib_cli_output (vm, "%s", vpe_version_string);
return 0;
}
/*?
* This commmand displays image version and command line arguments
*
* @cliexpar
* How to display the image version string:
* @cliexstart{show version}
* vpp v18.07-rc0~509-gb9124828 built by vppuser on vppbuild at date
* @cliexend
*
* @cliexpar
* How to display verbose image version information:
* @cliexstart{show version verbose}
* Version: v18.07-rc0~509-gb9124828
* Compiled by: vppuser
* Compile host: vppbuild
* Compile date: Fri Jul 13 09:05:37 EDT 2018
* Compile location: /scratch/vpp-showversion
* Compiler: GCC 7.3.0
* Current PID: 5334
* @cliexend
*
* @cliexpar
* How to display the vpp command line arguments:
* @cliexstart{show version cmdline}
* vpp# show version cmdline
* Command line arguments:
* /scratch/vpp-showversion/build-root/install-vpp_debug-native/vpp/bin/vpp
* unix
* interactive
* @cliexend
?*/
/* *INDENT-OFF* */
VLIB_CLI_COMMAND (show_vpe_version_command, static) = {
.path = "show version",
.short_help = "show version information",
.short_help = "show version [verbose] [cmdline]",
.function = show_vpe_version_command_fn,
};
/* *INDENT-ON* */
/** Return the image build directory name */
char *
vpe_api_get_build_directory (void)
{
return VPP_BUILD_TOPDIR;
}
/** Return the image version string */
char *
vpe_api_get_version (void)
{
return VPP_BUILD_VER;
}
/** return the build date */
char *
vpe_api_get_build_date (void)
{