Check for TTY existence before prompting
- Dominant language
- Python
- Stars
- 4.6k
- Forks
- 3.5k
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 60
Description
### Describe the bug
I am running an Azure DevOps pipeline, more specifically `az deployment group create`.
The pipeline fails with a simple `ERROR:` and no details whatsoever.
I need to pass `--debug` into Azure CLI in order to get into the details of the error.
```bash
DEBUG: cli.knack.prompting: No tty available.
DEBUG: cli.azure.cli.core.azclierror: Traceback (most recent call last):
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 701, in _run_job
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 334, in __call__
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 121, in handler
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/command_modules/resource/custom.py", line 607, in deploy_arm_template_at_resource_group
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/prompting.py", line 71, in prompt_y_n
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/prompting.py", line 79, in _prompt_bool
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/prompting.py", line 28, in verify_is_a_tty
knack.prompting.NoTTYException
```
As you can see, the Azure CLI finds out there is something missing and will call `knack.prompting` in order to get user input.
Only then, `knack.prompting` will call `verify_is_a_tty` and throws `knack.prompting.NoTTYException`.
### Related command
az deployment group create
### Errors
```bash
DEBUG: cli.knack.prompting: No tty available.
DEBUG: cli.azure.cli.core.azclierror: Traceback (most recent call last):
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 701, in _run_job
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 334, in __call__
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 121, in handler
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/command_modules/resource/custom.py", line 607, in deploy_arm_template_at_resource_group
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/prompting.py", line 71, in prompt_y_n
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/prompting.py", line 79, in _prompt_bool
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/prompting.py", line 28, in verify_is_a_tty
knack.prompting.NoTTYException
```
### Issue script & Debug output
```pwsh
exec {
& az deployment group create (Get-BicepDeploymentArgs) `
--name $deploymentName `
--resource-group $rg_name `
--template-file $bicepFile `
--parameters `
module=$Module `
environment=$Environment `
enable_ingress=$enable_ingress `
enable_dapr=$enable_dapr `
location=$Location `
tags=$tags `
container=$container `
env=$vars `
--verbose `
--debug `
}
cd D:\a\1\s
$deploymentName: dep-mapapi-2024-06-04-09-04-27
$rg_name: al-tp-rg
$bicepFile: ./modules/_lib/ca/main.bicep
$Module: mapapi
$Environment: dev
$enable_ingress: true
$enable_dapr: true
$Location: swedencentral
$tags: {'Partner':'Amban Nordic Oy','CreatedBy':'fv-az372-492\\vssadministrator','Module':'MAPAPI','Created':'2024-06-04','Environment':'DEV'}
$container: [{'Name':'al-tp-mapapi','Image':'acrcaealtpdevswc.azurecr.io/al-tp-mapapi:refs-pull-110-merge','MinReplicas':2,'MaxReplicas':25,'Cpu':'1.75','Memory':'3.50','Scale':{'Http':{'ConcurrentRequests':200}}}]
$vars: [{'name':'Variable','value':'Value'}]
```
```bash
DEBUG: cli.knack.prompting: No tty available.
DEBUG: cli.azure.cli.core.azclierror: Traceback (most recent call last):
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 701, in _run_job
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/__init__.py", line 334, in __call__
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/core/commands/command_operation.py", line 121, in handler
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\azure/cli/command_modules/resource/custom.py", line 607, in deploy_arm_template_at_resource_group
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/prompting.py", line 71, in prompt_y_n
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/prompting.py", line 79, in _prompt_bool
File "D:\a\_work\1\s\build_scripts\windows\artifacts\cli\Lib\site-packages\knack/prompting.py", line 28, in verify_is_a_tty
knack.prompting.NoTTYException
```
### Expected behavior
Azure CLI checks if TTY exists when an argument is missing and simply throws an exception with the missing argument name when TTY cannot be found.
### Environment Summary
```
azure-cli 2.60.0 *
core 2.60.0 *
telemetry 1.1.0
Extensions:
azure-devops 1.0.0
Dependencies:
msal 1.28.0
azure-mgmt-resource 23.1.0b2
```
### Additional context
Azure DevOps, ubuntu-latest and windows-latest.
Contributor guide
Assessment
This issue has not been assessed yet.