[PATCH libinput] tools: rename list-quirks to the more generic "quirks list"

Peter Hutterer peter.hutterer at who-t.net
Wed Jun 27 23:15:47 UTC 2018


Enables us to easily add more tools where needed and it is
more consistent with the existing tools.

The commands are now:
   libinput quirks list
   libinput quirks validate

Fixes https://gitlab.freedesktop.org/libinput/libinput/issues/66

Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
---
 doc/device-quirks.dox                         | 14 +++---
 meson.build                                   | 41 ++++++++++++------
 tools/libinput-list-quirks.man                | 36 ----------------
 tools/libinput-measure-touch-size             |  6 +--
 tools/libinput-measure-touchpad-pressure      |  6 +--
 ...binput-list-quirks.c => libinput-quirks.c} | 29 +++++++++----
 tools/libinput-quirks.man                     | 43 +++++++++++++++++++
 7 files changed, 105 insertions(+), 70 deletions(-)
 delete mode 100644 tools/libinput-list-quirks.man
 rename tools/{libinput-list-quirks.c => libinput-quirks.c} (90%)
 create mode 100644 tools/libinput-quirks.man

diff --git a/doc/device-quirks.dox b/doc/device-quirks.dox
index 35e78215..d4368664 100644
--- a/doc/device-quirks.dox
+++ b/doc/device-quirks.dox
@@ -54,21 +54,23 @@ Once the required section has been added, use the information from section
 
 @section device-quirks-debugging Debugging device quirks
 
-libinput provides the `libinput list-quirks` tool to list and debug model
-quirks that apply to one or more local devices.
+libinput provides the `libinput quirks` tool to debug the quirks database.
+This tool takes an action as first argument, the most common invocation is
+`libinput quirks list` to list model quirks that apply to one or more local
+devices.
 
 @verbatim
-$ libinput list-quirks /dev/input/event19
+$ libinput quirks list /dev/input/event19
 Device has no quirks defined
-$ libinput list-quirks /dev/input/event0
+$ libinput quirks list /dev/input/event0
 AttrLidSwitchReliability
 @endverbatim
 
-When called with the `--verbose` argument, `libinput list-quirks` prints
+When called with the `--verbose` argument, `libinput quirks list` prints
 information about all files and its attempts to match the device:
 
 @verbatim
-$ libinput list-quirks --verbose /dev/input/event0
+$ libinput quirks list --verbose /dev/input/event0
 quirks debug: /usr/share/share/libinput is data root
 quirks debug: /usr/share/share/libinput/10-generic-keyboard.quirks
 quirks debug: /usr/share/share/libinput/10-generic-lid.quirks
diff --git a/meson.build b/meson.build
index d01c4af9..58e909b6 100644
--- a/meson.build
+++ b/meson.build
@@ -471,21 +471,34 @@ configure_file(input : 'tools/libinput-debug-events.man',
 	       install_dir : join_paths(get_option('mandir'), 'man1')
 	       )
 
-libinput_list_quirks_sources = [ 'tools/libinput-list-quirks.c' ]
-libinput_list_quirks = executable('libinput-list-quirks',
-				  libinput_list_quirks_sources,
-				  dependencies : [dep_libquirks, dep_tools_shared, dep_libinput],
-				  include_directories : [includes_src, includes_include],
-				  install_dir : libinput_tool_path,
-				  install : true
-				 )
+libinput_quirks_sources = [ 'tools/libinput-quirks.c' ]
+libinput_quirks = executable('libinput-quirks',
+			     libinput_quirks_sources,
+			     dependencies : [dep_libquirks, dep_tools_shared, dep_libinput],
+			     include_directories : [includes_src, includes_include],
+			     install_dir : libinput_tool_path,
+			     install : true
+			    )
 test('validate-quirks',
-     libinput_list_quirks,
-     args: ['--validate-only', '--data-dir=@0@'.format(join_paths(meson.source_root(), 'data'))]
+     libinput_quirks,
+     args: ['validate', '--data-dir=@0@'.format(join_paths(meson.source_root(), 'data'))]
      )
 
-configure_file(input : 'tools/libinput-list-quirks.man',
-	       output : 'libinput-list-quirks.1',
+configure_file(input : 'tools/libinput-quirks.man',
+	       output : 'libinput-quirks.1',
+	       configuration : man_config,
+	       install : true,
+	       install_dir : join_paths(get_option('mandir'), 'man1')
+	       )
+# Same man page for the subtools to stay consistent with the other tools
+configure_file(input : 'tools/libinput-quirks.man',
+	       output : 'libinput-quirks-list.1',
+	       configuration : man_config,
+	       install : true,
+	       install_dir : join_paths(get_option('mandir'), 'man1')
+	       )
+configure_file(input : 'tools/libinput-quirks.man',
+	       output : 'libinput-quirks-validate.1',
 	       configuration : man_config,
 	       install : true,
 	       install_dir : join_paths(get_option('mandir'), 'man1')
@@ -544,7 +557,7 @@ configure_file(input : 'tools/libinput-measure-touchpad-tap.man',
 config_builddir = configuration_data()
 config_builddir.set('BUILDDIR', meson.build_root())
 # libinput-measure-touchpad-pressure gets built but we install_data the
-# source instead. The built file is the one that uses the local list-quirks
+# source instead. The built file is the one that uses the local quirks
 # and should be used for debugging.
 install_data('tools/libinput-measure-touchpad-pressure',
 	     install_dir : libinput_tool_path)
@@ -560,7 +573,7 @@ configure_file(input : 'tools/libinput-measure-touchpad-pressure.man',
 	       install_dir : join_paths(get_option('mandir'), 'man1')
 	       )
 # libinput-measure-touch-size gets built but we install_data the source
-# instead. The built file is the one that uses the local list-quirks and
+# instead. The built file is the one that uses the local quirks and
 # should be used for debugging.
 install_data('tools/libinput-measure-touch-size',
 	     install_dir : libinput_tool_path)
diff --git a/tools/libinput-list-quirks.man b/tools/libinput-list-quirks.man
deleted file mode 100644
index e18495f3..00000000
--- a/tools/libinput-list-quirks.man
+++ /dev/null
@@ -1,36 +0,0 @@
-.TH libinput-list-quirks "1" "" "libinput @LIBINPUT_VERSION@" "libinput Manual"
-.SH NAME
-libinput\-list\-quirks \- quirk debug helper for libinput
-.SH SYNOPSIS
-.B libinput list\-quirks [\-\-data\-dir /path/to/dir] [\-\-verbose\fB] \fI/dev/input/event0\fB
-.br
-.B libinput list\-quirks [\-\-data\-dir /path/to/dir] [\-\-verbose\fB] \-\-validate\-only
-.br
-.B libinput list\-quirks [\-\-help]
-.SH DESCRIPTION
-.PP
-The
-.B "libinput list\-quirks"
-tool parses the quirks file in \fIdata\-dir\fR and prints all quirks applied
-to the given device.
-.PP
-This is a debugging tool only, its output and behavior may change at any
-time. Do not rely on the output.
-.SH OPTIONS
-.TP 8
-.B \-\-data\-dir \fI/path/to/dir\fR
-Use the given directory as data directory for quirks files.
-.TP 8
-.B \-\-help
-Print help
-.TP 8
-.B \-\-validate\-only
-Only validate that the quirks files can be parsed. When this option is
-given, no device file should be supplied.
-.TP 8
-.B \-\-verbose
-Use verbose output, useful for debugging.
-.SH LIBINPUT
-Part of the
-.B libinput(1)
-suite
diff --git a/tools/libinput-measure-touch-size b/tools/libinput-measure-touch-size
index 990a72a7..a2624354 100755
--- a/tools/libinput-measure-touch-size
+++ b/tools/libinput-measure-touch-size
@@ -224,12 +224,12 @@ class Device(object):
     def _init_thresholds_from_quirks(self):
         # This is replaced for the version in builddir but left as-is for
         # the installed version. For the builddir one we need to run the
-        # builddir list-quirks
+        # builddir quirks list
         builddir = '@BUILDDIR@'
         if builddir != '@' + 'BUILDDIR' + '@':
-            command = [os.path.join(builddir, 'libinput-list-quirks')]
+            command = [os.path.join(builddir, 'libinput-quirks'), 'list']
         else:
-            command = ['libinput', 'list-quirks']
+            command = ['libinput', 'quirks', 'list']
         command.append(self.path)
         cmd = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
         if cmd.returncode != 0:
diff --git a/tools/libinput-measure-touchpad-pressure b/tools/libinput-measure-touchpad-pressure
index 23ec513b..b842cbd2 100755
--- a/tools/libinput-measure-touchpad-pressure
+++ b/tools/libinput-measure-touchpad-pressure
@@ -202,12 +202,12 @@ class Device(object):
     def _init_thresholds_from_quirks(self):
         # This is replaced for the version in builddir but left as-is for
         # the installed version. For the builddir one we need to run the
-        # builddir list-quirks
+        # builddir quirks list
         builddir = '@BUILDDIR@'
         if builddir != '@' + 'BUILDDIR' + '@':
-            command = [os.path.join(builddir, 'libinput-list-quirks')]
+            command = [os.path.join(builddir, 'libinput-quirks'), 'list']
         else:
-            command = ['libinput', 'list-quirks']
+            command = ['libinput', 'quirks', 'list']
         command.append(self.path)
         cmd = subprocess.run(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
         if cmd.returncode != 0:
diff --git a/tools/libinput-list-quirks.c b/tools/libinput-quirks.c
similarity index 90%
rename from tools/libinput-list-quirks.c
rename to tools/libinput-quirks.c
index 050b505b..88c860e4 100644
--- a/tools/libinput-list-quirks.c
+++ b/tools/libinput-quirks.c
@@ -74,10 +74,10 @@ static void
 usage(void)
 {
 	printf("Usage:\n"
-	       "  libinput list-quirks [--data-dir /path/to/data/dir] /dev/input/event0\n"
+	       "  libinput quirks list [--data-dir /path/to/data/dir] /dev/input/event0\n"
 	       "	Print the quirks for the given device\n"
 	       "\n"
-	       "  libinput list-quirks [--data-dir /path/to/data/dir] --validate-only\n"
+	       "  libinput quirks validate [--data-dir /path/to/data/dir]\n"
 	       "	Validate the database\n");
 }
 
@@ -105,13 +105,11 @@ main(int argc, char **argv)
 		enum {
 			OPT_VERBOSE,
 			OPT_DATADIR,
-			OPT_VALIDATE,
 		};
 		static struct option opts[] = {
 			{ "help",     no_argument,       0, 'h' },
 			{ "verbose",  no_argument,       0, OPT_VERBOSE },
 			{ "data-dir", required_argument, 0, OPT_DATADIR },
-			{ "validate-only", no_argument,  0, OPT_VALIDATE },
 			{ 0, 0, 0, 0}
 		};
 
@@ -133,20 +131,35 @@ main(int argc, char **argv)
 		case OPT_DATADIR:
 			data_path = optarg;
 			break;
-		case OPT_VALIDATE:
-			validate = true;
-			break;
 		default:
 			usage();
 			return 1;
 		}
 	}
 
-	if (optind >= argc && !validate) {
+	if (optind >= argc) {
 		usage();
 		return 1;
 	}
 
+	if (streq(argv[optind], "list")) {
+		optind++;
+		if (optind >= argc) {
+			usage();
+			return 1;
+		}
+	} else if (streq(argv[optind], "validate")) {
+		optind++;
+		if (optind < argc) {
+			usage();
+			return 1;
+		}
+		validate = true;
+	} else {
+		fprintf(stderr, "Unnkown action '%s'\n", argv[optind]);
+		return 1;
+	}
+
 	/* Overriding the data dir means no custom override file */
 	if (!data_path) {
 		data_path = LIBINPUT_DATA_DIR;
diff --git a/tools/libinput-quirks.man b/tools/libinput-quirks.man
new file mode 100644
index 00000000..097dabea
--- /dev/null
+++ b/tools/libinput-quirks.man
@@ -0,0 +1,43 @@
+.TH libinput-quirks "1" "" "libinput @LIBINPUT_VERSION@" "libinput Manual"
+.SH NAME
+libinput\-quirks \- quirk debug helper for libinput
+.SH SYNOPSIS
+.B libinput quirks list [\-\-data\-dir /path/to/dir] [\-\-verbose\fB] \fI/dev/input/event0\fB
+.br
+.sp
+.B libinput quirks validate [\-\-data\-dir /path/to/dir] [\-\-verbose\fB]
+.br
+.sp
+.B libinput quirks \-\-help
+.SH DESCRIPTION
+.PP
+The
+.B "libinput quirks"
+tool interacts with libinput's quirks database.
+.PP
+When invoked as
+.B libinput quirks list,
+the tool lists all quirks applied to the given device.
+.PP
+When invoked as
+.B libinput quirks validate,
+the tool checks for parsing errors in the quirks files and fails
+if a parsing error is encountered.
+.PP
+This is a debugging tool only, its output and behavior may change at any
+time. Do not rely on the output.
+.SH OPTIONS
+.TP 8
+.B \-\-data\-dir \fI/path/to/dir\fR
+Use the given directory as data directory for quirks files. When omitted,
+the default directories are used.
+.TP 8
+.B \-\-help
+Print help
+.TP 8
+.B \-\-verbose
+Use verbose output, useful for debugging.
+.SH LIBINPUT
+Part of the
+.B libinput(1)
+suite
-- 
2.17.1



More information about the wayland-devel mailing list