Merge pull request #558 from geeksville/pr-fixjson

Pretty indent --info JSON output (see below for details)
This commit is contained in:
Ian McEwen
2024-04-28 21:40:43 -07:00
committed by GitHub
3 changed files with 8 additions and 6 deletions

View File

@@ -134,7 +134,7 @@ class MeshInterface:
# use id as dictionary key for correct json format in list of nodes
nodeid = n2["user"]["id"]
nodes[nodeid] = n2
infos = owner + myinfo + metadata + mesh + json.dumps(nodes)
infos = owner + myinfo + metadata + mesh + json.dumps(nodes, indent=2)
print(infos)
return infos

View File

@@ -64,11 +64,11 @@ class Node:
"""Show human readable description of our node"""
prefs = ""
if self.localConfig:
prefs = message_to_json(self.localConfig)
prefs = message_to_json(self.localConfig, multiline=True)
print(f"Preferences: {prefs}\n")
prefs = ""
if self.moduleConfig:
prefs = message_to_json(self.moduleConfig)
prefs = message_to_json(self.moduleConfig, multiline=True)
print(f"Module preferences: {prefs}\n")
self.showChannels()

View File

@@ -627,6 +627,8 @@ def check_if_newer_version():
return pypi_version
def message_to_json(message):
"Return protobuf message as JSON. Always print all fields, even when not present in data."
return stripnl(MessageToJson(message, always_print_fields_with_no_presence=True))
def message_to_json(message, multiline=False):
"""Return protobuf message as JSON. Always print all fields, even when not present in data."""
json = MessageToJson(message, always_print_fields_with_no_presence=True)
return stripnl(json) if not multiline else json