Compare commits

...

12 Commits

Author SHA1 Message Date
Gopher Robot
5d2308b09d go.mod: update golang.org/x dependencies
Update golang.org/x dependencies to their latest tagged versions.

Change-Id: I84956d670066c4699c9f1167d8d5f64111108109
Reviewed-on: https://go-review.googlesource.com/c/term/+/663095
Auto-Submit: Gopher Robot <gobot@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: David Chase <drchase@google.com>
2025-04-05 17:33:08 -07:00
Dragos Vingarzan
e770dddbf5 x/term: disabling auto-completion around GetPassword()
Triggering the completion during password input might cause some
unintended behavior around handling of TAB, or maybe the auto-completion
functionality would review the secret input. Hence simply
disabling/re-enabling it around the t.readLine call.

Fixes #72736

Change-Id: I64270e8570086247247466afb2536b2581d6af25
Reviewed-on: https://go-review.googlesource.com/c/term/+/607115
Reviewed-by: David Chase <drchase@google.com>
Reviewed-by: Keith Randall <khr@google.com>
Auto-Submit: Sean Liao <sean@liao.dev>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2025-03-15 12:59:10 -07:00
Gopher Robot
04218fdaf7 go.mod: update golang.org/x dependencies
Update golang.org/x dependencies to their latest tagged versions.

