1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# Copyright (C) 2017 Canonical Ltd.
#
# This file is part of cloud-init. See LICENSE file for license information.
"""Define 'devel' subcommand argument parsers to include in cloud-init cmd."""
import argparse
from cloudinit.config import schema
from . import net_convert
from . import render
from . import make_mime
def get_parser(parser=None):
if not parser:
parser = argparse.ArgumentParser(
prog='cloudinit-devel',
description='Run development cloud-init tools')
subparsers = parser.add_subparsers(title='Subcommands', dest='subcommand')
subparsers.required = True
subcmds = [
('schema', 'Validate cloud-config files for document schema',
schema.get_parser, schema.handle_schema_args),
(net_convert.NAME, net_convert.__doc__,
net_convert.get_parser, net_convert.handle_args),
(render.NAME, render.__doc__,
render.get_parser, render.handle_args),
(make_mime.NAME, make_mime.__doc__,
make_mime.get_parser, make_mime.handle_args),
]
for (subcmd, helpmsg, get_parser, handler) in subcmds:
parser = subparsers.add_parser(subcmd, help=helpmsg)
get_parser(parser)
parser.set_defaults(action=(subcmd, handler))
return parser
|