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