From f7ddf22d2d4cec0b34fc44d0cfd767c8769e3f90 Mon Sep 17 00:00:00 2001 From: thurask Date: Tue, 30 Jan 2018 12:31:05 -0500 Subject: [PATCH] document all args, describe all parsers, add db shortcut --- tclcheck.py | 8 ++++---- tclcheck_allfull.py | 8 ++++++-- tclcheck_allota.py | 10 +++++++--- tclcheck_findprd.py | 12 ++++++++---- tclcheck_findprd2.py | 6 +++++- tclcheck_findver.py | 12 ++++++++---- tcldown.py | 8 ++++---- tcllib.py | 14 ++++++++++++-- 8 files changed, 54 insertions(+), 24 deletions(-) diff --git a/tclcheck.py b/tclcheck.py index ea9bd33..ab12159 100755 --- a/tclcheck.py +++ b/tclcheck.py @@ -12,18 +12,18 @@ fc = tcllib.FotaCheck() fc.serid = "3531510" #fc.osvs = "7.1.1" -dp = tcllib.DefaultParser(__file__) -dp.description = """ +dpdesc = """ Checks for the latest FULL updates for the specified PRD number or for an OTA from the version specified as fvver. """ +dp = tcllib.DefaultParser(__file__, dpdesc) dp.add_argument("prd", nargs=1, help="CU Reference #, e.g. PRD-63117-011") dp.add_argument("fvver", nargs="?", help="Firmware version to check for OTA updates, e.g. AAM481 (omit to run FULL check)", default="AAA000") dp.add_argument("-i", "--imei", help="use specified IMEI instead of default", type=str) dp.add_argument("-m", "--mode", help="force type of update to check for", default="auto", type=str ,choices=["full", "ota"]) dp.add_argument("-t", "--type", help="force type of check to run", default="auto", type=str, choices=["desktop", "mobile"]) -dp.add_argument("--rawmode", help="override --mode with raw value (2=OTA, 4=FULL)") -dp.add_argument("--rawcltp", help="override --type with raw value (10=MOBILE, 2010=DESKTOP)") +dp.add_argument("--rawmode", help="override --mode with raw value (2=OTA, 4=FULL)", metavar="MODE") +dp.add_argument("--rawcltp", help="override --type with raw value (10=MOBILE, 2010=DESKTOP)", metavar="CLTP") args = dp.parse_args(sys.argv[1:]) def sel_mode(txtmode, autoval, rawval): diff --git a/tclcheck_allfull.py b/tclcheck_allfull.py index a6b2a93..7cb8d11 100644 --- a/tclcheck_allfull.py +++ b/tclcheck_allfull.py @@ -14,8 +14,12 @@ fc.serid = "3531510" fc.fv = "AAA000" fc.mode = fc.MODE.FULL -dp = tcllib.DefaultParser(__file__) -dp.add_argument("-p", "--prd", dest="tocheck", nargs="?", default=None) +dpdesc = """ + Checks for the latest FULL updates for all PRD numbers or only for + the PRD specified as prd. + """ +dp = tcllib.DefaultParser(__file__, dpdesc) +dp.add_argument("-p", "--prd", help="CU Reference # to filter scan results", dest="tocheck", nargs="?", default=None, metavar="PRD") args = dp.parse_args(sys.argv[1:]) # CLTP = 10 (only show actual updates or HTTP 206) / 2010 (always show latest version for MODE.FULL) diff --git a/tclcheck_allota.py b/tclcheck_allota.py index 06a3cec..fa2713b 100644 --- a/tclcheck_allota.py +++ b/tclcheck_allota.py @@ -17,9 +17,13 @@ fc.serid = "3531510" fc.mode = fc.MODE.OTA fc.cltp = fc.CLTP.MOBILE -dp = tcllib.DefaultParser(__file__) -dp.add_argument("forcever", nargs="?", default=None) -dp.add_argument("-p", "--prd", dest="tocheck", nargs="?", default=None) +dpdesc = """ + Checks for the latest OTA updates for all PRD numbers or only for the PRD specified + as prd. Initial software version can be specified with forcever. + """ +dp = tcllib.DefaultParser(__file__, dpdesc) +dp.add_argument("forcever", help="Initial software version to check for OTA updates, e.g. AAM481", nargs="?", default=None) +dp.add_argument("-p", "--prd", help="CU Reference # to filter scan results", dest="tocheck", nargs="?", default=None, metavar="PRD") args = dp.parse_args(sys.argv[1:]) if args.forcever is not None: diff --git a/tclcheck_findprd.py b/tclcheck_findprd.py index d973c73..90cccc6 100755 --- a/tclcheck_findprd.py +++ b/tclcheck_findprd.py @@ -19,10 +19,14 @@ fc.mode = fc.MODE.FULL #fc.cltp = fc.CLTP.MOBILE fc.cltp = fc.CLTP.DESKTOP -dp = tcllib.DefaultParser(__file__) -dp.add_argument("tocheck", nargs="?", default=None) -dp.add_argument("-f", "--floor", dest="floor", nargs="?", type=int, default=0) -dp.add_argument("-c", "--ceiling", dest="ceiling", nargs="?", type=int, default=999) +dpdesc = """ + Finds new PRD numbers for all known variants, or specified variants with tocheck. Scan range + can be set by floor and ceiling switches. + """ +dp = tcllib.DefaultParser(__file__, dpdesc) +dp.add_argument("tocheck", help="CU Reference # to filter scan results", nargs="?", default=None) +dp.add_argument("-f", "--floor", help="Beginning of scan range", dest="floor", nargs="?", type=int, default=0) +dp.add_argument("-c", "--ceiling", help="End of scan range", dest="ceiling", nargs="?", type=int, default=999) args = dp.parse_args(sys.argv[1:]) floor = args.floor diff --git a/tclcheck_findprd2.py b/tclcheck_findprd2.py index 8e5ee44..99f93b4 100644 --- a/tclcheck_findprd2.py +++ b/tclcheck_findprd2.py @@ -22,7 +22,11 @@ fc.mode = fc.MODE.FULL #fc.cltp = fc.CLTP.MOBILE fc.cltp = fc.CLTP.DESKTOP -dp = tcllib.DefaultParser(__file__) +dpdesc = """ + Finds new PRD numbers for a range of variants. Scan range can be set by + floor and ceiling switches. + """ +dp = tcllib.DefaultParser(__file__, dpdesc) dp.add_argument("floor", nargs="?", help="Model number to start with", type=int, default=63116) dp.add_argument("ceiling", nargs="?", help="Model number to end with", type=int, default=99999) args = dp.parse_args(sys.argv[1:]) diff --git a/tclcheck_findver.py b/tclcheck_findver.py index ef92814..e499d17 100755 --- a/tclcheck_findver.py +++ b/tclcheck_findver.py @@ -13,10 +13,14 @@ fc = tcllib.FotaCheck() fc.serid = "3531510" fc.mode = fc.MODE.OTA -dp = tcllib.DefaultParser(__file__) -dp.add_argument("prd") -dp.add_argument("startver", nargs="?", default="AAA000") -dp.add_argument("endver", nargs="?", default="AAZ999") +dpdesc = """ + Finds all valid OTA updates for a given PRD. Scan range can be set by + startver and endver switches. + """ +dp = tcllib.DefaultParser(__file__, dpdesc) +dp.add_argument("prd", help="CU Reference #, e.g. PRD-63117-011") +dp.add_argument("startver", help="Beginning of scan range", nargs="?", default="AAA000") +dp.add_argument("endver", help="End of scan range", nargs="?", default="AAZ999") args = dp.parse_args(sys.argv[1:]) fc.curef = args.prd diff --git a/tcldown.py b/tcldown.py index 0e624b4..64f8a8a 100644 --- a/tcldown.py +++ b/tcldown.py @@ -12,18 +12,18 @@ fc = tcllib.FotaCheck() fc.serid = "3531510" #fc.osvs = "7.1.1" -dp = tcllib.DefaultParser(__file__) -dp.description = """ +dpdesc = """ Downloads the given firmware file. """ +dp = tcllib.DefaultParser(__file__, dpdesc) dp.add_argument("prd", nargs=1, help="CU Reference #, e.g. PRD-63117-011") dp.add_argument("targetversion", nargs=1, help="Firmware version to download, e.g. AAN990") dp.add_argument("fwid", nargs=1, help="Numeric firmware file id, e.g. 268932") dp.add_argument("-o", "--ota", metavar="FROMVERSION", help="download OTA from specified version (switches mode to OTA)", type=str) dp.add_argument("-i", "--imei", help="use specified IMEI instead of default", type=str) dp.add_argument("-t", "--type", help="download device (default to desktop)", default="desktop", type=str, choices=["desktop", "mobile"]) -dp.add_argument("--rawmode", help="override --mode with raw value (2=OTA, 4=FULL)") -dp.add_argument("--rawcltp", help="override --type with raw value (10=MOBILE, 2010=DESKTOP)") +dp.add_argument("--rawmode", help="override --mode with raw value (2=OTA, 4=FULL)", metavar="MODE") +dp.add_argument("--rawcltp", help="override --type with raw value (10=MOBILE, 2010=DESKTOP)", metavar="CLTP") args = dp.parse_args(sys.argv[1:]) def sel_mode(defaultmode, rawval): diff --git a/tcllib.py b/tcllib.py index 4ef6d2c..4fa4c54 100644 --- a/tcllib.py +++ b/tcllib.py @@ -14,6 +14,7 @@ import os import platform import random import time +import webbrowser import xml.dom.minidom import zlib from collections import OrderedDict @@ -57,8 +58,17 @@ def default_enum(enumname, vardict): class DefaultParser(argparse.ArgumentParser): - def __init__(self, appname): - super().__init__(prog=appname.replace(".py", ""), epilog="https://github.com/mbirth/tcl_ota_check") + def __init__(self, appname, desc=None): + super().__init__(prog=appname, description=desc, epilog="https://github.com/mbirth/tcl_ota_check") + self.add_argument("--webdb", help="open web database in browser and exit", action="store_true") + + def parse_args(self, args=None, namespace=None): + if set(args) & {"--webdb"}: # if they intersect + webbrowser.open("https://tclota.birth-online.de/", new=2) + raise SystemExit + else: + argx = super().parse_args(args, namespace) + return argx class FotaCheck: