cli/device: use nmc_do_cmd()

This commit is contained in:
Lubomir Rintel
2016-06-23 12:19:10 +02:00
parent 1a88eac02a
commit 5182ab3d5d

View File

@@ -1401,6 +1401,12 @@ do_devices_status (NmCli *nmc, int argc, char **argv)
NmcOutputField *tmpl, *arr;
size_t tmpl_len;
if (!nmc_terse_option_check (nmc->print_output, nmc->required_fields, &error)) {
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
g_error_free (error);
return NMC_RESULT_ERROR_USER_INPUT;
}
while (argc > 0) {
g_printerr (_("Unknown parameter: %s\n"), *argv);
argc--;
@@ -1421,8 +1427,7 @@ do_devices_status (NmCli *nmc, int argc, char **argv)
if (error) {
g_string_printf (nmc->return_text, _("Error: 'device status': %s"), error->message);
g_error_free (error);
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
goto error;
return NMC_RESULT_ERROR_USER_INPUT;
}
/* Add headers */
@@ -1440,9 +1445,6 @@ do_devices_status (NmCli *nmc, int argc, char **argv)
g_free (devices);
return NMC_RESULT_SUCCESS;
error:
return nmc->return_value;
}
static NMCResultCode
@@ -1454,6 +1456,9 @@ do_device_show (NmCli *nmc, int argc, char **argv)
int i;
gboolean ret;
if (!nmc->mode_specified)
nmc->multiline_output = TRUE; /* multiline mode is default for 'device show' */
if (argc == 1)
ifname = *argv;
else if (argc > 1) {
@@ -3447,6 +3452,14 @@ error:
static NMCResultCode
do_device_wifi (NmCli *nmc, int argc, char **argv)
{
GError *error = NULL;
if (!nmc_terse_option_check (nmc->print_output, nmc->required_fields, &error)) {
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
g_error_free (error);
return NMC_RESULT_ERROR_USER_INPUT;
}
if (argc == 0)
nmc->return_value = do_device_wifi_list (nmc, argc-1, argv+1);
else if (argc > 0) {
@@ -3630,6 +3643,17 @@ error:
static NMCResultCode
do_device_lldp (NmCli *nmc, int argc, char **argv)
{
GError *error = NULL;
if (!nmc_terse_option_check (nmc->print_output, nmc->required_fields, &error)) {
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
g_error_free (error);
return NMC_RESULT_ERROR_USER_INPUT;
}
if (!nmc->mode_specified)
nmc->multiline_output = TRUE; /* multiline mode is default for 'device lldp' */
if (argc == 0)
nmc->return_value = do_device_lldp_list (nmc, argc, argv);
else if (matches (*argv, "list") == 0)
@@ -3711,11 +3735,23 @@ nmcli_device_tab_completion (const char *text, int start, int end)
return match_array;
}
static const NMCCommand device_cmds[] = {
{"status", do_devices_status, usage_device_status },
{"show", do_device_show, usage_device_show },
{"connect", do_device_connect, usage_device_connect },
{"reapply", do_device_reapply, usage_device_reapply },
{"disconnect", do_devices_disconnect, usage_device_disconnect },
{"delete", do_devices_delete, usage_device_delete },
{"set", do_device_set, usage_device_set },
{"monitor", do_devices_monitor, usage_device_monitor },
{"wifi", do_device_wifi, usage_device_wifi },
{"lldp", do_device_lldp, usage_device_lldp },
{NULL, do_devices_status, usage },
};
NMCResultCode
do_devices (NmCli *nmc, int argc, char **argv)
{
GError *error = NULL;
/* Register polkit agent */
nmc_start_polkit_agent_start_try (nmc);
@@ -3727,116 +3763,10 @@ do_devices (NmCli *nmc, int argc, char **argv)
/* Check whether NetworkManager is running */
if (!nm_client_get_nm_running (nmc->client)) {
g_string_printf (nmc->return_text, _("Error: NetworkManager is not running."));
nmc->return_value = NMC_RESULT_ERROR_NM_NOT_RUNNING;
return nmc->return_value;
return NMC_RESULT_ERROR_NM_NOT_RUNNING;
}
if (argc == 0) {
if (!nmc_terse_option_check (nmc->print_output, nmc->required_fields, &error))
goto opt_error;
nmc->return_value = do_devices_status (nmc, 0, NULL);
}
if (argc > 0) {
if (nmc_arg_is_help (*argv)) {
usage ();
goto usage_exit;
}
else if (matches (*argv, "status") == 0) {
if (nmc_arg_is_help (*(argv+1))) {
usage_device_status ();
goto usage_exit;
}
if (!nmc_terse_option_check (nmc->print_output, nmc->required_fields, &error))
goto opt_error;
nmc->return_value = do_devices_status (nmc, argc-1, argv+1);
}
else if (matches (*argv, "show") == 0) {
if (nmc_arg_is_help (*(argv+1))) {
usage_device_show ();
goto usage_exit;
}
if (!nmc->mode_specified)
nmc->multiline_output = TRUE; /* multiline mode is default for 'device show' */
nmc->return_value = do_device_show (nmc, argc-1, argv+1);
}
else if (matches (*argv, "connect") == 0) {
if (nmc_arg_is_help (*(argv+1))) {
usage_device_connect ();
goto usage_exit;
}
nmc->return_value = do_device_connect (nmc, argc-1, argv+1);
}
else if (matches (*argv, "reapply") == 0) {
if (nmc_arg_is_help (*(argv+1))) {
usage_device_reapply ();
goto usage_exit;
}
nmc->return_value = do_device_reapply (nmc, argc-1, argv+1);
}
else if (matches (*argv, "disconnect") == 0) {
if (nmc_arg_is_help (*(argv+1))) {
usage_device_disconnect ();
goto usage_exit;
}
nmc->return_value = do_devices_disconnect (nmc, argc-1, argv+1);
}
else if (matches (*argv, "delete") == 0) {
if (nmc_arg_is_help (*(argv+1))) {
usage_device_delete ();
goto usage_exit;
}
nmc->return_value = do_devices_delete (nmc, argc-1, argv+1);
}
else if (matches (*argv, "set") == 0) {
if (nmc_arg_is_help (*(argv+1))) {
usage_device_set ();
goto usage_exit;
}
nmc->return_value = do_device_set (nmc, argc-1, argv+1);
}
else if (matches (*argv, "monitor") == 0) {
if (nmc_arg_is_help (*(argv+1))) {
usage_device_monitor ();
goto usage_exit;
}
nmc->return_value = do_devices_monitor (nmc, argc-1, argv+1);
}
else if (matches (*argv, "wifi") == 0) {
if (nmc_arg_is_help (*(argv+1))) {
usage_device_wifi ();
goto usage_exit;
}
if (!nmc_terse_option_check (nmc->print_output, nmc->required_fields, &error))
goto opt_error;
nmc->return_value = do_device_wifi (nmc, argc-1, argv+1);
}
else if (matches (*argv, "lldp") == 0) {
if (nmc_arg_is_help (*(argv+1))) {
usage_device_lldp ();
goto usage_exit;
}
if (!nmc_terse_option_check (nmc->print_output, nmc->required_fields, &error))
goto opt_error;
if (!nmc->mode_specified)
nmc->multiline_output = TRUE; /* multiline mode is default for 'device lldp' */
nmc->return_value = do_device_lldp (nmc, argc-1, argv+1);
}
else {
usage ();
g_string_printf (nmc->return_text, _("Error: 'dev' command '%s' is not valid."), *argv);
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
}
}
usage_exit:
return nmc->return_value;
opt_error:
g_string_printf (nmc->return_text, _("Error: %s."), error->message);
nmc->return_value = NMC_RESULT_ERROR_USER_INPUT;
g_error_free (error);
return nmc->return_value;
return nmc_do_cmd (nmc, device_cmds, *argv, argc, argv);
}
void