mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-02-04 08:20:28 +01:00
cli: make subcommand dispatch do autocompletion
This commit is contained in:
parent
1e582f0172
commit
08969b1789
2 changed files with 18 additions and 4 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue