Skip to content

Commit c8877c3

Browse files
committed
adt: add --sort-nodes option
Signed-off-by: Alba Mendez <[email protected]>
1 parent 4c70d71 commit c8877c3

1 file changed

Lines changed: 7 additions & 3 deletions

File tree

proxyclient/m1n1/adt.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -677,15 +677,18 @@ def _fmt_prop(self, k, v):
677677
else:
678678
return str(v)
679679

680-
def __str__(self, t="", sort_keys=False):
680+
def __str__(self, t="", sort_keys=False, sort_nodes=False):
681681
props = self._properties.items()
682682
if sort_keys:
683683
props = sorted(props)
684+
children = self._children
685+
if sort_nodes:
686+
children = sorted(children, key=lambda n: n.name)
684687
return "\n".join([
685688
t + f"{self.name} {{",
686689
*(t + f" {repr(k)[1:-1]} = {self._fmt_prop(k, v).replace('\n', '\n'+t+' ')}" for k, v in props if k != "name"),
687690
*([""] if self._children else []),
688-
*(i.__str__(t + " ", sort_keys) for i in self._children),
691+
*(i.__str__(t + " ", sort_keys, sort_nodes) for i in children),
689692
t + "}"
690693
])
691694

@@ -813,6 +816,7 @@ def load_adt(data):
813816
parser.add_argument('input', type=pathlib.Path)
814817
parser.add_argument('output', nargs='?', type=pathlib.Path)
815818
parser.add_argument('--sort-keys', help='sort property keys within a node (useful for diffs)', action='store_true')
819+
parser.add_argument('--sort-nodes', help='sort node children by name (useful for diffs)', action='store_true')
816820
parser.add_argument('-r', '--retrieve', help='retrieve and store the adt from m1n1', action='store_true')
817821
parser.add_argument('-a', '--dump-addr', help='dump address lookup table', action='store_true')
818822
args = parser.parse_args()
@@ -829,7 +833,7 @@ def load_adt(data):
829833
adt_data = args.input.read_bytes()
830834

831835
adt = load_adt(adt_data)
832-
print(adt.__str__(sort_keys=args.sort_keys))
836+
print(adt.__str__(sort_keys=args.sort_keys, sort_nodes=args.sort_nodes))
833837
new_data = adt.build()
834838
if args.output is not None:
835839
args.output.write_bytes(new_data)

0 commit comments

Comments
 (0)