File: parser.py

package info (click to toggle)
cloud-init 22.4.2-1%2Bdeb12u3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm-proposed-updates
  • size: 9,088 kB
  • sloc: python: 108,898; sh: 4,091; makefile: 147; xml: 22
file content (47 lines) | stat: -rw-r--r-- 1,386 bytes parent folder | download | duplicates (3)
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
39
40
41
42
43
44
45
46
47
# 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.cmd.devel import hotplug_hook, make_mime, net_convert, render


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 = [
        (
            hotplug_hook.NAME,
            hotplug_hook.__doc__,
            hotplug_hook.get_parser,
            hotplug_hook.handle_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