From 9752d01884e503a1380e820c60cfc649a067555e Mon Sep 17 00:00:00 2001 From: Egon Elbre Date: Tue, 25 Feb 2020 13:00:31 +0200 Subject: [PATCH] private/prompt: remove dependency to go-prompt Change-Id: Ida8ef731ce806cec076343dc77d72a3b0d7736b4 --- cmd/gateway/go.mod | 1 + cmd/gateway/go.sum | 6 ++++-- cmd/inspector/main.go | 8 ++++++-- cmd/storagenode/gracefulexit.go | 8 ++++++-- go.mod | 2 -- go.sum | 4 ---- private/prompt/confirm.go | 36 +++++++++++++++++++++++++++++++++ 7 files changed, 53 insertions(+), 12 deletions(-) create mode 100644 private/prompt/confirm.go diff --git a/cmd/gateway/go.mod b/cmd/gateway/go.mod index 9801c0398..a62b305ac 100644 --- a/cmd/gateway/go.mod +++ b/cmd/gateway/go.mod @@ -27,6 +27,7 @@ require ( github.com/hashicorp/go-immutable-radix v1.0.0 // indirect github.com/hashicorp/go-msgpack v0.5.3 // indirect github.com/hashicorp/raft v1.0.0 // indirect + github.com/howeyc/gopass v0.0.0-20190910152052-7cb4b85ec19c // indirect github.com/inconshreveable/go-update v0.0.0-20160112193335-8152e7eb6ccf // indirect github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e // indirect github.com/klauspost/reedsolomon v0.0.0-20180704173009-925cb01d6510 // indirect diff --git a/cmd/gateway/go.sum b/cmd/gateway/go.sum index a496be8eb..375405bb2 100644 --- a/cmd/gateway/go.sum +++ b/cmd/gateway/go.sum @@ -197,8 +197,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/raft v1.0.0 h1:htBVktAOtGs4Le5Z7K8SF5H2+oWsQFYVmOgH5loro7Y= github.com/hashicorp/raft v1.0.0/go.mod h1:DVSAWItjLjTOkVbSpWQ0j0kUADIvDaCtBxIcbNAQLkI= -github.com/howeyc/gopass v0.0.0-20170109162249-bf9dde6d0d2c h1:kQWxfPIHVLbgLzphqk3QUflDy9QdksZR4ygR807bpy0= -github.com/howeyc/gopass v0.0.0-20170109162249-bf9dde6d0d2c/go.mod h1:lADxMC39cJJqL93Duh1xhAs4I2Zs8mKS89XWXFGp9cs= +github.com/howeyc/gopass v0.0.0-20190910152052-7cb4b85ec19c h1:aY2hhxLhjEAbfXOx2nRJxCXezC6CO2V/yN+OCr1srtk= +github.com/howeyc/gopass v0.0.0-20190910152052-7cb4b85ec19c/go.mod h1:lADxMC39cJJqL93Duh1xhAs4I2Zs8mKS89XWXFGp9cs= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/inconshreveable/go-update v0.0.0-20160112193335-8152e7eb6ccf h1:WfD7VjIE6z8dIvMsI4/s+1qr5EL+zoIGev1BQj1eoJ8= @@ -219,6 +219,8 @@ github.com/jtolds/monkit-hw/v2 v2.0.0-20191108235325-141a0da276b3 h1:dITCBge70U9 github.com/jtolds/monkit-hw/v2 v2.0.0-20191108235325-141a0da276b3/go.mod h1:eo5po8nCwRcvZIIR8eGi7PKthzXuunpXzUmXzxCBfBc= github.com/jtolds/tracetagger/v2 v2.0.0-rc2 h1:pxmt5o+WRYffMwMYuFlI3wKwYbPVAyiX8EEyM8a/U7o= github.com/jtolds/tracetagger/v2 v2.0.0-rc2/go.mod h1:EeqZ0b80feEwRK+FutrQ/GJxruNqamJBKOezZVfzSxA= +github.com/jtolds/tracetagger/v2 v2.0.0-rc3 h1:I7OKb1wBTqhyKe135DoumYG5TiuHZR0Ab554R1/8sAQ= +github.com/jtolds/tracetagger/v2 v2.0.0-rc3/go.mod h1:EeqZ0b80feEwRK+FutrQ/GJxruNqamJBKOezZVfzSxA= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= diff --git a/cmd/inspector/main.go b/cmd/inspector/main.go index 6f75dd579..939dfb22d 100644 --- a/cmd/inspector/main.go +++ b/cmd/inspector/main.go @@ -14,7 +14,6 @@ import ( "strings" "time" - prompt "github.com/segmentio/go-prompt" "github.com/spf13/cobra" "github.com/zeebo/errs" @@ -23,6 +22,7 @@ import ( "storj.io/common/rpc" "storj.io/common/storj" "storj.io/storj/pkg/process" + "storj.io/storj/private/prompt" "storj.io/uplink/private/eestream" ) @@ -434,7 +434,11 @@ func getSegments(cmd *cobra.Command, args []string) error { length := int32(len(res.Segments)) if length >= irreparableLimit { - if !prompt.Confirm("\nNext page? (y/n)") { + confirmed, err := prompt.Confirm("\nNext page? [y/n]") + if err != nil { + return err + } + if !confirmed { break } } diff --git a/cmd/storagenode/gracefulexit.go b/cmd/storagenode/gracefulexit.go index 6afe0d82e..eec40b68d 100644 --- a/cmd/storagenode/gracefulexit.go +++ b/cmd/storagenode/gracefulexit.go @@ -12,7 +12,6 @@ import ( "strings" "text/tabwriter" - "github.com/segmentio/go-prompt" "github.com/spf13/cobra" "github.com/zeebo/errs" "go.uber.org/zap" @@ -22,6 +21,7 @@ import ( "storj.io/common/rpc" "storj.io/common/storj" "storj.io/storj/pkg/process" + "storj.io/storj/private/prompt" ) type gracefulExitClient struct { @@ -63,7 +63,11 @@ func cmdGracefulExitInit(cmd *cobra.Command, args []string) error { } // display warning message - if !prompt.Confirm("Please be aware that by starting a graceful exit from a satellite, you will no longer be allowed to participate in repairs or uploads from that satellite. This action can not be undone. Are you sure you want to continue? y/n\n") { + confirmed, err := prompt.Confirm("By starting a graceful exit from a satellite, you will no longer receive new uploads from that satellite.\nThis action can not be undone.\nAre you sure you want to continue? [y/n]\n") + if err != nil { + return err + } + if !confirmed { return nil } diff --git a/go.mod b/go.mod index bf1c95af9..cc747d580 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,6 @@ require ( github.com/google/go-cmp v0.3.0 github.com/gorilla/mux v1.7.1 github.com/gorilla/schema v1.1.0 - github.com/howeyc/gopass v0.0.0-20170109162249-bf9dde6d0d2c // indirect github.com/jackc/pgx v3.2.0+incompatible github.com/jtolds/go-luar v0.0.0-20170419063437-0786921db8c0 github.com/jtolds/monkit-hw/v2 v2.0.0-20191108235325-141a0da276b3 @@ -36,7 +35,6 @@ require ( github.com/mattn/go-sqlite3 v2.0.2+incompatible github.com/nsf/jsondiff v0.0.0-20160203110537-7de28ed2b6e3 github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d - github.com/segmentio/go-prompt v1.2.1-0.20161017233205-f0d19b6901ad github.com/shopspring/decimal v0.0.0-20200105231215-408a2507e114 github.com/skyrings/skyring-common v0.0.0-20160929130248-d1c0bb1cbd5e github.com/spacemonkeygo/monkit/v3 v3.0.1 diff --git a/go.sum b/go.sum index ad081656b..6c85b7029 100644 --- a/go.sum +++ b/go.sum @@ -165,8 +165,6 @@ github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/howeyc/gopass v0.0.0-20170109162249-bf9dde6d0d2c h1:kQWxfPIHVLbgLzphqk3QUflDy9QdksZR4ygR807bpy0= -github.com/howeyc/gopass v0.0.0-20170109162249-bf9dde6d0d2c/go.mod h1:lADxMC39cJJqL93Duh1xhAs4I2Zs8mKS89XWXFGp9cs= github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= @@ -277,8 +275,6 @@ github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6So github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/segmentio/go-prompt v1.2.1-0.20161017233205-f0d19b6901ad h1:EqOdoSJGI7CsBQczPcIgmpm3hJE7X8Hj3jrgI002whs= -github.com/segmentio/go-prompt v1.2.1-0.20161017233205-f0d19b6901ad/go.mod h1:B3ehdD1xPoWDKgrQgUaGk+m8H1xb1J5TyYDfKpKNeEE= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= github.com/shopspring/decimal v0.0.0-20200105231215-408a2507e114 h1:Pm6R878vxWWWR+Sa3ppsLce/Zq+JNTs6aVvRu13jv9A= github.com/shopspring/decimal v0.0.0-20200105231215-408a2507e114/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= diff --git a/private/prompt/confirm.go b/private/prompt/confirm.go new file mode 100644 index 000000000..6263ec689 --- /dev/null +++ b/private/prompt/confirm.go @@ -0,0 +1,36 @@ +// Copyright (C) 2020 Storj Labs, Inc. +// See LICENSE for copying information. + +// Package prompt implements asking input from command line. +package prompt + +import ( + "fmt" + "strings" + + "github.com/zeebo/errs" +) + +// Error is the default error class for prompt package. +var Error = errs.Class("prompt") + +// Confirm asks to confirm a question. +func Confirm(prompt string) (bool, error) { + for { + fmt.Printf(prompt + " :") + + var response string + _, err := fmt.Scanln(&response) + if err != nil { + return false, Error.Wrap(err) + } + response = strings.TrimSpace(response) + + switch strings.ToLower(response) { + case "yes", "y", "true": + return true, nil + case "no", "n", "false": + return false, nil + } + } +}