#!/usr/bin/env python from __future__ import (absolute_import, division, print_function) __metaclass__ = type import cProfile import sys import traceback import ansible.constants as C from ansible.module_utils._text import to_text #__requires__ = ['ansible'] try: import pkg_resources except Exception: # Use pkg_resources to find the correct versions of libraries and set # sys.path appropriately when there are multiversion installs. But we # have code that better expresses the errors in the places where the code # is actually used (the deps are optional for many code paths) so we don't # want to fail here. pass target = sys.argv.pop(1) myclass = "%sCLI" % target.capitalize() try: # define cli mycli = getattr(__import__("ansible.cli.%s" % target, fromlist=[myclass]), myclass) except ImportError as e: msg = getattr(e, 'msg', getattr(e, message, '')) if msg.endswith(' %s' % target): raise Exception("Ansible sub-program not implemented: %s" % target) 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()')