summaryrefslogtreecommitdiffstats
path: root/hacking/ansible-profile.py
blob: 7016ebe098c679a015e1d6aeea9e3cc8b0e91297 (plain)
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
#!/usr/bin/env python
from __future__ import annotations

import cProfile
import sys
import traceback

from ansible.module_utils.common.text.converters import to_text

target = sys.argv.pop(1)
myclass = "%sCLI" % target.capitalize()
module_name = f'ansible.cli.{target}'

try:
    # define cli
    mycli = getattr(__import__(module_name, fromlist=[myclass]), myclass)
except ImportError as e:
    if module_name in e.msg:
        raise Exception("Ansible sub-program not implemented: %s" % target) from None
    else:
        raise

try:
    args = [to_text(a, errors='surrogate_or_strict') for a in sys.argv]
except UnicodeError:
    sys.stderr.write(u"The full traceback was:\n\n%s" % to_text(traceback.format_exc()))
    sys.exit(u'Command line args are parsable to utf-8')

# init cli
cli = mycli(args)

print(cli.__class__.version_info(gitinfo=True))

# parse args
cli.parse()

# run
cProfile.run('cli.run()')