mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-29 04:30:09 +01:00
nmcli: add overview option to skip default values in output
Add a new 'overview' command line option to make the output more compact and display only properties that have non-default values. Currently the option has only effect for the "connection show $CON" sub-command. $ nmcli -o connection show wifi-home connection.id: wifi-home connection.uuid: 8308c425-f2a7-4021-9afc-37bde7253c6d connection.type: 802-11-wireless connection.timestamp: 1519264421 connection.permissions: user:me 802-11-wireless.ssid: home 802-11-wireless.mode: infrastructure 802-11-wireless-security.key-mgmt: wpa-psk 802-11-wireless-security.auth-alg: open ipv4.method: auto ipv6.method: auto https://bugzilla.redhat.com/show_bug.cgi?id=1434527
This commit is contained in:
parent
50414353e1
commit
9a19bbcb2f
3 changed files with 24 additions and 6 deletions
|
|
@ -184,6 +184,7 @@ usage (void)
|
|||
g_printerr (_("Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }\n"
|
||||
"\n"
|
||||
"OPTIONS\n"
|
||||
" -o[verview] overview mode (hide default values)\n"
|
||||
" -t[erse] terse output\n"
|
||||
" -p[retty] pretty output\n"
|
||||
" -m[ode] tabular|multiline output mode\n"
|
||||
|
|
@ -295,9 +296,10 @@ process_command_line (NmCli *nmc, int argc, char **argv)
|
|||
break;
|
||||
|
||||
if (argc == 1 && nmc->complete) {
|
||||
nmc_complete_strings (argv[0], "--terse", "--pretty", "--mode", "--colors", "--escape",
|
||||
"--fields", "--nocheck", "--get-values",
|
||||
"--wait", "--version", "--help", NULL);
|
||||
nmc_complete_strings (argv[0], "--terse", "--pretty", "--mode", "--overview",
|
||||
"--colors", "--escape",
|
||||
"--fields", "--nocheck", "--get-values",
|
||||
"--wait", "--version", "--help", NULL);
|
||||
}
|
||||
|
||||
if (argv[0][1] == '-' && argv[0][2] == '\0') {
|
||||
|
|
@ -306,7 +308,9 @@ process_command_line (NmCli *nmc, int argc, char **argv)
|
|||
break;
|
||||
}
|
||||
|
||||
if (matches_arg (nmc, &argc, &argv, "-terse", NULL)) {
|
||||
if (matches_arg (nmc, &argc, &argv, "-overview", NULL)) {
|
||||
nmc->nmc_config_mutable.overview = TRUE;
|
||||
} else if (matches_arg (nmc, &argc, &argv, "-terse", NULL)) {
|
||||
if (nmc->nmc_config.print_output == NMC_PRINT_TERSE) {
|
||||
g_string_printf (nmc->return_text, _("Error: Option '--terse' is specified the second time."));
|
||||
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
|
||||
|
|
@ -415,6 +419,10 @@ process_command_line (NmCli *nmc, int argc, char **argv)
|
|||
next_arg (nmc, &argc, &argv, NULL);
|
||||
}
|
||||
|
||||
/* Ignore --overview when fields are set explicitly */
|
||||
if (nmc->required_fields)
|
||||
nmc->nmc_config_mutable.overview = FALSE;
|
||||
|
||||
/* Now run the requested command */
|
||||
nmc_do_cmd (nmc, nmcli_cmds, *argv, argc, argv);
|
||||
|
||||
|
|
|
|||
|
|
@ -116,6 +116,7 @@ typedef struct _NmcConfig {
|
|||
bool escape_values; /* Whether to escape ':' and '\' in terse tabular mode */
|
||||
bool in_editor; /* Whether running the editor - nmcli con edit' */
|
||||
bool show_secrets; /* Whether to display secrets (both input and output): option '--show-secrets' */
|
||||
bool overview; /* Overview mode (hide default values) */
|
||||
} NmcConfig;
|
||||
|
||||
typedef struct _NmcOutputData {
|
||||
|
|
|
|||
|
|
@ -1004,6 +1004,7 @@ typedef struct {
|
|||
const PrintDataCol *col;
|
||||
const char *title;
|
||||
bool title_to_free:1;
|
||||
bool skip:1;
|
||||
int width;
|
||||
} PrintDataHeaderCell;
|
||||
|
||||
|
|
@ -1102,6 +1103,7 @@ _print_fill (const NmcConfig *nmc_config,
|
|||
|
||||
header_cell->col_idx = col_idx;
|
||||
header_cell->col = col;
|
||||
header_cell->skip = FALSE;
|
||||
|
||||
header_cell->title = nm_meta_abstract_info_get_name (info, TRUE);
|
||||
if ( nmc_config->multiline_output
|
||||
|
|
@ -1136,10 +1138,11 @@ _print_fill (const NmcConfig *nmc_config,
|
|||
for (i_col = 0; i_col < header_row->len; i_col++) {
|
||||
char *to_free = NULL;
|
||||
PrintDataCell *cell = &cells_line[i_col];
|
||||
const PrintDataHeaderCell *header_cell;
|
||||
PrintDataHeaderCell *header_cell;
|
||||
const NMMetaAbstractInfo *info;
|
||||
NMMetaAccessorGetOutFlags text_out_flags, color_out_flags;
|
||||
gconstpointer value;
|
||||
gboolean is_default;
|
||||
|
||||
header_cell = &g_array_index (header_row, PrintDataHeaderCell, i_col);
|
||||
info = header_cell->col->selection_item->info;
|
||||
|
|
@ -1154,8 +1157,11 @@ _print_fill (const NmcConfig *nmc_config,
|
|||
text_get_type,
|
||||
text_get_flags,
|
||||
&text_out_flags,
|
||||
NULL,
|
||||
&is_default,
|
||||
(gpointer *) &to_free);
|
||||
|
||||
header_cell->skip = nmc_config->overview && is_default;
|
||||
|
||||
if (NM_FLAGS_HAS (text_out_flags, NM_META_ACCESSOR_GET_OUT_FLAGS_STRV)) {
|
||||
if (value) {
|
||||
if (nmc_config->multiline_output) {
|
||||
|
|
@ -1239,6 +1245,9 @@ _print_skip_column (const NmcConfig *nmc_config,
|
|||
selection_item = header_cell->col->selection_item;
|
||||
info = selection_item->info;
|
||||
|
||||
if (header_cell->skip)
|
||||
return TRUE;
|
||||
|
||||
if (nmc_config->multiline_output) {
|
||||
if (info->meta_type == &nm_meta_type_setting_info_editor) {
|
||||
/* we skip the "name" entry for the setting in multiline output. */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue