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 <[email protected]>
---
 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

_______________________________________________
wayland-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to