samba-tool: fetch "no such subcommand" error and print error message
authorBjörn Baumbach <bb@sernet.de>
Tue, 28 Apr 2020 15:09:56 +0000 (17:09 +0200)
committerBjörn Baumbach <bb@sernet.de>
Wed, 29 Apr 2020 08:06:24 +0000 (10:06 +0200)
This patch especially improves the case where extra arguments are used.

Without this patch just the attributes are mentioned as invalid, if
samba-tool is called with an invalid/unknown subcommand.

Example without this patch:
  # samba-tool sites list --all
  Usage: samba-tool sites <subcommand>

  samba-tool sites: error: no such option: --all

This can be deceptive for users. Is looks like the "list" command
does not provide a "--all" option.

Example with this patch:
  # samba-tool sites list --all
  samba-tool sites: no such subcommand: list

  Usage: samba-tool sites <subcommand>
  (...)

Signed-off-by: Björn Baumbach <bb@sernet.de>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
python/samba/netcmd/__init__.py

index 57df46343e953aea114f1ecdbbeed2fdb3395365..620e3751e7f486556748385a126578bc1685319b 100644 (file)
@@ -234,6 +234,9 @@ class SuperCommand(Command):
         if subcommand in self.subcommands:
             return self.subcommands[subcommand]._run(
                 "%s %s" % (myname, subcommand), *args)
+        elif subcommand not in [ '--help', 'help', None ]:
+            print("%s: no such subcommand: %s\n" % (myname, subcommand))
+            args = []
 
         if subcommand == 'help':
             # pass the request down