When downloading new prds.json, display list of changes - if any.
This commit is contained in:
parent
99b4fd7912
commit
42b499290c
@ -24,9 +24,8 @@ fc.cltp = fc.CLTP.DESKTOP
|
|||||||
|
|
||||||
prdcheck = "" if args.tocheck is None else args.tocheck
|
prdcheck = "" if args.tocheck is None else args.tocheck
|
||||||
|
|
||||||
print("Loading list of devices...", end="", flush=True)
|
print("Loading list of devices.")
|
||||||
prds = tcllib.FotaCheck.get_devicelist()
|
prds = tcllib.FotaCheck.get_devicelist()
|
||||||
print(" OK")
|
|
||||||
|
|
||||||
print("List of latest FULL firmware by PRD:")
|
print("List of latest FULL firmware by PRD:")
|
||||||
|
|
||||||
|
@ -29,9 +29,8 @@ else:
|
|||||||
|
|
||||||
prdcheck = "" if args.tocheck is None else args.tocheck
|
prdcheck = "" if args.tocheck is None else args.tocheck
|
||||||
|
|
||||||
print("Loading list of devices...", end="", flush=True)
|
print("Loading list of devices.")
|
||||||
prds = tcllib.FotaCheck.get_devicelist()
|
prds = tcllib.FotaCheck.get_devicelist()
|
||||||
print(" OK")
|
|
||||||
|
|
||||||
print("List of latest OTA firmware{} by PRD:".format(force_ver_text))
|
print("List of latest OTA firmware{} by PRD:".format(force_ver_text))
|
||||||
|
|
||||||
|
37
tcllib.py
37
tcllib.py
@ -247,25 +247,58 @@ class FotaCheck:
|
|||||||
return hexhash
|
return hexhash
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_devicelist():
|
def get_devicelist(force=False, output_diff=True):
|
||||||
need_download = True
|
need_download = True
|
||||||
|
|
||||||
|
old_prds = None
|
||||||
try:
|
try:
|
||||||
filestat = os.stat(DEVICELIST_FILE)
|
filestat = os.stat(DEVICELIST_FILE)
|
||||||
filemtime = filestat.st_mtime
|
filemtime = filestat.st_mtime
|
||||||
if filemtime > time.time() - DEVICELIST_CACHE_SECONDS:
|
if filemtime > time.time() - DEVICELIST_CACHE_SECONDS:
|
||||||
need_download = False
|
need_download = False
|
||||||
|
with open(DEVICELIST_FILE, "rt") as df:
|
||||||
|
old_prds = json.load(df)
|
||||||
except FileNotFoundError:
|
except FileNotFoundError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
if need_download:
|
if need_download or force:
|
||||||
prds_json = requests.get(DEVICELIST_URL).text
|
prds_json = requests.get(DEVICELIST_URL).text
|
||||||
with open(DEVICELIST_FILE, "wt") as df:
|
with open(DEVICELIST_FILE, "wt") as df:
|
||||||
df.write(prds_json)
|
df.write(prds_json)
|
||||||
|
|
||||||
with open(DEVICELIST_FILE, "rt") as df:
|
with open(DEVICELIST_FILE, "rt") as df:
|
||||||
prds = json.load(df)
|
prds = json.load(df)
|
||||||
|
|
||||||
|
if old_prds and output_diff:
|
||||||
|
FotaCheck.print_prd_diff(old_prds, prds)
|
||||||
|
|
||||||
return prds
|
return prds
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def print_prd_diff(old_prds, new_prds):
|
||||||
|
added_prds = [prd for prd in new_prds if prd not in old_prds]
|
||||||
|
removed_prds = [prd for prd in old_prds if prd not in new_prds]
|
||||||
|
for prd in removed_prds:
|
||||||
|
print("> Removed device {} (was at {} / OTA: {}).".format(ANSI_RED + prd + ANSI_RESET, old_prds[prd]["last_full"], old_prds[prd]["last_ota"]))
|
||||||
|
for prd in added_prds:
|
||||||
|
print("> New device {} ({} / OTA: {}).".format(ANSI_GREEN + prd + ANSI_RESET, new_prds[prd]["last_full"], new_prds[prd]["last_ota"]))
|
||||||
|
for prd, pdata in new_prds.items():
|
||||||
|
if prd in added_prds:
|
||||||
|
continue
|
||||||
|
odata = old_prds[prd]
|
||||||
|
if pdata["last_full"] != odata["last_full"] and pdata["last_ota"] != odata["last_ota"]:
|
||||||
|
print("> {}: {} ⇨ {} (OTA: {} ⇨ {})".format(
|
||||||
|
prd,
|
||||||
|
ANSI_CYAN_DARK + odata["last_full"] + ANSI_RESET,
|
||||||
|
ANSI_CYAN + pdata["last_full"] + ANSI_RESET,
|
||||||
|
ANSI_YELLOW_DARK + odata["last_ota"] + ANSI_RESET,
|
||||||
|
ANSI_YELLOW + pdata["last_ota"] + ANSI_RESET
|
||||||
|
))
|
||||||
|
elif pdata["last_full"] != odata["last_full"]:
|
||||||
|
print("> {}: {} ⇨ {} (FULL)".format(prd, ANSI_CYAN_DARK + odata["last_full"] + ANSI_RESET, ANSI_CYAN + pdata["last_full"] + ANSI_RESET))
|
||||||
|
elif pdata["last_ota"] != odata["last_ota"]:
|
||||||
|
print("> {}: {} ⇨ {} (OTA)".format(prd, ANSI_YELLOW_DARK + odata["last_ota"] + ANSI_RESET, ANSI_YELLOW + pdata["last_ota"] + ANSI_RESET))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_creds():
|
def get_creds():
|
||||||
creds = {
|
creds = {
|
||||||
|
Reference in New Issue
Block a user