laforge has submitted this change. ( https://gerrit.osmocom.org/c/pysim/+/37895?usp=email )
Change subject: pySim-shell, cosmetic: define positional arguments last ......................................................................
pySim-shell, cosmetic: define positional arguments last
When we define command arguments using the ArgumentParser, we sometimes define the positional arguments first. However, since positional arguments usually follow after the optional (--xyz) arguments, we should define the positional arguments last.
Related: OS#6531 Change-Id: I2412eb6e7dc32ae95a575f31d4489ce210d85ea0 --- M pySim-shell.py M pySim/euicc.py M pySim/filesystem.py M pySim/ts_102_222.py 4 files changed, 14 insertions(+), 14 deletions(-)
Approvals: laforge: Looks good to me, approved Jenkins Builder: Verified
diff --git a/pySim-shell.py b/pySim-shell.py index d166008..cc36485 100755 --- a/pySim-shell.py +++ b/pySim-shell.py @@ -236,9 +236,9 @@ self.equip(card, rs)
apdu_cmd_parser = argparse.ArgumentParser() - apdu_cmd_parser.add_argument('APDU', type=is_hexstr, help='APDU as hex string') apdu_cmd_parser.add_argument('--expect-sw', help='expect a specified status word', type=str, default=None) apdu_cmd_parser.add_argument('--raw', help='Bypass the logical channel (and secure channel)', action='store_true') + apdu_cmd_parser.add_argument('APDU', type=is_hexstr, help='APDU as hex string')
@cmd2.with_argparser(apdu_cmd_parser) def do_apdu(self, opts): @@ -770,13 +770,13 @@ self._cmd.poutput("no description available")
verify_adm_parser = argparse.ArgumentParser() - verify_adm_parser.add_argument('ADM', nargs='?', type=is_hexstr_or_decimal, - help='ADM pin value. If none given, CSV file will be queried') verify_adm_parser.add_argument('--pin-is-hex', action='store_true', help='ADM pin value is specified as hex-string (not decimal)') verify_adm_parser.add_argument('--adm-type', choices=[x for x in pin_names.values() if x.startswith('ADM')], help='Override ADM number. Default is card-model-specific, usually 1') + verify_adm_parser.add_argument('ADM', nargs='?', type=is_hexstr_or_decimal, + help='ADM pin value. If none given, CSV file will be queried')
@cmd2.with_argparser(verify_adm_parser) def do_verify_adm(self, opts): diff --git a/pySim/euicc.py b/pySim/euicc.py index ddfe939..d0cb682 100644 --- a/pySim/euicc.py +++ b/pySim/euicc.py @@ -503,8 +503,8 @@ self._cmd.poutput_json(flatten_dict_lists(d['get_euicc_data']))
set_nickname_parser = argparse.ArgumentParser() - set_nickname_parser.add_argument('ICCID', help='ICCID of the profile whose nickname to set') set_nickname_parser.add_argument('--profile-nickname', help='Nickname of the profile') + set_nickname_parser.add_argument('ICCID', help='ICCID of the profile whose nickname to set')
@cmd2.with_argparser(set_nickname_parser) def do_set_nickname(self, opts): diff --git a/pySim/filesystem.py b/pySim/filesystem.py index d5e99a4..b166bc2 100644 --- a/pySim/filesystem.py +++ b/pySim/filesystem.py @@ -636,9 +636,9 @@ self._cmd.poutput(data)
upd_bin_dec_parser = argparse.ArgumentParser() - upd_bin_dec_parser.add_argument('data', help='Abstract data (JSON format) to write') upd_bin_dec_parser.add_argument('--json-path', type=str, help='JSON path to modify specific element of file only') + upd_bin_dec_parser.add_argument('data', help='Abstract data (JSON format) to write')
@cmd2.with_argparser(upd_bin_dec_parser) def do_update_binary_decoded(self, opts): @@ -839,9 +839,9 @@
read_rec_parser = argparse.ArgumentParser() read_rec_parser.add_argument( - 'record_nr', type=auto_uint8, help='Number of record to be read') - read_rec_parser.add_argument( '--count', type=auto_uint8, default=1, help='Number of records to be read, beginning at record_nr') + read_rec_parser.add_argument( + 'record_nr', type=auto_uint8, help='Number of record to be read')
@cmd2.with_argparser(read_rec_parser) def do_read_record(self, opts): @@ -856,10 +856,10 @@ self._cmd.poutput("%03d %s" % (recnr, recstr))
read_rec_dec_parser = argparse.ArgumentParser() - read_rec_dec_parser.add_argument( - 'record_nr', type=auto_uint8, help='Number of record to be read') read_rec_dec_parser.add_argument('--oneline', action='store_true', help='No JSON pretty-printing, dump as a single line') + read_rec_dec_parser.add_argument( + 'record_nr', type=auto_uint8, help='Number of record to be read')
@cmd2.with_argparser(read_rec_dec_parser) def do_read_record_decoded(self, opts): @@ -909,11 +909,11 @@ self._cmd.poutput(data)
upd_rec_dec_parser = argparse.ArgumentParser() + upd_rec_dec_parser.add_argument('--json-path', type=str, + help='JSON path to modify specific element of record only') upd_rec_dec_parser.add_argument( 'record_nr', type=auto_uint8, help='Number of record to be read') upd_rec_dec_parser.add_argument('data', help='Abstract data (JSON format) to write') - upd_rec_dec_parser.add_argument('--json-path', type=str, - help='JSON path to modify specific element of record only')
@cmd2.with_argparser(upd_rec_dec_parser) def do_update_record_decoded(self, opts): diff --git a/pySim/ts_102_222.py b/pySim/ts_102_222.py index 7c47fd5..30254d1 100644 --- a/pySim/ts_102_222.py +++ b/pySim/ts_102_222.py @@ -103,7 +103,6 @@ (_data, _sw) = self._cmd.lchan.scc.terminate_card_usage()
create_parser = argparse.ArgumentParser() - create_parser.add_argument('FILE_ID', type=is_hexstr, help='File Identifier as 4-character hex string') create_parser._action_groups.pop() create_required = create_parser.add_argument_group('required arguments') create_optional = create_parser.add_argument_group('optional arguments') @@ -115,6 +114,7 @@ create_optional.add_argument('--short-file-id', type=str, help='Short File Identifier as 2-digit hex string') create_optional.add_argument('--shareable', action='store_true', help='Should the file be shareable?') create_optional.add_argument('--record-length', type=auto_uint16, help='Length of each record in octets') + create_parser.add_argument('FILE_ID', type=is_hexstr, help='File Identifier as 4-character hex string')
@cmd2.with_argparser(create_parser) def do_create_ef(self, opts): @@ -150,7 +150,6 @@ self._cmd.lchan.select_file(self._cmd.lchan.selected_file)
createdf_parser = argparse.ArgumentParser() - createdf_parser.add_argument('FILE_ID', type=is_hexstr, help='File Identifier as 4-character hex string') createdf_parser._action_groups.pop() createdf_required = createdf_parser.add_argument_group('required arguments') createdf_optional = createdf_parser.add_argument_group('optional arguments') @@ -165,6 +164,7 @@ createdf_sja_optional.add_argument('--permit-rfm-delete-terminate', action='store_true') createdf_sja_optional.add_argument('--permit-other-applet-create', action='store_true') createdf_sja_optional.add_argument('--permit-other-applet-delete-terminate', action='store_true') + createdf_parser.add_argument('FILE_ID', type=is_hexstr, help='File Identifier as 4-character hex string')
@cmd2.with_argparser(createdf_parser) def do_create_df(self, opts): @@ -201,10 +201,10 @@ self._cmd.lchan.select_file(self._cmd.lchan.selected_file)
resize_ef_parser = argparse.ArgumentParser() - resize_ef_parser.add_argument('NAME', type=str, help='Name or FID of file to be resized') resize_ef_parser._action_groups.pop() resize_ef_required = resize_ef_parser.add_argument_group('required arguments') resize_ef_required.add_argument('--file-size', required=True, type=auto_uint16, help='Size of file in octets') + resize_ef_parser.add_argument('NAME', type=str, help='Name or FID of file to be resized')
@cmd2.with_argparser(resize_ef_parser) def do_resize_ef(self, opts):