Skip to content

Commit 4c70d71

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

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

proxyclient/m1n1/adt.py

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

680-
def __str__(self, t=""):
680+
def __str__(self, t="", sort_keys=False):
681+
props = self._properties.items()
682+
if sort_keys:
683+
props = sorted(props)
681684
return "\n".join([
682685
t + f"{self.name} {{",
683-
*(t + f" {repr(k)[1:-1]} = {self._fmt_prop(k, v).replace('\n', '\n'+t+' ')}" for k, v in self._properties.items() if k != "name"),
686+
*(t + f" {repr(k)[1:-1]} = {self._fmt_prop(k, v).replace('\n', '\n'+t+' ')}" for k, v in props if k != "name"),
684687
*([""] if self._children else []),
685-
*(i.__str__(t + " ") for i in self._children),
688+
*(i.__str__(t + " ", sort_keys) for i in self._children),
686689
t + "}"
687690
])
688691

@@ -809,6 +812,7 @@ def load_adt(data):
809812
parser = argparse.ArgumentParser(description='ADT test for m1n1')
810813
parser.add_argument('input', type=pathlib.Path)
811814
parser.add_argument('output', nargs='?', type=pathlib.Path)
815+
parser.add_argument('--sort-keys', help='sort property keys within a node (useful for diffs)', action='store_true')
812816
parser.add_argument('-r', '--retrieve', help='retrieve and store the adt from m1n1', action='store_true')
813817
parser.add_argument('-a', '--dump-addr', help='dump address lookup table', action='store_true')
814818
args = parser.parse_args()
@@ -825,7 +829,7 @@ def load_adt(data):
825829
adt_data = args.input.read_bytes()
826830

827831
adt = load_adt(adt_data)
828-
print(adt)
832+
print(adt.__str__(sort_keys=args.sort_keys))
829833
new_data = adt.build()
830834
if args.output is not None:
831835
args.output.write_bytes(new_data)

0 commit comments

Comments
 (0)