summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2016-07-06 14:52:25 +0200
committerLubomir Rintel <lkundrak@v3.sk>2016-08-01 13:52:36 +0200
commit8c4b749355d8fe080fefb914962bdec332baf524 (patch)
tree47b7932f7ee71461c6ce5bcafb8a6b1beffdb579
parent1c2cabeda8b5477c76cf4cd750bfe7dd640bc53e (diff)
downloadNetworkManager-8c4b749355d8fe080fefb914962bdec332baf524.tar.gz
cli/networking: add subcommand completion
-rw-r--r--clients/cli/general.c28
1 files changed, 22 insertions, 6 deletions
diff --git a/clients/cli/general.c b/clients/cli/general.c
index 972c9d6e36..b919ccb549 100644
--- a/clients/cli/general.c
+++ b/clients/cli/general.c
@@ -747,19 +747,31 @@ do_networking (NmCli *nmc, int argc, char **argv)
{
gboolean enable_flag;
- /* Not (yet?) supported */
- if (nmc->complete)
- return nmc->return_value;
-
/* Register polkit agent */
nmc_start_polkit_agent_start_try (nmc);
- if (argc == 0)
+ if (argc == 0) {
+ if (nmc->complete)
+ return nmc->return_value;
nmc_switch_show (nmc, NMC_FIELDS_NM_NETWORKING, _("Networking"));
- else if (argc > 0) {
+ } else if (argc > 0) {
+
+ if (argc == 1 && nmc->complete) {
+ nmc_complete_strings (*argv, "connectivity", NULL);
+ nmc_complete_bool (*argv);
+ return nmc->return_value;
+ }
+
if (nmc_arg_is_help (*argv)) {
+ if (nmc->complete)
+ return nmc->return_value;
usage_networking ();
} else if (matches (*argv, "connectivity") == 0) {
+ if (nmc->complete) {
+ if (argc == 2)
+ nmc_complete_strings (*(argv+1), "check", NULL);
+ return nmc->return_value;
+ }
if (nmc_arg_is_help (*(argv+1))) {
usage_networking_connectivity ();
goto finish;
@@ -784,6 +796,8 @@ do_networking (NmCli *nmc, int argc, char **argv)
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
}
} else if (nmc_switch_parse_on_off (nmc, *(argv-1), *argv, &enable_flag)) {
+ if (nmc->complete)
+ return nmc->return_value;
if (nmc_arg_is_help (*(argv+1))) {
if (enable_flag)
usage_networking_on ();
@@ -795,6 +809,8 @@ do_networking (NmCli *nmc, int argc, char **argv)
nmc->get_client (nmc); /* create NMClient */
nm_client_networking_set_enabled (nmc->client, enable_flag, NULL);
} else {
+ if (nmc->complete)
+ return nmc->return_value;
usage_networking ();
g_string_printf (nmc->return_text, _("Error: 'networking' command '%s' is not valid."), *argv);
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;