Skip to content

Instantly share code, notes, and snippets.

@tom-seddon
Created September 5, 2024 13:08
Show Gist options
  • Save tom-seddon/57c667ec75e584b97c713ba53a7fedbc to your computer and use it in GitHub Desktop.
Save tom-seddon/57c667ec75e584b97c713ba53a7fedbc to your computer and use it in GitHub Desktop.
Python command line tool with subparsers skeleton
#!/usr/bin/python3
import sys,os,os.path,argparse
##########################################################################
##########################################################################
g_verbose=False
def pv(msg):
if g_verbose:
sys.stdout.write(msg)
sys.stdout.flush()
##########################################################################
##########################################################################
def fatal(x):
sys.stderr.write('FATAL: %s\n'%x)
sys.exit(1)
##########################################################################
##########################################################################
def main(argv):
parser=argparse.ArgumentParser()
parser.add_argument('-v','--verbose',dest='g_verbose',action='store_true',help='''be more verbose''')
parser.set_defaults(fun=None)
subparsers=parser.add_subparsers()
def add_subparser(fun,name,**kwargs):
subparser=subparsers.add_parser(name,**kwargs)
subparser.set_defaults(fun=fun)
return subparser
options=parser.parse_args(argv[1:])
if options.fun is None:
parser.print_help()
sys.exit(1)
global g_verbose
g_verbose=options.g_verbose
options.fun(options)
##########################################################################
##########################################################################
if __name__=='__main__': main(sys.argv)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment