xref: /aosp_15_r20/external/fonttools/Lib/fontTools/help.py (revision e1fe3e4ad2793916b15cccdc4a7da52a7e1dd0e9)
1*e1fe3e4aSElliott Hughesimport pkgutil
2*e1fe3e4aSElliott Hughesimport sys
3*e1fe3e4aSElliott Hughesimport fontTools
4*e1fe3e4aSElliott Hughesimport importlib
5*e1fe3e4aSElliott Hughesimport os
6*e1fe3e4aSElliott Hughesfrom pathlib import Path
7*e1fe3e4aSElliott Hughes
8*e1fe3e4aSElliott Hughes
9*e1fe3e4aSElliott Hughesdef main():
10*e1fe3e4aSElliott Hughes    """Show this help"""
11*e1fe3e4aSElliott Hughes    path = fontTools.__path__
12*e1fe3e4aSElliott Hughes    descriptions = {}
13*e1fe3e4aSElliott Hughes    for pkg in sorted(
14*e1fe3e4aSElliott Hughes        mod.name
15*e1fe3e4aSElliott Hughes        for mod in pkgutil.walk_packages([fontTools.__path__[0]], prefix="fontTools.")
16*e1fe3e4aSElliott Hughes    ):
17*e1fe3e4aSElliott Hughes        try:
18*e1fe3e4aSElliott Hughes            imports = __import__(pkg, globals(), locals(), ["main"])
19*e1fe3e4aSElliott Hughes        except ImportError as e:
20*e1fe3e4aSElliott Hughes            continue
21*e1fe3e4aSElliott Hughes        try:
22*e1fe3e4aSElliott Hughes            description = imports.main.__doc__
23*e1fe3e4aSElliott Hughes            if description:
24*e1fe3e4aSElliott Hughes                pkg = pkg.replace("fontTools.", "").replace(".__main__", "")
25*e1fe3e4aSElliott Hughes                # show the docstring's first line only
26*e1fe3e4aSElliott Hughes                descriptions[pkg] = description.splitlines()[0]
27*e1fe3e4aSElliott Hughes        except AttributeError as e:
28*e1fe3e4aSElliott Hughes            pass
29*e1fe3e4aSElliott Hughes    for pkg, description in descriptions.items():
30*e1fe3e4aSElliott Hughes        print("fonttools %-25s %s" % (pkg, description), file=sys.stderr)
31*e1fe3e4aSElliott Hughes
32*e1fe3e4aSElliott Hughes
33*e1fe3e4aSElliott Hughesif __name__ == "__main__":
34*e1fe3e4aSElliott Hughes    print("fonttools v%s\n" % fontTools.__version__, file=sys.stderr)
35*e1fe3e4aSElliott Hughes    main()
36