1# --------------------------------------------------------------------------------------------
2# Copyright (c) Microsoft Corporation. All rights reserved.
3# Licensed under the MIT License. See License.txt in the project root for license information.
4# --------------------------------------------------------------------------------------------
5
6from azure.cli.core import AzCli
7
8
9class DummyCli(AzCli):
10    """A dummy CLI instance can be used to facilitate automation"""
11    def __init__(self, commands_loader_cls=None, **kwargs):
12        import os
13
14        from azure.cli.core import MainCommandsLoader
15        from azure.cli.core.commands import AzCliCommandInvoker
16        from azure.cli.core.azlogging import AzCliLogging
17        from azure.cli.core.cloud import get_active_cloud
18        from azure.cli.core.parser import AzCliCommandParser
19        from azure.cli.core._config import GLOBAL_CONFIG_DIR, ENV_VAR_PREFIX
20        from azure.cli.core._help import AzCliHelp
21        from azure.cli.core._output import AzOutputProducer
22
23        from knack.completion import ARGCOMPLETE_ENV_NAME
24
25        super(DummyCli, self).__init__(
26            cli_name='az',
27            config_dir=GLOBAL_CONFIG_DIR,
28            config_env_var_prefix=ENV_VAR_PREFIX,
29            commands_loader_cls=commands_loader_cls or MainCommandsLoader,
30            parser_cls=AzCliCommandParser,
31            logging_cls=AzCliLogging,
32            output_cls=AzOutputProducer,
33            help_cls=AzCliHelp,
34            invocation_cls=AzCliCommandInvoker)
35
36        self.data['headers'] = {}  # the x-ms-client-request-id is generated before a command is to execute
37        self.data['command'] = 'unknown'
38        self.data['completer_active'] = ARGCOMPLETE_ENV_NAME in os.environ
39        self.data['query_active'] = False
40
41        loader = self.commands_loader_cls(self)
42        setattr(self, 'commands_loader', loader)
43
44        self.cloud = get_active_cloud(self)
45
46    def get_cli_version(self):
47        from azure.cli.core import __version__ as cli_version
48        return cli_version
49