diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2016-07-27 16:24:30 +0200 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2016-08-01 15:51:29 +0200 |
commit | 8cc6ce7e44d574cc8baf0dbb3737f6ada060ae99 (patch) | |
tree | b7c51eb32100db114cdaa0d47bec4225623fa249 | |
parent | 2e5f8d7de6fa5207c2ea745272f8059af99c965c (diff) | |
download | NetworkManager-lr/completion-2.tar.gz |
cli: add -f argument completionlr/completion-2
-rw-r--r-- | clients/cli/common.h | 5 | ||||
-rw-r--r-- | clients/cli/connections.c | 41 | ||||
-rw-r--r-- | clients/cli/connections.h | 6 | ||||
-rw-r--r-- | clients/cli/devices.c | 30 | ||||
-rw-r--r-- | clients/cli/devices.h | 16 | ||||
-rw-r--r-- | clients/cli/nmcli.c | 111 | ||||
-rw-r--r-- | clients/cli/settings.h | 30 |
7 files changed, 185 insertions, 54 deletions
diff --git a/clients/cli/common.h b/clients/cli/common.h index 5811639c15..2450cdb950 100644 --- a/clients/cli/common.h +++ b/clients/cli/common.h @@ -86,4 +86,9 @@ void nmc_complete_strings (const char *prefix, ...) G_GNUC_NULL_TERMINATED; void nmc_complete_bool (const char *prefix); +extern NmcOutputField nmc_fields_ip4_config[]; +extern NmcOutputField nmc_fields_dhcp4_config[]; +extern NmcOutputField nmc_fields_ip6_config[]; +extern NmcOutputField nmc_fields_dhcp6_config[]; + #endif /* NMC_COMMON_H */ diff --git a/clients/cli/connections.c b/clients/cli/connections.c index b03842bc92..53e57e4eed 100644 --- a/clients/cli/connections.c +++ b/clients/cli/connections.c @@ -115,7 +115,7 @@ struct _OptionInfo { #define BASE_PROMPT "nmcli> " /* Available fields for 'connection show' */ -static NmcOutputField nmc_fields_con_show[] = { +NmcOutputField nmc_fields_con_show[] = { {"NAME", N_("NAME")}, /* 0 */ {"UUID", N_("UUID")}, /* 1 */ {"TYPE", N_("TYPE")}, /* 2 */ @@ -138,39 +138,8 @@ static NmcOutputField nmc_fields_con_show[] = { /* Helper macro to define fields */ #define SETTING_FIELD(setting, props) { setting, N_(setting), 0, props, NULL, FALSE, FALSE, 0 } -/* defined in settings.c */ -extern NmcOutputField nmc_fields_setting_connection[]; -extern NmcOutputField nmc_fields_setting_wired[]; -extern NmcOutputField nmc_fields_setting_8021X[]; -extern NmcOutputField nmc_fields_setting_wireless[]; -extern NmcOutputField nmc_fields_setting_wireless_security[]; -extern NmcOutputField nmc_fields_setting_ip4_config[]; -extern NmcOutputField nmc_fields_setting_ip6_config[]; -extern NmcOutputField nmc_fields_setting_serial[]; -extern NmcOutputField nmc_fields_setting_ppp[]; -extern NmcOutputField nmc_fields_setting_pppoe[]; -extern NmcOutputField nmc_fields_setting_adsl[]; -extern NmcOutputField nmc_fields_setting_gsm[]; -extern NmcOutputField nmc_fields_setting_cdma[]; -extern NmcOutputField nmc_fields_setting_bluetooth[]; -extern NmcOutputField nmc_fields_setting_olpc_mesh[]; -extern NmcOutputField nmc_fields_setting_vpn[]; -extern NmcOutputField nmc_fields_setting_wimax[]; -extern NmcOutputField nmc_fields_setting_infiniband[]; -extern NmcOutputField nmc_fields_setting_bond[]; -extern NmcOutputField nmc_fields_setting_vlan[]; -extern NmcOutputField nmc_fields_setting_bridge[]; -extern NmcOutputField nmc_fields_setting_bridge_port[]; -extern NmcOutputField nmc_fields_setting_team[]; -extern NmcOutputField nmc_fields_setting_team_port[]; -extern NmcOutputField nmc_fields_setting_dcb[]; -extern NmcOutputField nmc_fields_setting_tun[]; -extern NmcOutputField nmc_fields_setting_ip_tunnel[]; -extern NmcOutputField nmc_fields_setting_macvlan[]; -extern NmcOutputField nmc_fields_setting_vxlan[]; - /* Available settings for 'connection show <con>' - profile part */ -static NmcOutputField nmc_fields_settings_names[] = { +NmcOutputField nmc_fields_settings_names[] = { SETTING_FIELD (NM_SETTING_CONNECTION_SETTING_NAME, nmc_fields_setting_connection + 1), /* 0 */ SETTING_FIELD (NM_SETTING_WIRED_SETTING_NAME, nmc_fields_setting_wired + 1), /* 1 */ SETTING_FIELD (NM_SETTING_802_1X_SETTING_NAME, nmc_fields_setting_8021X + 1), /* 2 */ @@ -234,7 +203,7 @@ static NmcOutputField nmc_fields_settings_names[] = { /* Active connection data */ /* Available fields for GENERAL group */ -static NmcOutputField nmc_fields_con_active_details_general[] = { +NmcOutputField nmc_fields_con_active_details_general[] = { {"GROUP", N_("GROUP")}, /* 0 */ {"NAME", N_("NAME")}, /* 1 */ {"UUID", N_("UUID")}, /* 2 */ @@ -256,7 +225,7 @@ static NmcOutputField nmc_fields_con_active_details_general[] = { /* IP group is handled by common.c */ /* Available fields for VPN group */ -static NmcOutputField nmc_fields_con_active_details_vpn[] = { +NmcOutputField nmc_fields_con_active_details_vpn[] = { {"GROUP", N_("GROUP")}, /* 0 */ {"TYPE", N_("TYPE")}, /* 1 */ {"USERNAME", N_("USERNAME")}, /* 2 */ @@ -275,7 +244,7 @@ extern NmcOutputField nmc_fields_dhcp4_config[]; extern NmcOutputField nmc_fields_dhcp6_config[]; /* Available fields for 'connection show <con>' - active part */ -static NmcOutputField nmc_fields_con_active_details_groups[] = { +NmcOutputField nmc_fields_con_active_details_groups[] = { {"GENERAL", N_("GENERAL"), 0, nmc_fields_con_active_details_general + 1}, /* 0 */ {"IP4", N_("IP4"), 0, nmc_fields_ip4_config + 1 }, /* 1 */ {"DHCP4", N_("DHCP4"), 0, nmc_fields_dhcp4_config + 1 }, /* 2 */ diff --git a/clients/cli/connections.h b/clients/cli/connections.h index cb70a3d52e..c73178e24e 100644 --- a/clients/cli/connections.h +++ b/clients/cli/connections.h @@ -35,4 +35,10 @@ nmc_read_connection_properties (NmCli *nmc, void nmc_active_connection_state_to_color (NMActiveConnectionState state, NmcTermColor *color); +extern NmcOutputField nmc_fields_con_show[]; +extern NmcOutputField nmc_fields_settings_names[]; +extern NmcOutputField nmc_fields_con_active_details_general[]; +extern NmcOutputField nmc_fields_con_active_details_vpn[]; +extern NmcOutputField nmc_fields_con_active_details_groups[]; + #endif /* NMC_CONNECTIONS_H */ diff --git a/clients/cli/devices.c b/clients/cli/devices.c index 8c255fc828..afa769f63c 100644 --- a/clients/cli/devices.c +++ b/clients/cli/devices.c @@ -37,7 +37,7 @@ #define PROMPT_INTERFACES _("Interface(s): ") /* Available fields for 'device status' */ -static NmcOutputField nmc_fields_dev_status[] = { +NmcOutputField nmc_fields_dev_status[] = { {"DEVICE", N_("DEVICE")}, /* 0 */ {"TYPE", N_("TYPE")}, /* 1 */ {"STATE", N_("STATE")}, /* 2 */ @@ -52,7 +52,7 @@ static NmcOutputField nmc_fields_dev_status[] = { /* Available fields for 'device show' - GENERAL part */ -static NmcOutputField nmc_fields_dev_show_general[] = { +NmcOutputField nmc_fields_dev_show_general[] = { {"NAME", N_("NAME")}, /* 0 */ {"DEVICE", N_("DEVICE")}, /* 1 */ {"TYPE", N_("TYPE")}, /* 2 */ @@ -86,7 +86,7 @@ static NmcOutputField nmc_fields_dev_show_general[] = { #define NMC_FIELDS_DEV_SHOW_GENERAL_COMMON "NAME,DEVICE,TYPE,VENDOR,PRODUCT,DRIVER,HWADDR,STATE" /* Available fields for 'device show' - CONNECTIONS part */ -static NmcOutputField nmc_fields_dev_show_connections[] = { +NmcOutputField nmc_fields_dev_show_connections[] = { {"NAME", N_("NAME")}, /* 0 */ {"AVAILABLE-CONNECTION-PATHS", N_("AVAILABLE-CONNECTION-PATHS")}, /* 1 */ {"AVAILABLE-CONNECTIONS", N_("AVAILABLE-CONNECTIONS")}, /* 2 */ @@ -96,7 +96,7 @@ static NmcOutputField nmc_fields_dev_show_connections[] = { #define NMC_FIELDS_DEV_SHOW_CONNECTIONS_COMMON "AVAILABLE-CONNECTION-PATHS,AVAILABLE-CONNECTIONS" /* Available fields for 'device show' - CAPABILITIES part */ -static NmcOutputField nmc_fields_dev_show_cap[] = { +NmcOutputField nmc_fields_dev_show_cap[] = { {"NAME", N_("NAME")}, /* 0 */ {"CARRIER-DETECT", N_("CARRIER-DETECT")}, /* 1 */ {"SPEED", N_("SPEED")}, /* 2 */ @@ -107,7 +107,7 @@ static NmcOutputField nmc_fields_dev_show_cap[] = { #define NMC_FIELDS_DEV_SHOW_CAP_COMMON "NAME,CARRIER-DETECT,SPEED,IS-SOFTWARE" /* Available fields for 'device show' - wired properties part */ -static NmcOutputField nmc_fields_dev_show_wired_prop[] = { +NmcOutputField nmc_fields_dev_show_wired_prop[] = { {"NAME", N_("NAME")}, /* 0 */ {"CARRIER", N_("CARRIER")}, /* 1 */ {"S390-SUBCHANNELS", N_("S390-SUBCHANNELS")}, /* 2 */ @@ -117,7 +117,7 @@ static NmcOutputField nmc_fields_dev_show_wired_prop[] = { #define NMC_FIELDS_DEV_SHOW_WIRED_PROP_COMMON "NAME,CARRIER,S390-SUBCHANNELS" /* Available fields for 'device show' - wireless properties part */ -static NmcOutputField nmc_fields_dev_show_wifi_prop[] = { +NmcOutputField nmc_fields_dev_show_wifi_prop[] = { {"NAME", N_("NAME")}, /* 0 */ {"WEP", N_("WEP")}, /* 1 */ {"WPA", N_("WPA")}, /* 2 */ @@ -134,7 +134,7 @@ static NmcOutputField nmc_fields_dev_show_wifi_prop[] = { #define NMC_FIELDS_DEV_SHOW_WIFI_PROP_COMMON "NAME,WEP,WPA,WPA2,TKIP,CCMP,AP,ADHOC" /* Available fields for 'device show' - wimax properties part */ -static NmcOutputField nmc_fields_dev_show_wimax_prop[] = { +NmcOutputField nmc_fields_dev_show_wimax_prop[] = { {"NAME", N_("NAME")}, /* 0 */ {"CTR-FREQ", N_("CTR-FREQ")}, /* 1 */ {"RSSI", N_("RSSI")}, /* 2 */ @@ -147,7 +147,7 @@ static NmcOutputField nmc_fields_dev_show_wimax_prop[] = { #define NMC_FIELDS_DEV_SHOW_WIMAX_PROP_COMMON "NAME,CTR-FREQ,RSSI,CINR,TX-POW,BSID" /* Available fields for 'device wifi list' */ -static NmcOutputField nmc_fields_dev_wifi_list[] = { +NmcOutputField nmc_fields_dev_wifi_list[] = { {"NAME", N_("NAME")}, /* 0 */ {"SSID", N_("SSID")}, /* 1 */ {"SSID-HEX", N_("SSID-HEX")}, /* 2 */ @@ -173,7 +173,7 @@ static NmcOutputField nmc_fields_dev_wifi_list[] = { #define NMC_FIELDS_DEV_WIFI_LIST_FOR_DEV_LIST "NAME,"NMC_FIELDS_DEV_WIFI_LIST_COMMON /* Available fields for 'device wimax list' */ -static NmcOutputField nmc_fields_dev_wimax_list[] = { +NmcOutputField nmc_fields_dev_wimax_list[] = { {"NAME", N_("NAME")}, /* 0 */ {"NSP", N_("NSP")}, /* 1 */ {"SIGNAL", N_("SIGNAL")}, /* 2 */ @@ -188,7 +188,7 @@ static NmcOutputField nmc_fields_dev_wimax_list[] = { #define NMC_FIELDS_DEV_WIMAX_LIST_FOR_DEV_LIST "NAME,"NMC_FIELDS_DEV_WIMAX_LIST_COMMON /* Available fields for 'device show' - BOND, BRIDGE part */ -static NmcOutputField nmc_fields_dev_show_master_prop[] = { +NmcOutputField nmc_fields_dev_show_master_prop[] = { {"NAME", N_("NAME")}, /* 0 */ {"SLAVES", N_("SLAVES")}, /* 1 */ {NULL, NULL} @@ -197,7 +197,7 @@ static NmcOutputField nmc_fields_dev_show_master_prop[] = { #define NMC_FIELDS_DEV_SHOW_MASTER_PROP_COMMON "NAME,SLAVES" /* Available fields for 'device show' - TEAM part */ -static NmcOutputField nmc_fields_dev_show_team_prop[] = { +NmcOutputField nmc_fields_dev_show_team_prop[] = { {"NAME", N_("NAME")}, /* 0 */ {"SLAVES", N_("SLAVES")}, /* 1 */ {"CONFIG", N_("CONFIG")}, /* 2 */ @@ -207,7 +207,7 @@ static NmcOutputField nmc_fields_dev_show_team_prop[] = { #define NMC_FIELDS_DEV_SHOW_TEAM_PROP_COMMON "NAME,SLAVES,CONFIG" /* Available fields for 'device show' - VLAN part */ -static NmcOutputField nmc_fields_dev_show_vlan_prop[] = { +NmcOutputField nmc_fields_dev_show_vlan_prop[] = { {"NAME", N_("NAME")}, /* 0 */ {"PARENT", N_("PARENT")}, /* 1 */ {"ID", N_("ID")}, /* 2 */ @@ -217,7 +217,7 @@ static NmcOutputField nmc_fields_dev_show_vlan_prop[] = { #define NMC_FIELDS_DEV_SHOW_VLAN_PROP_COMMON "NAME,PARENT,ID" /* Available fields for 'device show' - BLUETOOTH part */ -static NmcOutputField nmc_fields_dev_show_bluetooth[] = { +NmcOutputField nmc_fields_dev_show_bluetooth[] = { {"NAME", N_("NAME")}, /* 0 */ {"CAPABILITIES", N_("CAPABILITIES")}, /* 1 */ {NULL, NULL} @@ -232,7 +232,7 @@ extern NmcOutputField nmc_fields_dhcp4_config[]; extern NmcOutputField nmc_fields_dhcp6_config[]; /* Available sections for 'device show' */ -static NmcOutputField nmc_fields_dev_show_sections[] = { +NmcOutputField nmc_fields_dev_show_sections[] = { {"GENERAL", N_("GENERAL"), 0, nmc_fields_dev_show_general + 1 }, /* 0 */ {"CAPABILITIES", N_("CAPABILITIES"), 0, nmc_fields_dev_show_cap + 1 }, /* 1 */ {"WIFI-PROPERTIES", N_("WIFI-PROPERTIES"), 0, nmc_fields_dev_show_wifi_prop + 1 }, /* 2 */ @@ -258,7 +258,7 @@ static NmcOutputField nmc_fields_dev_show_sections[] = { "GENERAL.CONNECTION,GENERAL.CON-PATH,WIRED-PROPERTIES,IP4,IP6" /* Available fields for 'device lldp' */ -static NmcOutputField nmc_fields_dev_lldp_list[] = { +NmcOutputField nmc_fields_dev_lldp_list[] = { {"NAME", N_("NAME")}, /* 0 */ {"DEVICE", N_("DEVICE")}, /* 1 */ {"CHASSIS-ID", N_("CHASSIS-ID")}, /* 2 */ diff --git a/clients/cli/devices.h b/clients/cli/devices.h index 7d5c07c022..672944beda 100644 --- a/clients/cli/devices.h +++ b/clients/cli/devices.h @@ -34,4 +34,20 @@ NMDevice ** nmc_get_devices_sorted (NMClient *client); void nmc_device_state_to_color (NMDeviceState state, NmcTermColor *color, NmcTermFormat *color_fmt); +extern NmcOutputField nmc_fields_dev_status[]; +extern NmcOutputField nmc_fields_dev_show_general[]; +extern NmcOutputField nmc_fields_dev_show_connections[]; +extern NmcOutputField nmc_fields_dev_show_cap[]; +extern NmcOutputField nmc_fields_dev_show_wired_prop[]; +extern NmcOutputField nmc_fields_dev_show_wifi_prop[]; +extern NmcOutputField nmc_fields_dev_show_wimax_prop[]; +extern NmcOutputField nmc_fields_dev_wifi_list[]; +extern NmcOutputField nmc_fields_dev_wimax_list[]; +extern NmcOutputField nmc_fields_dev_show_master_prop[]; +extern NmcOutputField nmc_fields_dev_show_team_prop[]; +extern NmcOutputField nmc_fields_dev_show_vlan_prop[]; +extern NmcOutputField nmc_fields_dev_show_bluetooth[]; +extern NmcOutputField nmc_fields_dev_show_sections[]; +extern NmcOutputField nmc_fields_dev_lldp_list[]; + #endif /* NMC_DEVICES_H */ diff --git a/clients/cli/nmcli.c b/clients/cli/nmcli.c index 7c18bf04ec..9bfa05fade 100644 --- a/clients/cli/nmcli.c +++ b/clients/cli/nmcli.c @@ -41,6 +41,7 @@ #include "devices.h" #include "general.h" #include "agent.h" +#include "settings.h" #if defined(NM_DIST_VERSION) # define NMCLI_VERSION NM_DIST_VERSION @@ -64,6 +65,105 @@ GMainLoop *loop = NULL; static sigset_t signal_set; struct termios termios_orig; +static void +complete_field (GHashTable *h, const char *setting, NmcOutputField field[]) +{ + int i; + + for (i = 0; field[i].name; i++) { + if (setting) + g_hash_table_add (h, g_strdup_printf ("%s.%s", setting, field[i].name)); + else + g_hash_table_add (h, g_strdup (field[i].name)); + } +} + +static void +complete_one (gpointer key, gpointer value, gpointer user_data) +{ + const char *prefix = user_data; + const char *name = key; + const char *last; + + last = strrchr (prefix, ','); + if (last) + last++; + else + last = prefix; + + if ((!*last && !strchr (name, '.')) || matches (last, name) == 0) { + g_print ("%.*s%s%s\n", (int)(last-prefix), prefix, name, + strcmp (last, name) == 0 ? "," : ""); + } +} + +static void +complete_fields (const char *prefix) +{ + + GHashTable *h; + + h = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); + + complete_field (h, NULL, nmc_fields_ip4_config); + complete_field (h, NULL, nmc_fields_dhcp4_config); + complete_field (h, NULL, nmc_fields_ip6_config); + complete_field (h, NULL, nmc_fields_dhcp6_config); + complete_field (h, NULL, nmc_fields_con_show); + complete_field (h, NULL, nmc_fields_settings_names); + complete_field (h, NULL, nmc_fields_con_active_details_general); + complete_field (h, NULL, nmc_fields_con_active_details_vpn); + complete_field (h, NULL, nmc_fields_con_active_details_groups); + complete_field (h, NULL, nmc_fields_dev_status); + complete_field (h, NULL, nmc_fields_dev_show_general); + complete_field (h, NULL, nmc_fields_dev_show_connections); + complete_field (h, NULL, nmc_fields_dev_show_cap); + complete_field (h, NULL, nmc_fields_dev_show_wired_prop); + complete_field (h, NULL, nmc_fields_dev_show_wifi_prop); + complete_field (h, NULL, nmc_fields_dev_show_wimax_prop); + complete_field (h, NULL, nmc_fields_dev_wifi_list); + complete_field (h, NULL, nmc_fields_dev_wimax_list); + complete_field (h, NULL, nmc_fields_dev_show_master_prop); + complete_field (h, NULL, nmc_fields_dev_show_team_prop); + complete_field (h, NULL, nmc_fields_dev_show_vlan_prop); + complete_field (h, NULL, nmc_fields_dev_show_bluetooth); + complete_field (h, NULL, nmc_fields_dev_show_sections); + complete_field (h, NULL, nmc_fields_dev_lldp_list); + + complete_field (h, "connection", nmc_fields_setting_connection); + complete_field (h, "wired", nmc_fields_setting_wired); + complete_field (h, "8021X", nmc_fields_setting_8021X); + complete_field (h, "wireless", nmc_fields_setting_wireless); + complete_field (h, "wireless_security", nmc_fields_setting_wireless_security); + complete_field (h, "ip4-config", nmc_fields_setting_ip4_config); + complete_field (h, "ip6-config", nmc_fields_setting_ip6_config); + complete_field (h, "serial", nmc_fields_setting_serial); + complete_field (h, "ppp", nmc_fields_setting_ppp); + complete_field (h, "pppoe", nmc_fields_setting_pppoe); + complete_field (h, "adsl", nmc_fields_setting_adsl); + complete_field (h, "gsm", nmc_fields_setting_gsm); + complete_field (h, "cdma", nmc_fields_setting_cdma); + complete_field (h, "bluetooth", nmc_fields_setting_bluetooth); + complete_field (h, "olpc-mesh", nmc_fields_setting_olpc_mesh); + complete_field (h, "vpn", nmc_fields_setting_vpn); + complete_field (h, "wimax", nmc_fields_setting_wimax); + complete_field (h, "infiniband", nmc_fields_setting_infiniband); + complete_field (h, "bond", nmc_fields_setting_bond); + complete_field (h, "vlan", nmc_fields_setting_vlan); + complete_field (h, "bridge", nmc_fields_setting_bridge); + complete_field (h, "bridge-port", nmc_fields_setting_bridge_port); + complete_field (h, "team", nmc_fields_setting_team); + complete_field (h, "team0port", nmc_fields_setting_team_port); + complete_field (h, "dcb", nmc_fields_setting_dcb); + complete_field (h, "tun", nmc_fields_setting_tun); + complete_field (h, "ip-tunnel", nmc_fields_setting_ip_tunnel); + complete_field (h, "macvlan", nmc_fields_setting_macvlan); + complete_field (h, "vxlan", nmc_fields_setting_vxlan); + + g_hash_table_foreach (h, complete_one, (gpointer) prefix); + g_hash_table_destroy (h); +} + /* Get an error quark for use with GError */ GQuark @@ -188,7 +288,8 @@ parse_command_line (NmCli *nmc, int argc, char **argv) nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; return nmc->return_value; } - nmc_complete_strings (argv[0], "tabular", "multiline", NULL); + if (argc == 1 && nmc->complete) + nmc_complete_strings (argv[0], "tabular", "multiline", NULL); if (matches (argv[0], "tabular") == 0) nmc->multiline_output = FALSE; else if (matches (argv[0], "multiline") == 0) @@ -204,7 +305,8 @@ parse_command_line (NmCli *nmc, int argc, char **argv) nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; return nmc->return_value; } - nmc_complete_strings (argv[0], "yes", "no", "auto", NULL); + if (argc == 1 && nmc->complete) + nmc_complete_strings (argv[0], "yes", "no", "auto", NULL); if (matches (argv[0], "auto") == 0) nmc->use_colors = NMC_USE_COLOR_AUTO; else if (matches (argv[0], "yes") == 0) @@ -222,7 +324,8 @@ parse_command_line (NmCli *nmc, int argc, char **argv) nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; return nmc->return_value; } - nmc_complete_strings (argv[0], "yes", "no", NULL); + if (argc == 1 && nmc->complete) + nmc_complete_strings (argv[0], "yes", "no", NULL); if (matches (argv[0], "yes") == 0) nmc->escape_values = TRUE; else if (matches (argv[0], "no") == 0) @@ -238,6 +341,8 @@ parse_command_line (NmCli *nmc, int argc, char **argv) nmc->return_value = NMC_RESULT_ERROR_USER_INPUT; return nmc->return_value; } + if (argc == 1 && nmc->complete) + complete_fields (argv[0]); nmc->required_fields = g_strdup (argv[0]); } else if (matches (opt, "-nocheck") == 0) { /* ignore for backward compatibility */ diff --git a/clients/cli/settings.h b/clients/cli/settings.h index bab00ee908..33900510fd 100644 --- a/clients/cli/settings.h +++ b/clients/cli/settings.h @@ -63,4 +63,34 @@ gboolean nmc_property_set_gvalue (NMSetting *setting, const char *prop, GValue * gboolean setting_details (NMSetting *setting, NmCli *nmc, const char *one_prop, gboolean secrets); +extern NmcOutputField nmc_fields_setting_connection[]; +extern NmcOutputField nmc_fields_setting_wired[]; +extern NmcOutputField nmc_fields_setting_8021X[]; +extern NmcOutputField nmc_fields_setting_wireless[]; +extern NmcOutputField nmc_fields_setting_wireless_security[]; +extern NmcOutputField nmc_fields_setting_ip4_config[]; +extern NmcOutputField nmc_fields_setting_ip6_config[]; +extern NmcOutputField nmc_fields_setting_serial[]; +extern NmcOutputField nmc_fields_setting_ppp[]; +extern NmcOutputField nmc_fields_setting_pppoe[]; +extern NmcOutputField nmc_fields_setting_adsl[]; +extern NmcOutputField nmc_fields_setting_gsm[]; +extern NmcOutputField nmc_fields_setting_cdma[]; +extern NmcOutputField nmc_fields_setting_bluetooth[]; +extern NmcOutputField nmc_fields_setting_olpc_mesh[]; +extern NmcOutputField nmc_fields_setting_vpn[]; +extern NmcOutputField nmc_fields_setting_wimax[]; +extern NmcOutputField nmc_fields_setting_infiniband[]; +extern NmcOutputField nmc_fields_setting_bond[]; +extern NmcOutputField nmc_fields_setting_vlan[]; +extern NmcOutputField nmc_fields_setting_bridge[]; +extern NmcOutputField nmc_fields_setting_bridge_port[]; +extern NmcOutputField nmc_fields_setting_team[]; +extern NmcOutputField nmc_fields_setting_team_port[]; +extern NmcOutputField nmc_fields_setting_dcb[]; +extern NmcOutputField nmc_fields_setting_tun[]; +extern NmcOutputField nmc_fields_setting_ip_tunnel[]; +extern NmcOutputField nmc_fields_setting_macvlan[]; +extern NmcOutputField nmc_fields_setting_vxlan[]; + #endif /* NMC_SETTINGS_H */ |