pySim-prog: convert from optparse to argparse
We already use argparse everywhere else, and we have moved reader-driver
argument parsing into the library expecting argparse.
Change-Id: I7407496643247c754d002656688e9fdcbcf644a8
diff --git a/pySim-prog.py b/pySim-prog.py
index 2911b46..3f506de 100755
--- a/pySim-prog.py
+++ b/pySim-prog.py
@@ -25,7 +25,7 @@
#
import hashlib
-from optparse import OptionParser
+import argparse
import os
import random
import re
@@ -35,7 +35,7 @@
import csv
from pySim.commands import SimCardCommands
-from pySim.transport import init_reader
+from pySim.transport import init_reader, argparse_add_reader_args
from pySim.legacy.cards import _cards_classes, card_detect
from pySim.utils import h2b, swap_nibbles, rpad, derive_milenage_opc, calculate_luhn, dec_iccid
from pySim.ts_51_011 import EF_AD
@@ -46,169 +46,146 @@
def parse_options():
- parser = OptionParser(usage="usage: %prog [options]")
+ parser = argparse.ArgumentParser()
+ argparse_add_reader_args(parser)
- parser.add_option("-d", "--device", dest="device", metavar="DEV",
- help="Serial Device for SIM access [default: %default]",
- default="/dev/ttyUSB0",
- )
- parser.add_option("-b", "--baud", dest="baudrate", type="int", metavar="BAUD",
- help="Baudrate used for SIM access [default: %default]",
- default=9600,
- )
- parser.add_option("-p", "--pcsc-device", dest="pcsc_dev", type='int', metavar="PCSC",
- help="Which PC/SC reader number for SIM access",
- default=None,
- )
- parser.add_option("--modem-device", dest="modem_dev", metavar="DEV",
- help="Serial port of modem for Generic SIM Access (3GPP TS 27.007)",
- default=None,
- )
- parser.add_option("--modem-baud", dest="modem_baud", type="int", metavar="BAUD",
- help="Baudrate used for modem's port [default: %default]",
- default=115200,
- )
- parser.add_option("--osmocon", dest="osmocon_sock", metavar="PATH",
- help="Socket path for Calypso (e.g. Motorola C1XX) based reader (via OsmocomBB)",
- default=None,
- )
- parser.add_option("-t", "--type", dest="type",
- help="Card type (user -t list to view) [default: %default]",
+ parser.add_argument("-t", "--type", dest="type",
+ help="Card type (user -t list to view) [default: %(default)s]",
default="auto",
)
- parser.add_option("-T", "--probe", dest="probe",
+ parser.add_argument("-T", "--probe", dest="probe",
help="Determine card type",
default=False, action="store_true"
)
- parser.add_option("-a", "--pin-adm", dest="pin_adm",
+ parser.add_argument("-a", "--pin-adm", dest="pin_adm",
help="ADM PIN used for provisioning (overwrites default)",
)
- parser.add_option("-A", "--pin-adm-hex", dest="pin_adm_hex",
+ parser.add_argument("-A", "--pin-adm-hex", dest="pin_adm_hex",
help="ADM PIN used for provisioning, as hex string (16 characters long",
)
- parser.add_option("-e", "--erase", dest="erase", action='store_true',
- help="Erase beforehand [default: %default]",
+ parser.add_argument("-e", "--erase", dest="erase", action='store_true',
+ help="Erase beforehand [default: %(default)s]",
default=False,
)
- parser.add_option("-S", "--source", dest="source",
- help="Data Source[default: %default]",
+ parser.add_argument("-S", "--source", dest="source",
+ help="Data Source[default: %(default)s]",
default="cmdline",
)
# if mode is "cmdline"
- parser.add_option("-n", "--name", dest="name",
- help="Operator name [default: %default]",
+ parser.add_argument("-n", "--name", dest="name",
+ help="Operator name [default: %(default)s]",
default="Magic",
)
- parser.add_option("-c", "--country", dest="country", type="int", metavar="CC",
- help="Country code [default: %default]",
+ parser.add_argument("-c", "--country", dest="country", type=int, metavar="CC",
+ help="Country code [default: %(default)s]",
default=1,
)
- parser.add_option("-x", "--mcc", dest="mcc", type="string",
- help="Mobile Country Code [default: %default]",
+ parser.add_argument("-x", "--mcc", dest="mcc",
+ help="Mobile Country Code [default: %(default)s]",
default="901",
)
- parser.add_option("-y", "--mnc", dest="mnc", type="string",
- help="Mobile Network Code [default: %default]",
+ parser.add_argument("-y", "--mnc", dest="mnc",
+ help="Mobile Network Code [default: %(default)s]",
default="55",
)
- parser.add_option("--mnclen", dest="mnclen", type="choice",
- help="Length of Mobile Network Code [default: %default]",
+ parser.add_argument("--mnclen", dest="mnclen",
+ help="Length of Mobile Network Code [default: %(default)s]",
default="auto",
choices=["2", "3", "auto"],
)
- parser.add_option("-m", "--smsc", dest="smsc",
+ parser.add_argument("-m", "--smsc", dest="smsc",
help="SMSC number (Start with + for international no.) [default: '00 + country code + 5555']",
)
- parser.add_option("-M", "--smsp", dest="smsp",
+ parser.add_argument("-M", "--smsp", dest="smsp",
help="Raw SMSP content in hex [default: auto from SMSC]",
)
- parser.add_option("-s", "--iccid", dest="iccid", metavar="ID",
+ parser.add_argument("-s", "--iccid", dest="iccid", metavar="ID",
help="Integrated Circuit Card ID",
)
- parser.add_option("-i", "--imsi", dest="imsi",
+ parser.add_argument("-i", "--imsi", dest="imsi",
help="International Mobile Subscriber Identity",
)
- parser.add_option("--msisdn", dest="msisdn",
+ parser.add_argument("--msisdn", dest="msisdn",
help="Mobile Subscriber Integrated Services Digital Number",
)
- parser.add_option("-k", "--ki", dest="ki",
+ parser.add_argument("-k", "--ki", dest="ki",
help="Ki (default is to randomize)",
)
- parser.add_option("-o", "--opc", dest="opc",
+ parser.add_argument("-o", "--opc", dest="opc",
help="OPC (default is to randomize)",
)
- parser.add_option("--op", dest="op",
+ parser.add_argument("--op", dest="op",
help="Set OP to derive OPC from OP and KI",
)
- parser.add_option("--acc", dest="acc",
+ parser.add_argument("--acc", dest="acc",
help="Set ACC bits (Access Control Code). not all card types are supported",
)
- parser.add_option("--opmode", dest="opmode", type="choice",
+ parser.add_argument("--opmode", dest="opmode",
help="Set UE Operation Mode in EF.AD (Administrative Data)",
default=None,
choices=['{:02X}'.format(int(m)) for m in EF_AD.OP_MODE],
)
- parser.add_option("-f", "--fplmn", dest="fplmn", action="append",
+ parser.add_argument("-f", "--fplmn", dest="fplmn", action="append",
help="Set Forbidden PLMN. Add multiple time for multiple FPLMNS",
)
- parser.add_option("--epdgid", dest="epdgid",
+ parser.add_argument("--epdgid", dest="epdgid",
help="Set Home Evolved Packet Data Gateway (ePDG) Identifier. (Only FQDN format supported)",
)
- parser.add_option("--epdgSelection", dest="epdgSelection",
+ parser.add_argument("--epdgSelection", dest="epdgSelection",
help="Set PLMN for ePDG Selection Information. (Only Operator Identifier FQDN format supported)",
)
- parser.add_option("--pcscf", dest="pcscf",
+ parser.add_argument("--pcscf", dest="pcscf",
help="Set Proxy Call Session Control Function (P-CSCF) Address. (Only FQDN format supported)",
)
- parser.add_option("--ims-hdomain", dest="ims_hdomain",
+ parser.add_argument("--ims-hdomain", dest="ims_hdomain",
help="Set IMS Home Network Domain Name in FQDN format",
)
- parser.add_option("--impi", dest="impi",
+ parser.add_argument("--impi", dest="impi",
help="Set IMS private user identity",
)
- parser.add_option("--impu", dest="impu",
+ parser.add_argument("--impu", dest="impu",
help="Set IMS public user identity",
)
- parser.add_option("--read-imsi", dest="read_imsi", action="store_true",
+ parser.add_argument("--read-imsi", dest="read_imsi", action="store_true",
help="Read the IMSI from the CARD", default=False
)
- parser.add_option("--read-iccid", dest="read_iccid", action="store_true",
+ parser.add_argument("--read-iccid", dest="read_iccid", action="store_true",
help="Read the ICCID from the CARD", default=False
)
- parser.add_option("-z", "--secret", dest="secret", metavar="STR",
+ parser.add_argument("-z", "--secret", dest="secret", metavar="STR",
help="Secret used for ICCID/IMSI autogen",
)
- parser.add_option("-j", "--num", dest="num", type=int,
+ parser.add_argument("-j", "--num", dest="num", type=int,
help="Card # used for ICCID/IMSI autogen",
)
- parser.add_option("--batch", dest="batch_mode",
- help="Enable batch mode [default: %default]",
+ parser.add_argument("--batch", dest="batch_mode",
+ help="Enable batch mode [default: %(default)s]",
default=False, action='store_true',
)
- parser.add_option("--batch-state", dest="batch_state", metavar="FILE",
+ parser.add_argument("--batch-state", dest="batch_state", metavar="FILE",
help="Optional batch state file",
)
# if mode is "csv"
- parser.add_option("--read-csv", dest="read_csv", metavar="FILE",
+ parser.add_argument("--read-csv", dest="read_csv", metavar="FILE",
help="Read parameters from CSV file rather than command line")
- parser.add_option("--write-csv", dest="write_csv", metavar="FILE",
+ parser.add_argument("--write-csv", dest="write_csv", metavar="FILE",
help="Append generated parameters in CSV file",
)
- parser.add_option("--write-hlr", dest="write_hlr", metavar="FILE",
+ parser.add_argument("--write-hlr", dest="write_hlr", metavar="FILE",
help="Append generated parameters to OpenBSC HLR sqlite3",
)
- parser.add_option("--dry-run", dest="dry_run",
+ parser.add_argument("--dry-run", dest="dry_run",
help="Perform a 'dry run', don't actually program the card",
default=False, action="store_true")
- parser.add_option("--card_handler", dest="card_handler_config", metavar="FILE",
+ parser.add_argument("--card_handler", dest="card_handler_config", metavar="FILE",
help="Use automatic card handling machine")
- (options, args) = parser.parse_args()
+ options = parser.parse_args()
if options.type == 'list':
for kls in _cards_classes:
@@ -242,9 +219,6 @@
parser.error(
"Can't give ICCID/IMSI for batch mode, need to use automatic parameters ! see --num and --secret for more information")
- if args:
- parser.error("Extraneous arguments")
-
return options