dirmods: Add option to not recurse

Sometimes we just want to see the modules of a particular directory,
not its subdirectories, so add an option to do so.

Also some minor cleanup on os.path.sep and unicode.

Test: manual
Bug: trivial
Change-Id: Ib22f515ade6c890dfe6c2bb8042c600192ae002c
This commit is contained in:
Atneya Nair
2024-07-16 17:25:29 -07:00
parent 30f3662693
commit 84ac591b53

View File

@@ -32,7 +32,10 @@ import modinfo
def main(): def main():
parser = argparse.ArgumentParser(description=__doc__) parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('path') parser.add_argument('path')
parser.add_argument('--no-recurse', '-n', action='store_true',
help='Do not include modules defined in subdirs of path')
args = parser.parse_args() args = parser.parse_args()
should_recurse = not args.no_recurse
d = os.path.normpath(args.path) d = os.path.normpath(args.path)
# Fix absolute path to be relative to build top # Fix absolute path to be relative to build top
@@ -43,15 +46,15 @@ def main():
if d.startswith(base): if d.startswith(base):
d = d[len(base):] d = d[len(base):]
prefix = d + '/' prefix = d + os.path.sep
module_info = modinfo.ReadModuleInfo() module_info = modinfo.ReadModuleInfo()
results = set() results = set()
for m in module_info.values(): for m in module_info.values():
for path in m.get(u'path', []): for path in m.get('path', []):
if path == d or path.startswith(prefix): if path == d or (should_recurse and path.startswith(prefix)):
name = m.get(u'module_name') name = m.get('module_name')
if name: if name:
results.add(name) results.add(name)