Change-Id: Iaed852644381f73352fe26488aa2eb82f4b68c4e
Reviewed-on: https://go-review.googlesource.com/c/term/+/655035
Auto-Submit: Gopher Robot <gobot@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: David Chase <drchase@google.com>
2025-03-05 07:52:00 -08:00
Gopher Robot
208db03875 all: upgrade go directive to at least 1.23.0 [generated]
By now Go 1.24.0 has been released, and Go 1.22 is no longer supported
per the Go Release Policy (https://go.dev/doc/devel/release#policy).

For golang/go#69095.

[git-generate]
(cd . && go get go@1.23.0 && go mod tidy && go fix ./... && go mod edit -toolchain=none)

Change-Id: Ia92133521e64a509dbf90ea4945a0c943b961cb2
Reviewed-on: https://go-review.googlesource.com/c/term/+/649398
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Auto-Submit: Gopher Robot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
2025-02-14 13:48:08 -08:00
Gopher Robot
743b2709ab go.mod: update golang.org/x dependencies
Update golang.org/x dependencies to their latest tagged versions.

Change-Id: I1c2871da2bcfe6bb1f4121a8f189334331c04c22
Reviewed-on: https://go-review.googlesource.com/c/term/+/646217
Reviewed-by: David Chase <drchase@google.com>
Auto-Submit: Gopher Robot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2025-02-04 07:50:00 -08:00
Gopher Robot
40b02d69cd go.mod: update golang.org/x dependencies
Update golang.org/x dependencies to their latest tagged versions.

Change-Id: Ib4be7af15f194517725e80dde8b52ce59dce04c9
Reviewed-on: https://go-review.googlesource.com/c/term/+/640357
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Auto-Submit: Gopher Robot <gobot@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
2025-01-04 17:14:59 -08:00
Gopher Robot
442846aa8d go.mod: update golang.org/x dependencies
Update golang.org/x dependencies to their latest tagged versions.

Change-Id: I8348c05748f22f6b6701a197b29e8b6dba837d0d
Reviewed-on: https://go-review.googlesource.com/c/term/+/633476
Auto-Submit: Gopher Robot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
2024-12-04 16:04:05 +00:00
Gopher Robot
b725e362a8 go.mod: update golang.org/x dependencies
Update golang.org/x dependencies to their latest tagged versions.

Change-Id: I4ba440821ddd8ce48c2658e67836ff4fbcdd258d
Reviewed-on: https://go-review.googlesource.com/c/term/+/626355
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Auto-Submit: Gopher Robot <gobot@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: David Chase <drchase@google.com>
2024-11-07 21:27:26 +00:00
Ian Lance Taylor
54df7da90d README: don't recommend go get
These days people will just import the packages and the go tool will
do the right thing. We don't need to explain it.

Add a pointer to the git repo, though.

For golang/go#62645

Change-Id: I641439c4fa02391fb77b05d639d6815094724a3a
Reviewed-on: https://go-review.googlesource.com/c/term/+/624216
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Commit-Queue: Ian Lance Taylor <iant@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-11-02 04:18:10 +00:00
Gopher Robot
9d5441ab55 go.mod: update golang.org/x dependencies
Update golang.org/x dependencies to their latest tagged versions.

Change-Id: I1fc21941bdc8066f3a8d24afdf16e6e10bceaf55
Reviewed-on: https://go-review.googlesource.com/c/term/+/617955
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: David Chase <drchase@google.com>
Auto-Submit: Gopher Robot <gobot@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
2024-10-04 14:58:26 +00:00
Gopher Robot
2f7b0dd743 go.mod: update golang.org/x dependencies
Update golang.org/x dependencies to their latest tagged versions.

Change-Id: Ia875ad082f993ce02f2cf97d6d3b318091360433
Reviewed-on: https://go-review.googlesource.com/c/term/+/610637
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Michael Pratt <mpratt@google.com>
Auto-Submit: Gopher Robot <gobot@golang.org>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
2024-09-04 14:37:52 +00:00
Laurent Demailly
f867b7695b x/term: set missing VIRTUAL_TERMINAL_INPUT flag on Windows
With this change the arrow keys work with Windows 11 Terminal

After verifying https://github.com/containerd/console did work fine, unlike x/term, it's because they have:
https://github.com/containerd/console/blob/v1.0.4/console_windows.go#L194
using the same flag fixed x/term for my program

Small e2e test reproducing the issue and showing it being fixed can be ran using

go run fortio.org/terminal/example@v0.6.0  # has the fix (or @latest)

go run fortio.org/terminal/example@v0.5.1  -history .history # does not have working arrow keys/this fix

Fixes golang/go#68830

Change-Id: If20addd054c76b889a52f933695467812be72306
GitHub-Last-Rev: 68e3ca0e19
GitHub-Pull-Request: golang/term#17
Reviewed-on: https://go-review.googlesource.com/c/term/+/603960
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Ian Lance Taylor <iant@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Commit-Queue: Ian Lance Taylor <iant@google.com>
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
2024-08-24 00:22:51 +00:00
6 changed files with 44 additions and 11 deletions

View File

@@ -4,16 +4,13 @@
This repository provides Go terminal and console support packages.
## Download/Install
The easiest way to install is to run `go get -u golang.org/x/term`. You can
also manually git clone the repository to `$GOPATH/src/golang.org/x/term`.
## Report Issues / Send Patches
This repository uses Gerrit for code changes. To learn how to submit changes to
this repository, see https://golang.org/doc/contribute.html.
this repository, see https://go.dev/doc/contribute.
The git repository is https://go.googlesource.com/term.
The main issue tracker for the term repository is located at
https://github.com/golang/go/issues. Prefix your issue with "x/term:" in the
https://go.dev/issues. Prefix your issue with "x/term:" in the
subject line, so it is easy to find.

4
go.mod
View File

@@ -1,5 +1,5 @@
module golang.org/x/term
go 1.18
go 1.23.0
require golang.org/x/sys v0.23.0
require golang.org/x/sys v0.32.0

4
go.sum
View File

@@ -1,2 +1,2 @@
golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM=
golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=

View File

@@ -26,6 +26,7 @@ func makeRaw(fd int) (*State, error) {
return nil, err
}
raw := st &^ (windows.ENABLE_ECHO_INPUT | windows.ENABLE_PROCESSED_INPUT | windows.ENABLE_LINE_INPUT | windows.ENABLE_PROCESSED_OUTPUT)
raw |= windows.ENABLE_VIRTUAL_TERMINAL_INPUT
if err := windows.SetConsoleMode(windows.Handle(fd), raw); err != nil {
return nil, err
}

View File

@@ -44,6 +44,8 @@ type Terminal struct {
// bytes, as an index into |line|). If it returns ok=false, the key
// press is processed normally. Otherwise it returns a replacement line
// and the new cursor position.
//
// This will be disabled during ReadPassword.
AutoCompleteCallback func(line string, pos int, key rune) (newLine string, newPos int, ok bool)
// Escape contains a pointer to the escape codes for this terminal.
@@ -692,6 +694,8 @@ func (t *Terminal) Write(buf []byte) (n int, err error) {
// ReadPassword temporarily changes the prompt and reads a password, without
// echo, from the terminal.
//
// The AutoCompleteCallback is disabled during this call.
func (t *Terminal) ReadPassword(prompt string) (line string, err error) {
t.lock.Lock()
defer t.lock.Unlock()
@@ -699,6 +703,11 @@ func (t *Terminal) ReadPassword(prompt string) (line string, err error) {
oldPrompt := t.prompt
t.prompt = []rune(prompt)
t.echo = false
oldAutoCompleteCallback := t.AutoCompleteCallback
t.AutoCompleteCallback = nil
defer func() {
t.AutoCompleteCallback = oldAutoCompleteCallback
}()
line, err = t.readLine()

View File

@@ -396,6 +396,32 @@ func TestReadPasswordLineEnd(t *testing.T) {
}
}
func MockAutoCompleteCallback(line string, pos int, key rune) (newLine string, newPos int, ok bool) {
return "not-good", pos, true
}
func TestReadPasswordDisabledAutoCompleteCallback(t *testing.T) {
input := "testgood\ranother line\r"
expectedPassword := "testgood"
terminal := NewTerminal(
&MockTerminal{
toSend: []byte(input),
bytesPerRead: 1,
},
"prompt")
terminal.AutoCompleteCallback = MockAutoCompleteCallback
password, err := terminal.ReadPassword("Password: ")
if err != nil {
t.Fatalf("failed to read password: %v", err)
}
if password != expectedPassword {
t.Fatalf("failed to read password, got %q", password)
}
if terminal.AutoCompleteCallback == nil {
t.Fatalf("AutoCompleteCallback should not be nil after ReadPassword")
}
}
func TestMakeRawState(t *testing.T) {
fd := int(os.Stdout.Fd())
if !IsTerminal(fd) {