Support in-place upgrades of new minio binary and releases. (#4961)

This PR allows 'minio update' to not only shows update banner
but also allows for in-place upgrades.

Updates are done safely by validating the downloaded
sha256 of the binary.

Fixes #4781
This commit is contained in:
Harshavardhana
2017-12-16 02:03:42 +05:30
committed by Dee Koder
parent 8c08571cd9
commit eb7c690ea9
55 changed files with 4027 additions and 47 deletions

13
vendor/github.com/segmentio/go-prompt/History.md generated vendored Normal file
View File

@@ -0,0 +1,13 @@
v1.2.0 / 2014-12-10
===================
* remove appending of ? to Confirm()
v1.1.0 / 2014-10-22
==================
* add passwords example
* add password docs
* Merge pull request #2 from nrmitchi/add/gopass
* Adding convenience wrappers around howeyc/gopass

33
vendor/github.com/segmentio/go-prompt/Readme.md generated vendored Normal file
View File

@@ -0,0 +1,33 @@
# go-prompt
Terminal prompts for Go.
View the [docs](http://godoc.org/pkg/github.com/segmentio/go-prompt).
## Example
```go
package main
import "github.com/segmentio/go-prompt"
var langs = []string{
"c",
"c++",
"lua",
"go",
"js",
"ruby",
"python",
}
func main() {
i := prompt.Choose("What's your favorite language?", langs)
println("picked: " + langs[i])
}
```
## License
MIT

94
vendor/github.com/segmentio/go-prompt/prompt.go generated vendored Normal file
View File

@@ -0,0 +1,94 @@
package prompt
import "github.com/howeyc/gopass"
import "strings"
import "strconv"
import "fmt"
// String prompt.
func String(prompt string, args ...interface{}) string {
var s string
fmt.Printf(prompt+": ", args...)
fmt.Scanln(&s)
return s
}
// String prompt (required).
func StringRequired(prompt string, args ...interface{}) (s string) {
for strings.Trim(s, " ") == "" {
s = String(prompt, args...)
}
return s
}
// Confirm continues prompting until the input is boolean-ish.
func Confirm(prompt string, args ...interface{}) bool {
for {
switch String(prompt, args...) {
case "Yes", "yes", "y", "Y":
return true
case "No", "no", "n", "N":
return false
}
}
}
// Choose prompts for a single selection from `list`, returning in the index.
func Choose(prompt string, list []string) int {
fmt.Println()
for i, val := range list {
fmt.Printf(" %d) %s\n", i+1, val)
}
fmt.Println()
i := -1
for {
s := String(prompt)
// index
n, err := strconv.Atoi(s)
if err == nil {
if n > 0 && n <= len(list) {
i = n - 1
break
} else {
continue
}
}
// value
i = indexOf(s, list)
if i != -1 {
break
}
}
return i
}
// Password prompt.
func Password(prompt string, args ...interface{}) string {
fmt.Printf(prompt+": ", args...)
password, _ := gopass.GetPasswd()
s := string(password[0:])
return s
}
// Password prompt with mask.
func PasswordMasked(prompt string, args ...interface{}) string {
fmt.Printf(prompt+": ", args...)
password, _ := gopass.GetPasswdMasked()
s := string(password[0:])
return s
}
// index of `s` in `list`.
func indexOf(s string, list []string) int {
for i, val := range list {
if val == s {
return i
}
}
return -1
}