cli and ls s3
parent
d39c226d13
commit
be25dee55d
|
|
@ -7,6 +7,8 @@ function main() {
|
|||
local pass="${AWS_PASS:-"YXlRDCKZPDMWF7qXZIa/t4aBi2WCpd8uu2LWSZwQ"}"
|
||||
local min="${1:-"---"}"
|
||||
local max="${2:-"}}}"}"
|
||||
shift
|
||||
shift
|
||||
go run main.go \
|
||||
-do list \
|
||||
-db minio \
|
||||
|
|
@ -15,7 +17,8 @@ function main() {
|
|||
-pass "$pass" \
|
||||
-ns "$bucket" \
|
||||
-min "$min" \
|
||||
-max "$max"
|
||||
-max "$max" \
|
||||
"$@"
|
||||
}
|
||||
|
||||
if [ "$0" == "$BASH_SOURCE" ]; then
|
||||
|
|
|
|||
|
|
@ -47,9 +47,11 @@ func main() {
|
|||
d := strings.Join(c, "\n\t")
|
||||
b = []byte(fmt.Sprintf("%s", d))
|
||||
case "get":
|
||||
b, err = db.Get(as.Get("k").GetString())
|
||||
ns := strings.Split(as.Get("ns").GetString(), " ")
|
||||
b, err = db.Get(as.Get("k").GetString(), ns...)
|
||||
case "set":
|
||||
err = db.Set(as.Get("k").GetString(), []byte(as.Get("v").GetString()))
|
||||
ns := strings.Split(as.Get("ns").GetString(), " ")
|
||||
err = db.Set(as.Get("k").GetString(), []byte(as.Get("v").GetString()), ns...)
|
||||
case "cli":
|
||||
reader := bufio.NewReader(os.Stdin)
|
||||
for {
|
||||
|
|
@ -80,4 +82,5 @@ func main() {
|
|||
}
|
||||
stop := time.Now()
|
||||
log.Printf("(%v) %v: %s", stop.Sub(start), err, b)
|
||||
fmt.Printf("%s", b)
|
||||
}
|
||||
|
|
|
|||
27
minio.go
27
minio.go
|
|
@ -4,6 +4,7 @@ import (
|
|||
"bytes"
|
||||
"io/ioutil"
|
||||
"net/url"
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
minio "github.com/minio/minio-go"
|
||||
|
|
@ -29,7 +30,8 @@ func (m *Minio) List(ns []string, limits ...string) ([]string, error) {
|
|||
done := make(chan struct{})
|
||||
defer close(done)
|
||||
keys := []string{}
|
||||
for resp := range m.db.ListObjects(namespace, "", true, done) {
|
||||
prefix := commonSubstr(limits[:2])
|
||||
for resp := range m.db.ListObjects(namespace, prefix, true, done) {
|
||||
if resp.Err != nil {
|
||||
return keys, resp.Err
|
||||
}
|
||||
|
|
@ -81,3 +83,26 @@ func (m *Minio) Close() error {
|
|||
func isNotExistErr(err error) bool {
|
||||
return err != nil && strings.Contains(err.Error(), "does not exist")
|
||||
}
|
||||
|
||||
func commonSubstr(items []string) string {
|
||||
if len(items) == 0 {
|
||||
return ""
|
||||
} else if len(items) == 1 {
|
||||
return items[0]
|
||||
}
|
||||
sort.Strings(items)
|
||||
min := items[0]
|
||||
max := items[len(items)-1]
|
||||
if len(min) == 0 || len(max) == 0 {
|
||||
return ""
|
||||
}
|
||||
if min[0] != max[0] {
|
||||
return ""
|
||||
}
|
||||
for i := 1; i < len(min) && i < len(max); i++ {
|
||||
if min[i] != max[i] {
|
||||
return min[:i-1]
|
||||
}
|
||||
}
|
||||
return min
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue