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 <vppinfra/cpu.h>
#include <vpp/app/version.h> #include <vpp/app/version.h>
/* N.B. Variable is not static to ensure it's visible in core dumps, i.e., /** \file
* it doesn't go to rodata segment */ 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 = char *vpe_version_string =
"vpp v" VPP_BUILD_VER "vpp v" VPP_BUILD_VER
" built by " VPP_BUILD_USER " on " VPP_BUILD_HOST " at " VPP_BUILD_DATE; " built by " VPP_BUILD_USER " on " VPP_BUILD_HOST " at " VPP_BUILD_DATE;
/** The name of the compiler */
static char *vpe_compiler = static char *vpe_compiler =
#if defined(__INTEL_COMPILER) #if defined(__INTEL_COMPILER)
#define __(x) #x #define __(x) #x
@ -37,12 +48,30 @@ static char *vpe_compiler =
"unknown compiler"; "unknown compiler";
#endif #endif
/** \brief Display image version info, a debug CLI command function
*/
static clib_error_t * static clib_error_t *
show_vpe_version_command_fn (vlib_main_t * vm, show_vpe_version_command_fn (vlib_main_t * vm,
unformat_input_t * input, unformat_input_t * input,
vlib_cli_command_t * cmd) 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); #define _(a,b,c) vlib_cli_output (vm, "%-25s " b, a ":", c);
_("Version", "%s", "v" VPP_BUILD_VER); _("Version", "%s", "v" VPP_BUILD_VER);
@ -54,31 +83,79 @@ show_vpe_version_command_fn (vlib_main_t * vm,
_("Current PID", "%d", getpid ()); _("Current PID", "%d", getpid ());
#undef _ #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); vlib_cli_output (vm, "%s", vpe_version_string);
return 0; 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* */ /* *INDENT-OFF* */
VLIB_CLI_COMMAND (show_vpe_version_command, static) = { VLIB_CLI_COMMAND (show_vpe_version_command, static) = {
.path = "show version", .path = "show version",
.short_help = "show version information", .short_help = "show version [verbose] [cmdline]",
.function = show_vpe_version_command_fn, .function = show_vpe_version_command_fn,
}; };
/* *INDENT-ON* */ /* *INDENT-ON* */
/** Return the image build directory name */
char * char *
vpe_api_get_build_directory (void) vpe_api_get_build_directory (void)
{ {
return VPP_BUILD_TOPDIR; return VPP_BUILD_TOPDIR;
} }
/** Return the image version string */
char * char *
vpe_api_get_version (void) vpe_api_get_version (void)
{ {
return VPP_BUILD_VER; return VPP_BUILD_VER;
} }
/** return the build date */
char * char *
vpe_api_get_build_date (void) vpe_api_get_build_date (void)
{ {