pySim-shell: Use argparser for verify_adm to support --help

Let's add a proper argparser instance for the 'verify_adm' command,
avoiding situations where the user types 'verif_adm --help' and then
--help is interpreted as the PIN value, removing one more attempt from
the failed ADM1 counter.

Let's use that opportunity to improve the documentation of the command.

Change-Id: I3321fae66a11efd00c53b66c7890fce84796e658
This commit is contained in:
Harald Welte 2023-11-01 23:17:06 +01:00 committed by laforge
parent 0ba3fd996a
commit 469db9393f
2 changed files with 16 additions and 7 deletions

View File

@ -137,10 +137,11 @@ Example:
verify_adm
~~~~~~~~~~
Verify the ADM (Administrator) PIN specified as argument. This is typically needed in order
to get write/update permissions to most of the files on SIM cards.
Currently only ADM1 is supported.
.. argparse::
:module: pySim-shell
:func: PySimCommands.verify_adm_parser
Example (successful):
::

View File

@ -776,11 +776,19 @@ class PySimCommands(CommandSet):
else:
self._cmd.poutput("no description available")
def do_verify_adm(self, arg):
"""VERIFY the ADM1 PIN"""
if arg:
verify_adm_parser = argparse.ArgumentParser()
verify_adm_parser.add_argument('ADM1', nargs='?', type=str,
help='ADM1 pin value. If none given, CSV file will be queried')
@cmd2.with_argparser(verify_adm_parser)
def do_verify_adm(self, opts):
"""Verify the ADM (Administrator) PIN specified as argument. This is typically needed in order
to get write/update permissions to most of the files on SIM cards.
Currently only ADM1 is supported."""
if opts.ADM1:
# use specified ADM-PIN
pin_adm = sanitize_pin_adm(arg)
pin_adm = sanitize_pin_adm(opts.ADM1)
else:
# try to find an ADM-PIN if none is specified
result = card_key_provider_get_field(