This adds a `help` verb (and `--help` option) to the `fonttools` command line tool. Submodules will be listed in the help text if they have an importable `main` function with a docstring, and `main`'s docstring will be used as the one-line description for the help text.
35 lines
844 B
Python
35 lines
844 B
Python
import sys
|
|
|
|
|
|
def main(args=None):
|
|
if args is None:
|
|
args = sys.argv[1:]
|
|
|
|
# TODO Handle library-wide options. Eg.:
|
|
# --unicodedata
|
|
# --verbose / other logging stuff
|
|
|
|
# TODO Allow a way to run arbitrary modules? Useful for setting
|
|
# library-wide options and calling another library. Eg.:
|
|
#
|
|
# $ fonttools --unicodedata=... fontmake ...
|
|
#
|
|
# This allows for a git-like command where thirdparty commands
|
|
# 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]
|
|
|
|
import runpy
|
|
runpy.run_module(mod, run_name='__main__')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main())
|