summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2016-07-12 00:21:48 +0200
committerLubomir Rintel <lkundrak@v3.sk>2016-08-01 13:52:36 +0200
commit680b53c96a8cb2b7e4454d7ac5b7855c6a34d5a0 (patch)
treeda725aa5e63c8de3675f2a68599de5a0a4dd07c6
parentc561fa34d2d97efdff579b3031237f7bd8a79b20 (diff)
downloadNetworkManager-680b53c96a8cb2b7e4454d7ac5b7855c6a34d5a0.tar.gz
cli/connections: add completion to up subcommand
-rw-r--r--clients/cli/connections.c26
1 files changed, 21 insertions, 5 deletions
diff --git a/clients/cli/connections.c b/clients/cli/connections.c
index ceb68e2ed2..1cb488570c 100644
--- a/clients/cli/connections.c
+++ b/clients/cli/connections.c
@@ -33,6 +33,7 @@
#include "common.h"
#include "settings.h"
#include "connections.h"
+#include "devices.h"
#include "nm-secret-agent-simple.h"
#include "polkit-agent.h"
#include "nm-vpn-helpers.h"
@@ -2576,9 +2577,6 @@ do_connection_up (NmCli *nmc, int argc, char **argv)
char ***argv_ptr = &argv;
int *argc_ptr = &argc;
- /* Not (yet?) supported */
- if (nmc->complete)
- return nmc->return_value;
/*
* Set default timeout for connection activation.
* Activation can take quite a long time, use 90 seconds.
@@ -2587,7 +2585,12 @@ do_connection_up (NmCli *nmc, int argc, char **argv)
nmc->timeout = 90;
if (argc == 0 && nmc->ask) {
- char *line = nmc_readline ("%s: ", PROMPT_CONNECTION);
+ char *line;
+
+ /* nmc_do_cmd() should not call this with argc=0. */
+ g_assert (!nmc->complete);
+
+ line = nmc_readline ("%s: ", PROMPT_CONNECTION);
nmc_string_to_arg_array (line, NULL, TRUE, &arg_arr, &arg_num);
g_free (line);
argv_ptr = &arg_arr;
@@ -2603,6 +2606,9 @@ do_connection_up (NmCli *nmc, int argc, char **argv)
}
while (argc > 0) {
+ if (argc == 1 && nmc->complete)
+ nmc_complete_strings (*argv, "ifname", "ap", "passwd-file", NULL);
+
if (strcmp (*argv, "ifname") == 0) {
if (next_arg (&argc, &argv) != 0) {
g_string_printf (nmc->return_text, _("Error: %s argument is missing."), *(argv-1));
@@ -2610,6 +2616,8 @@ do_connection_up (NmCli *nmc, int argc, char **argv)
}
ifname = *argv;
+ if (argc == 1 && nmc->complete)
+ nmc_complete_device (nmc->client, ifname, ap != NULL);
}
else if (strcmp (*argv, "ap") == 0) {
if (next_arg (&argc, &argv) != 0) {
@@ -2618,6 +2626,8 @@ do_connection_up (NmCli *nmc, int argc, char **argv)
}
ap = *argv;
+ if (argc == 1 && nmc->complete)
+ nmc_complete_bssid (nmc->client, ifname, ap);
}
else if (strcmp (*argv, "passwd-file") == 0) {
if (next_arg (&argc, &argv) != 0) {
@@ -2625,9 +2635,12 @@ do_connection_up (NmCli *nmc, int argc, char **argv)
return NMC_RESULT_ERROR_USER_INPUT;
}
+ if (argc == 1 && nmc->complete)
+ nmc->return_value = NMC_RESULT_COMPLETE_FILE;
+
pwds = *argv;
}
- else {
+ else if (!nmc->complete) {
g_printerr (_("Unknown parameter: %s\n"), *argv);
}
@@ -2635,6 +2648,9 @@ do_connection_up (NmCli *nmc, int argc, char **argv)
argv++;
}
+ if (nmc->complete)
+ return nmc->return_value;
+
/* Use nowait_flag instead of should_wait because exiting has to be postponed till
* active_connection_state_cb() is called. That gives NM time to check our permissions
* and we can follow activation progress.