From 067a0ce1a72f220ee91ddd29a47a70f9abddc5a2 Mon Sep 17 00:00:00 2001 From: Reiko Asakura Date: Wed, 3 Mar 2021 22:21:18 -0500 Subject: Refactor lint scripts --- scripts/nids-check-digest.py | 52 ++++++++++++++++---------------------------- 1 file changed, 19 insertions(+), 33 deletions(-) (limited to 'scripts/nids-check-digest.py') diff --git a/scripts/nids-check-digest.py b/scripts/nids-check-digest.py index 47a71d2..b386bb3 100644 --- a/scripts/nids-check-digest.py +++ b/scripts/nids-check-digest.py @@ -6,47 +6,33 @@ # Vita Development Suite Libraries # -import sys from hashlib import sha1 from pathlib import Path -from yaml import load -try: - from yaml import CLoader as Loader -except ImportError: - from yaml import SafeLoader as Loader +import nids def name2nid(n, s): digest = sha1((n + s).encode('utf-8')).digest() return int.from_bytes(digest[:4], byteorder='little') -def print_ex_expect(exports, suffix): - for name, nid in exports.items(): - computed_nid = name2nid(name, suffix) +def module_cb(ud, modname, module): + ud[0] = modname + +def library_cb(ud, libname, library): + for suffix in ['', ud[0], libname]: + if library['nid'] == name2nid(libname, suffix): + print(f'{libname} [{suffix}]') + ud[1] = suffix + return + ud[1] = None + +def export_cb(ud, kind, name, nid): + if ud[1] is not None: + computed_nid = name2nid(name, ud[1]) if nid != computed_nid: print(f' {nid:08X} ≠ {computed_nid:08X} {name}') -def print_lib_expect(libname, lib, suffix): - if lib['nid'] == name2nid(libname, suffix): - print(f'{libname} [{suffix}]') - if 'functions' in lib: - print_ex_expect(lib['functions'], suffix) - if 'variables' in lib: - print_ex_expect(lib['variables'], suffix) - return 1 - return 0 - -def check_digest(d): - for c in d.iterdir(): - if c.is_file(): - for modname, mod in load(c.read_bytes(), Loader=Loader)['modules'].items(): - for libname, lib in mod['libraries'].items(): - if not print_lib_expect(libname, lib, ''): - if not print_lib_expect(libname, lib, libname): - print_lib_expect(libname, lib, modname) - elif c.is_dir(): - check_digest(c) - else: - sys.exit("Unexpected file type") - -check_digest(Path('nids')) +def check_digest(f): + nids.process(f, module_cb=module_cb, library_cb=library_cb, export_cb=export_cb, user_data=[None, None]) + +nids.iterdir('nids', check_digest) -- cgit v1.2.3