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:
11
bin/dirmods
11
bin/dirmods
@@ -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)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user