From b7ac3bc5491fe4dff7d15821c3f33f884741d419 Mon Sep 17 00:00:00 2001 From: Aykhan Shahsuvarov Date: Tue, 3 Sep 2024 02:05:50 +0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A8=20update=20CLIYesOrNoReader=20to?= =?UTF-8?q?=20include=20default=20value?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- readers/cli.go | 20 ++++++++++++++++++-- requests/requests.go | 4 +++- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/readers/cli.go b/readers/cli.go index 8f90cc5..542525b 100644 --- a/readers/cli.go +++ b/readers/cli.go @@ -75,11 +75,27 @@ func CLIConfigReader() (*config.CLIConfig, error) { return cliConfig, nil } -func CLIYesOrNoReader(message string) bool { +// CLIYesOrNoReader reads a yes or no answer from the command line. +// It prompts the user with the given message and default value, +// and returns true if the user answers "y" or "Y", and false otherwise. +// If there is an error while reading the input, it returns false. +// If the user simply presses enter without providing any input, +// it returns the default value specified by the `dft` parameter. +func CLIYesOrNoReader(message string, dft bool) bool { var answer string - fmt.Printf("%s [y/N]: ", message) + defaultMessage := "Y/n" + if !dft { + defaultMessage = "y/N" + } + fmt.Printf("%s [%s]: ", message, defaultMessage) if _, err := fmt.Scanln(&answer); err != nil { + if err.Error() == "unexpected newline" { + return dft + } return false } + if answer == "" { + return dft + } return answer == "y" || answer == "Y" } diff --git a/requests/requests.go b/requests/requests.go index 55106bc..d4ed843 100644 --- a/requests/requests.go +++ b/requests/requests.go @@ -272,7 +272,9 @@ func getClientDoFunc( } activeProxyClientsCount := len(activeProxyClients) var yesOrNoMessage string + var yesOrNoDefault bool if activeProxyClientsCount == 0 { + yesOrNoDefault = false yesOrNoMessage = utils.Colored( utils.Colors.Red, "No active proxies found. Do you want to continue?", @@ -287,7 +289,7 @@ func getClientDoFunc( ) } fmt.Println() - proceed := readers.CLIYesOrNoReader(yesOrNoMessage) + proceed := readers.CLIYesOrNoReader(yesOrNoMessage, yesOrNoDefault) if !proceed { utils.PrintAndExit("Exiting...") }