begin to implement subcommand handling
Signed-off-by: Nico Schottelius <nico@kr.ethz.ch>
This commit is contained in:
parent
f4faff6b33
commit
5cbe34ee33
2 changed files with 61 additions and 40 deletions
98
bin/cdist
98
bin/cdist
|
@ -60,10 +60,6 @@ VERSION = "2.0.0"
|
|||
logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s')
|
||||
log = logging.getLogger()
|
||||
|
||||
def banner():
|
||||
"""Guess what :-)"""
|
||||
print(BANNER)
|
||||
|
||||
|
||||
class TypeEmulator:
|
||||
def __init__(self, name):
|
||||
|
@ -602,42 +598,13 @@ class Cdist:
|
|||
self.deploy_to()
|
||||
self.cleanup()
|
||||
|
||||
def banner(*args):
|
||||
"""Guess what :-)"""
|
||||
print(BANNER)
|
||||
sys.exit(0)
|
||||
|
||||
def foo():
|
||||
print("test")
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description='cdist ' + VERSION)
|
||||
parser.add_argument('host', nargs='*', help='one or more hosts to operate on')
|
||||
parser.add_argument('-b', '--banner',
|
||||
help='Show cdist banner',
|
||||
action='store_true', dest='banner')
|
||||
parser.add_argument('-c', '--cdist-home',
|
||||
help='Change cdist home (default: .. from bin directory)',
|
||||
action='store')
|
||||
parser.add_argument('-d', '--debug', help='Set log level to debug',
|
||||
action='store_true')
|
||||
parser.add_argument('-i', '--initial-manifest',
|
||||
help='Path to a cdist manifest or - to read from stdin',
|
||||
dest='manifest', required=False)
|
||||
parser.add_argument('-p', '--parallel',
|
||||
help='Operate on multiple hosts in parallel',
|
||||
action='store_true', dest='parallel')
|
||||
parser.add_argument('-s', '--sequential',
|
||||
help='Operate on multiple hosts sequentially (default)',
|
||||
action='store_false', dest='parallel')
|
||||
parser.add_argument('-V', '--version', help='Show version',
|
||||
action='version', version='%(prog)s ' + VERSION)
|
||||
|
||||
args = parser.parse_args(sys.argv[1:])
|
||||
log.debug(args)
|
||||
if args.debug:
|
||||
logging.root.setLevel(logging.DEBUG)
|
||||
|
||||
if args.banner:
|
||||
banner()
|
||||
sys.exit(0)
|
||||
|
||||
def config(*args, **kargs):
|
||||
"""Configure remote system"""
|
||||
process = {}
|
||||
try:
|
||||
if len(args.host) == 0:
|
||||
|
@ -667,3 +634,56 @@ if __name__ == "__main__":
|
|||
|
||||
except KeyboardInterrupt:
|
||||
sys.exit(0)
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Construct parser others can reuse
|
||||
parser = {}
|
||||
# Options _all_ parsers have in common
|
||||
parser['most'] = argparse.ArgumentParser(add_help=False)
|
||||
parser['most'].add_argument('-d', '--debug',
|
||||
help='Set log level to debug',
|
||||
action='store_true')
|
||||
parser['most'].add_argument('-V', '--version',
|
||||
help='Show version',
|
||||
action='version',
|
||||
version='%(prog)s ' + VERSION)
|
||||
|
||||
# Main subcommand parser
|
||||
parser['main'] = argparse.ArgumentParser(description='cdist ' + VERSION)
|
||||
parser['sub'] = parser['main'].add_subparsers()
|
||||
|
||||
|
||||
parser['banner'] = parser['sub'].add_parser('banner')
|
||||
# parser['banner'].add_argument('all', nargs='*',
|
||||
# help='Show cdist banner')
|
||||
parser['banner'].set_defaults(func=banner)
|
||||
|
||||
parser['config'] = parser['sub'].add_parser('config',
|
||||
aliases=['deploy'],
|
||||
parents=[parser['most']])
|
||||
parser['config'].add_argument('host', nargs='*',
|
||||
help='one or more hosts to operate on')
|
||||
parser['config'].add_argument('-c', '--cdist-home',
|
||||
help='Change cdist home (default: .. from bin directory)',
|
||||
action='store')
|
||||
parser['config'].add_argument('-i', '--initial-manifest',
|
||||
help='Path to a cdist manifest or - to read from stdin',
|
||||
dest='manifest', required=False)
|
||||
parser['config'].add_argument('-p', '--parallel',
|
||||
help='Operate on multiple hosts in parallel',
|
||||
action='store_true', dest='parallel')
|
||||
parser['config'].add_argument('-s', '--sequential',
|
||||
help='Operate on multiple hosts sequentially (default)',
|
||||
action='store_false', dest='parallel')
|
||||
parser['config'].set_defaults(func=config)
|
||||
|
||||
|
||||
args = parser['main'].parse_args(sys.argv[1:])
|
||||
|
||||
# Most subcommands to have --debug, so handle it here
|
||||
if 'debug' in args:
|
||||
if args.debug:
|
||||
logging.root.setLevel(logging.DEBUG)
|
||||
log.debug(args)
|
||||
|
||||
args.func(args)
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
For 2.0.0:
|
||||
|
||||
- support subcommands!
|
||||
deploy? config?
|
||||
config (deploy)
|
||||
install (provision)
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
|
|
Loading…
Reference in a new issue