File: cligroup.py

package info (click to toggle)
azure-cli 2.83.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 2,346,000 kB
  • sloc: python: 1,930,197; sh: 1,344; makefile: 407; cs: 145; javascript: 74; sql: 37; xml: 21
file content (77 lines) | stat: -rw-r--r-- 2,949 bytes parent folder | download | duplicates (4)
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# --------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.
# --------------------------------------------------------------------------------------------
import copy
from docutils import nodes
from sphinx import addnodes
from sphinx.directives import ObjectDescription
try:
    # Deprecated in 1.6 and removed in 1.7
    from sphinx.util.compat import Directive
except ImportError:
    from docutils.parsers.rst import Directive  # pylint: disable=import-error
from sphinx.util.docfields import Field

cli_field_types = [
        Field('summary', label='Summary', has_arg=False,
                   names=('summary', 'shortdesc')),
        Field('description', label='Description', has_arg=False,
                   names=('description', 'desc', 'longdesc'))
    ]

class CliBaseDirective(ObjectDescription):
    def handle_signature(self, sig, signode):
        signode += addnodes.desc_addname(sig, sig)
        return sig

    def needs_arglist(self):
        return False

    def add_target_and_index(self, name, sig, signode):
        signode['ids'].append(name)

    def get_index_text(self, modname, name):
        return name

class CliGroupDirective(CliBaseDirective):
    doc_field_types = copy.copy(cli_field_types)
    doc_field_types.extend([
        Field('docsource', label='Doc Source', has_arg=False,
                   names=('docsource', 'documentsource')),
        Field('deprecated', label='Deprecated', has_arg=False,
            names=('deprecated'))
    ])

class CliCommandDirective(CliBaseDirective):
    doc_field_types = copy.copy(cli_field_types)
    doc_field_types.extend([
        Field('docsource', label='Doc Source', has_arg=False,
                   names=('docsource', 'documentsource')),
        Field('deprecated', label='Deprecated', has_arg=False,
            names=('deprecated'))
    ])

class CliArgumentDirective(CliBaseDirective):
    doc_field_types = copy.copy(cli_field_types)
    doc_field_types.extend([
        Field('required', label='Required', has_arg=False,
            names=('required')),
        Field('values', label='Allowed values', has_arg=False,
            names=('values', 'choices', 'options')),
        Field('default', label='Default value', has_arg=False,
            names=('default')),
        Field('source', label='Values from', has_arg=False,
            names=('source', 'sources')),
        Field('deprecated', label='Deprecated', has_arg=False,
            names=('deprecated'))
     ])

class CliExampleDirective(CliBaseDirective):
    pass

def setup(app):
    app.add_directive('cligroup', CliGroupDirective)
    app.add_directive('clicommand', CliCommandDirective)
    app.add_directive('cliarg', CliArgumentDirective)
    app.add_directive('cliexample', CliExampleDirective)