39 lines
915 B
Python
Executable File
39 lines
915 B
Python
Executable File
#!/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()')
|