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