Bladeren bron

util/prompt: make yes/no prompt reusable

Updates #19445

Signed-off-by: Kristoffer Dalby <[email protected]>
Kristoffer Dalby 8 maanden geleden
bovenliggende
commit
9309760263
4 gewijzigde bestanden met toevoegingen van 29 en 17 verwijderingen
  1. 2 1
      cmd/tailscale/cli/serve_v2.go
  2. 2 16
      cmd/tailscale/cli/update.go
  3. 1 0
      cmd/tailscale/depaware.txt
  4. 24 0
      util/prompt/prompt.go

+ 2 - 1
cmd/tailscale/cli/serve_v2.go

@@ -28,6 +28,7 @@ import (
 	"tailscale.com/ipn/ipnstate"
 	"tailscale.com/tailcfg"
 	"tailscale.com/util/mak"
+	"tailscale.com/util/prompt"
 	"tailscale.com/util/slicesx"
 	"tailscale.com/version"
 )
@@ -757,7 +758,7 @@ func (e *serveEnv) removeWebServe(sc *ipn.ServeConfig, dnsName string, srvPort u
 
 	if len(mounts) > 1 {
 		msg := fmt.Sprintf("Are you sure you want to delete %d handlers under port %s?", len(mounts), portStr)
-		if !e.yes && !promptYesNo(msg) {
+		if !e.yes && !prompt.YesNo(msg) {
 			return nil
 		}
 	}

+ 2 - 16
cmd/tailscale/cli/update.go

@@ -9,10 +9,10 @@ import (
 	"flag"
 	"fmt"
 	"runtime"
-	"strings"
 
 	"github.com/peterbourgon/ff/v3/ffcli"
 	"tailscale.com/clientupdate"
+	"tailscale.com/util/prompt"
 	"tailscale.com/version"
 	"tailscale.com/version/distro"
 )
@@ -87,19 +87,5 @@ func confirmUpdate(ver string) bool {
 	}
 
 	msg := fmt.Sprintf("This will update Tailscale from %v to %v. Continue?", version.Short(), ver)
-	return promptYesNo(msg)
-}
-
-// PromptYesNo takes a question and prompts the user to answer the
-// question with a yes or no. It appends a [y/n] to the message.
-func promptYesNo(msg string) bool {
-	fmt.Print(msg + " [y/n] ")
-	var resp string
-	fmt.Scanln(&resp)
-	resp = strings.ToLower(resp)
-	switch resp {
-	case "y", "yes", "sure":
-		return true
-	}
-	return false
+	return prompt.YesNo(msg)
 }

+ 1 - 0
cmd/tailscale/depaware.txt

@@ -172,6 +172,7 @@ tailscale.com/cmd/tailscale dependencies: (generated by github.com/tailscale/dep
         tailscale.com/util/multierr                                  from tailscale.com/control/controlhttp+
         tailscale.com/util/must                                      from tailscale.com/clientupdate/distsign+
         tailscale.com/util/nocasemaps                                from tailscale.com/types/ipproto
+        tailscale.com/util/prompt                                    from tailscale.com/cmd/tailscale/cli
         tailscale.com/util/quarantine                                from tailscale.com/cmd/tailscale/cli
         tailscale.com/util/rands                                     from tailscale.com/tsweb
         tailscale.com/util/set                                       from tailscale.com/derp+

+ 24 - 0
util/prompt/prompt.go

@@ -0,0 +1,24 @@
+// Copyright (c) Tailscale Inc & AUTHORS
+// SPDX-License-Identifier: BSD-3-Clause
+
+// Package prompt provides a simple way to prompt the user for input.
+package prompt
+
+import (
+	"fmt"
+	"strings"
+)
+
+// YesNo takes a question and prompts the user to answer the
+// question with a yes or no. It appends a [y/n] to the message.
+func YesNo(msg string) bool {
+	fmt.Print(msg + " [y/n] ")
+	var resp string
+	fmt.Scanln(&resp)
+	resp = strings.ToLower(resp)
+	switch resp {
+	case "y", "yes", "sure":
+		return true
+	}
+	return false
+}