Azure / azure-dev

A developer CLI that reduces the time it takes for you to get started on Azure. The Azure Developer CLI (azd) provides a set of developer-friendly commands that map to key stages in your workflow - code, build, deploy, monitor, repeat.
https://aka.ms/azd
MIT License
412 stars 201 forks source link

Can not display option and select option when run `azd init` by GoLand #4311

Open rujche opened 2 months ago

rujche commented 2 months ago

Describe the problem Can not display option and select option when run by GoLand

To Reproduce

  1. Use GoLand to open current project.
  2. Run cli/azd/main.go by GoLand.
  3. It outputs Initializing an app to run on Azure (azd init) How do you want to initialize your app?, but no option displayed.

image

Expected behavior Options displayed and can be selected.

Environment Information on your environment:

weikanglim commented 1 month ago

@rujche I haven't looked into how the goland terminal is implemented, but the auto-TTY detection behavior isn't working as expected.

With #4318, we'll give you the ability to specify AZD_FORCE_TTY=true to ignore the terminal detection logic. The private build should be available for you to test soon. I'll reply back when that's available.

If you have spare time and would love to help us, you can run the code snippet from the library we're using to investigate why the terminal detection logic isn't working as expected -- and what we may want to contribute upstream (issue or code) to fix this behavior.

package main

import (
    "fmt"
    "github.com/mattn/go-isatty"
    "os"
)

func main() {
    if isatty.IsTerminal(os.Stdout.Fd()) {
        fmt.Println("Is Terminal")
    } else if isatty.IsCygwinTerminal(os.Stdout.Fd()) {
        fmt.Println("Is Cygwin/MSYS2 Terminal")
    } else {
        fmt.Println("Is Not Terminal")
    }
}
weikanglim commented 1 month ago

@rujche Feel free to install a private build and set AZD_FORCE_TTY=true to get it working in the Goland terminal.

rujche commented 1 month ago

Hi, @weikanglim

Thanks for the reply. I tried the code above here is the result:

Is Not Terminal

Here is the related screenshot: image

rujche commented 1 month ago

@rujche Feel free to install a private build and set AZD_FORCE_TTY=true to get it working in the Goland terminal.

Hi, @weikanglim After adding the changed in your PR, it returns the new error:

image

weikanglim commented 1 month ago

After adding the changed in your PR, it returns the new error:

It looks like AZD_FORCE_TTY is taking effect, but you may hitting this issue in the survey library we're using in the terminal environment. Perhaps under the covers GoLand Terminal is using a MingW64 bash-for-windows-like variant. Unfortunately, fixing this would likely be along the times of a feature request along the lines of changing our UI library. I wish I had better news here...

Once thing that could help -- there's a new beta GoLand terminal that you could try here. I'm not sure if they changed things underneath that could fix the experience here.

rajeshkamal5050 commented 1 month ago

Issue addressed via #4318

rujche commented 4 weeks ago

Here is current status:

  1. After set AZD_FORCE_TTY=true, it returns error like this:

Image

  1. Even if I changed Terminal to Powershell and "Enabled New Terminal", this problem still exists:

Image

Image

rujche commented 4 weeks ago

/unresolve