diff --git a/Lib/fontTools/__main__.py b/Lib/fontTools/__main__.py index ba09c7fc6..9b978aaa7 100644 --- a/Lib/fontTools/__main__.py +++ b/Lib/fontTools/__main__.py @@ -5,8 +5,6 @@ def main(args=None): if args is None: args = sys.argv[1:] - # TODO Add help output, --help, etc. - # TODO Handle library-wide options. Eg.: # --unicodedata # --verbose / other logging stuff @@ -20,6 +18,10 @@ def main(args=None): # can be added. Should we just try importing the fonttools # module first and try without if it fails? + if len(sys.argv) < 2: + sys.argv.append("help") + if sys.argv[1] == "-h" or sys.argv[1] == "--help": + sys.argv[1] = "help" mod = 'fontTools.'+sys.argv[1] sys.argv[1] = sys.argv[0] + ' ' + sys.argv[1] del sys.argv[0] diff --git a/Lib/fontTools/cu2qu/__main__.py b/Lib/fontTools/cu2qu/__main__.py index 084bf8f96..32715062f 100644 --- a/Lib/fontTools/cu2qu/__main__.py +++ b/Lib/fontTools/cu2qu/__main__.py @@ -1,3 +1,4 @@ +"""Convert a UFO font with cubic curves to quadratic curves""" import sys from .cli import main diff --git a/Lib/fontTools/feaLib/__main__.py b/Lib/fontTools/feaLib/__main__.py index b69307e84..81ba360ac 100644 --- a/Lib/fontTools/feaLib/__main__.py +++ b/Lib/fontTools/feaLib/__main__.py @@ -1,3 +1,4 @@ +"""Add features from a feature file (.fea) into a OTF font""" from fontTools.misc.py23 import * from fontTools.ttLib import TTFont from fontTools.feaLib.builder import addOpenTypeFeatures, Builder diff --git a/Lib/fontTools/help/__init__.py b/Lib/fontTools/help/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/Lib/fontTools/help/__main__.py b/Lib/fontTools/help/__main__.py new file mode 100644 index 000000000..97237e449 --- /dev/null +++ b/Lib/fontTools/help/__main__.py @@ -0,0 +1,35 @@ +"""Show this help""" +import pkgutil +import sys +from setuptools import find_packages +from pkgutil import iter_modules +import fontTools +import importlib + + +def get_description(pkg): + try: + return __import__(pkg+".__main__",globals(),locals(),["__doc__"]).__doc__ + except Exception as e: + return None + +def show_help_list(): + path = fontTools.__path__[0] + for pkg in find_packages(path): + qualifiedPkg = "fontTools."+pkg + description = get_description(qualifiedPkg) + if description: + print("fontools %-10s %s" % (pkg, description)) + pkgpath = path + '/' + qualifiedPkg.replace('.', '/') + if (sys.version_info.major == 3 and sys.version_info.minor < 6): + for _, name, ispkg in iter_modules([pkgpath]): + if get_description(pkg+ '.' + name): + modules.add(pkg + '.' + name) + else: + for info in iter_modules([pkgpath]): + if get_description(pkg+ '.' + info.name): + modules.add(pkg + '.' + info.name) + +if __name__ == '__main__': + print("fonttools v%s\n" % fontTools.__version__) + show_help_list() diff --git a/Lib/fontTools/mtiLib/__main__.py b/Lib/fontTools/mtiLib/__main__.py index eacfefd59..0d4183b54 100644 --- a/Lib/fontTools/mtiLib/__main__.py +++ b/Lib/fontTools/mtiLib/__main__.py @@ -1,6 +1,8 @@ +"""Convert Monotype FontDame layout files to TTX""" from fontTools.misc.py23 import * import sys from fontTools.mtiLib import main + if __name__ == '__main__': sys.exit(main()) diff --git a/Lib/fontTools/subset/__main__.py b/Lib/fontTools/subset/__main__.py index 3f3d894a0..e1d9f123a 100644 --- a/Lib/fontTools/subset/__main__.py +++ b/Lib/fontTools/subset/__main__.py @@ -1,6 +1,8 @@ +"""OpenType font subsetter and optimizer""" from fontTools.misc.py23 import * import sys from fontTools.subset import main + if __name__ == '__main__': sys.exit(main()) diff --git a/Lib/fontTools/varLib/__main__.py b/Lib/fontTools/varLib/__main__.py index 29657401d..c147b4980 100644 --- a/Lib/fontTools/varLib/__main__.py +++ b/Lib/fontTools/varLib/__main__.py @@ -1,5 +1,7 @@ +"""Build a variable font from a designspace file and masters""" import sys from fontTools.varLib import main + if __name__ == '__main__': sys.exit(main())