diff --git a/clients/cli/common.c b/clients/cli/common.c index fc2245cbd1..e8099e16a1 100644 --- a/clients/cli/common.c +++ b/clients/cli/common.c @@ -1412,6 +1412,14 @@ nmc_do_cmd (NmCli *nmc, const NMCCommand cmds[], const char *cmd, int argc, char { const NMCCommand *c; + if (argc == 1 && nmc->complete) { + for (c = cmds; c->cmd; ++c) { + if (!*cmd || matches (cmd, c->cmd) == 0) + g_print ("%s\n", c->cmd); + } + return nmc->return_value; + } + for (c = cmds; c->cmd; ++c) { if (cmd && matches (cmd, c->cmd) == 0) break; diff --git a/clients/cli/devices.c b/clients/cli/devices.c index 5eb8ca06ff..49286a2233 100644 --- a/clients/cli/devices.c +++ b/clients/cli/devices.c @@ -2281,10 +2281,6 @@ do_device_set (NmCli *nmc, int argc, char **argv) }; gs_free_error GError *error = NULL; - /* Not (yet?) supported */ - if (nmc->complete) - return nmc->return_value; - if (argc >= 1 && g_strcmp0 (*argv, "ifname") == 0) { argc--; argv++; @@ -2305,11 +2301,16 @@ do_device_set (NmCli *nmc, int argc, char **argv) do { gboolean flag; + if (argc == 1 && nmc->complete) + nmc_complete_strings (*argv, "managed", "autoconnect", NULL); + if (matches (*argv, "managed") == 0) { if (next_arg (&argc, &argv) != 0) { g_string_printf (nmc->return_text, _("Error: '%s' argument is missing."), *(argv-1)); return NMC_RESULT_ERROR_USER_INPUT; } + if (argc == 1 && nmc->complete) + nmc_complete_bool (*argv); if (!nmc_string_to_bool (*argv, &flag, &error)) { g_string_printf (nmc->return_text, _("Error: 'managed': %s."), error->message); @@ -2323,6 +2324,8 @@ do_device_set (NmCli *nmc, int argc, char **argv) g_string_printf (nmc->return_text, _("Error: '%s' argument is missing."), *(argv-1)); return NMC_RESULT_ERROR_USER_INPUT; } + if (argc == 1 && nmc->complete) + nmc_complete_bool (*argv); if (!nmc_string_to_bool (*argv, &flag, &error)) { g_string_printf (nmc->return_text, _("Error: 'autoconnect': %s."), error->message); @@ -2337,6 +2340,9 @@ do_device_set (NmCli *nmc, int argc, char **argv) } } while (next_arg (&argc, &argv) == 0); + if (nmc->complete) + return nmc->return_value; + /* when multiple properties are specified, set them in the order as they * are specified on the command line. */ if ( values[DEV_SET_AUTOCONNECT].idx >= 0