udevadm-control: use common verb help and add --introspect-cli
The custom help() is replaced by the common verb help, which derives the synopsis, abstract, and option list from the verb declaration in udevadm.c and the "udevadm-control" option namespace. The synopsis is now "udevadm [OPTION…] control OPTION…".
This commit is contained in:
@@ -2,9 +2,9 @@
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "sd-json.h"
|
||||
|
||||
#include "creds-util.h"
|
||||
#include "format-table.h"
|
||||
#include "help-util.h"
|
||||
#include "log.h"
|
||||
#include "options.h"
|
||||
#include "parse-argument.h"
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "udev-varlink.h"
|
||||
#include "udevadm.h"
|
||||
#include "varlink-util.h"
|
||||
#include "verbs.h"
|
||||
#include "virt.h"
|
||||
|
||||
static char **arg_env = NULL;
|
||||
@@ -45,25 +46,6 @@ static bool arg_has_control_commands(void) {
|
||||
arg_revert;
|
||||
}
|
||||
|
||||
static int help(void) {
|
||||
_cleanup_(table_unrefp) Table *options = NULL;
|
||||
int r;
|
||||
|
||||
r = option_parser_get_help_table_ns("udevadm-control", &options);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
help_cmdline("control OPTION");
|
||||
help_abstract("Control the udev daemon.");
|
||||
help_section("Options");
|
||||
r = table_print_or_warn(options);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
help_man_page_reference("udevadm", "8");
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int parse_argv(int argc, char *argv[]) {
|
||||
int r;
|
||||
|
||||
@@ -78,7 +60,7 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
OPTION_NAMESPACE("udevadm-control"): {}
|
||||
|
||||
OPTION_COMMON_HELP:
|
||||
return help();
|
||||
return command_print_verb_help("control");
|
||||
|
||||
OPTION('V', "version", NULL, "Show package version"):
|
||||
return print_version();
|
||||
@@ -155,6 +137,9 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
OPTION_LONG("load-credentials", NULL, "Load udev rules from credentials"):
|
||||
arg_load_credentials = true;
|
||||
break;
|
||||
|
||||
OPTION_COMMON_INTROSPECT_CLI:
|
||||
return introspect_cli(SD_JSON_FORMAT_OFF);
|
||||
}
|
||||
|
||||
if (!arg_has_control_commands() && !arg_load_credentials)
|
||||
|
||||
+14
-14
@@ -26,21 +26,21 @@ COMMAND(
|
||||
* subcommand parses its own options from the "udevadm-<verb>" namespace, see udevadm-*.c. */
|
||||
VERB_COMMON_HELP_AUTO_PROGRAM("udevadm");
|
||||
|
||||
#define UDEVADM_VERB(fn, name, args, help) \
|
||||
VERB_SCOPE_NS(, fn, name, "udevadm-" name, args, VERB_ANY, VERB_ANY, 0, help)
|
||||
#define UDEVADM_VERB(fn, name, args, flags, help, footer) \
|
||||
VERB_SCOPE_NS_FULL(, fn, name, "udevadm-" name, args, VERB_ANY, VERB_ANY, flags, /* dat= */ 0, help, footer)
|
||||
|
||||
UDEVADM_VERB(verb_info_main, "info", "[DEVPATH|FILE]\0", "Query sysfs or the udev database");
|
||||
UDEVADM_VERB(verb_trigger_main, "trigger", "DEVPATH\0", "Request events from the kernel");
|
||||
UDEVADM_VERB(verb_settle_main, "settle", NULL, "Wait for pending udev events");
|
||||
UDEVADM_VERB(verb_control_main, "control", "OPTION\0", "Control the udev daemon");
|
||||
UDEVADM_VERB(verb_monitor_main, "monitor", NULL, "Listen to kernel and udev events");
|
||||
UDEVADM_VERB(verb_test_main, "test", "DEVPATH\0", "Test an event run");
|
||||
UDEVADM_VERB(verb_builtin_main, "test-builtin", "COMMAND DEVPATH\0", "Test a built-in command");
|
||||
UDEVADM_VERB(verb_verify_main, "verify", "[FILE…]\0", "Verify udev rules files");
|
||||
UDEVADM_VERB(verb_cat_main, "cat", "[FILE…]\0", "Show udev rules files");
|
||||
UDEVADM_VERB(verb_wait_main, "wait", "DEVICE [DEVICE…]\0", "Wait for device or device symlink");
|
||||
UDEVADM_VERB(verb_lock_main, "lock", "COMMAND\0", "Lock a block device");
|
||||
UDEVADM_VERB(verb_hwdb_main, "hwdb", NULL, /* help= */ NULL); /* deprecated */
|
||||
UDEVADM_VERB(verb_info_main, "info", "[DEVPATH|FILE]\0", 0, "Query sysfs or the udev database", NULL);
|
||||
UDEVADM_VERB(verb_trigger_main, "trigger", "DEVPATH\0", 0, "Request events from the kernel", NULL);
|
||||
UDEVADM_VERB(verb_settle_main, "settle", NULL, 0, "Wait for pending udev events", NULL);
|
||||
UDEVADM_VERB(verb_control_main, "control", NULL, VERB_OPTION_REQUIRED, "Control the udev daemon", NULL);
|
||||
UDEVADM_VERB(verb_monitor_main, "monitor", NULL, 0, "Listen to kernel and udev events", NULL);
|
||||
UDEVADM_VERB(verb_test_main, "test", "DEVPATH\0", 0, "Test an event run", NULL);
|
||||
UDEVADM_VERB(verb_builtin_main, "test-builtin", "COMMAND DEVPATH\0", 0, "Test a built-in command", NULL);
|
||||
UDEVADM_VERB(verb_verify_main, "verify", "[FILE…]\0", 0, "Verify udev rules files", NULL);
|
||||
UDEVADM_VERB(verb_cat_main, "cat", "[FILE…]\0", 0, "Show udev rules files", NULL);
|
||||
UDEVADM_VERB(verb_wait_main, "wait", "DEVICE [DEVICE…]\0", 0, "Wait for device or device symlink", NULL);
|
||||
UDEVADM_VERB(verb_lock_main, "lock", "COMMAND", 0, "Lock a block device", NULL);
|
||||
UDEVADM_VERB(verb_hwdb_main, "hwdb", NULL, 0, /* help= */ NULL, NULL); /* deprecated */
|
||||
|
||||
VERB_NOARG(verb_version_main, "version", /* help= */ NULL);
|
||||
static int verb_version_main(int argc, char *argv[], uintptr_t _data, void *userdata) {
|
||||
|
||||
Reference in New Issue
Block a user