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