74 lines
1.4 KiB
Go
74 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"local/args"
|
|
"local/storage"
|
|
"local/storage/resolve"
|
|
"log"
|
|
)
|
|
|
|
type Config struct {
|
|
DBs [2]storage.DB
|
|
Dry bool
|
|
}
|
|
|
|
func (config Config) String() string {
|
|
return fmt.Sprintf("{1:%T 2:%T Dry:%v}", config.DBs[0], config.DBs[1], config.Dry)
|
|
}
|
|
|
|
func main() {
|
|
c := config()
|
|
resolve.DefaultNamespace = ""
|
|
keys, err := c.DBs[0].List(nil)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
log.Println(c)
|
|
for _, key := range keys {
|
|
v, err := c.DBs[0].Get(key)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
if c.Dry {
|
|
log.Printf("c.DBs[1].Set(%s, %s)", key, v)
|
|
} else if err := c.DBs[1].Set(key, v); err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func config() Config {
|
|
as := args.NewArgSet()
|
|
for i := range [2]int{} {
|
|
s := fmt.Sprint(i + 1)
|
|
as.Append(args.STRING, s+"usr", s+"'s user", "")
|
|
as.Append(args.STRING, s+"pwd", s+"'s password", "")
|
|
as.Append(args.STRING, s+"addr", s+"'s addr", "")
|
|
as.Append(args.STRING, s+"type", s+"'s type", "")
|
|
}
|
|
as.Append(args.BOOL, "dry", "dry run", false)
|
|
if err := as.Parse(); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
stores := [2]storage.DB{}
|
|
for i := range stores {
|
|
var err error
|
|
stores[i], err = storage.New(
|
|
storage.TypeFromString(as.GetString(fmt.Sprint(i+1)+"type")),
|
|
as.GetString(fmt.Sprint(i+1)+"addr"),
|
|
as.GetString(fmt.Sprint(i+1)+"usr"),
|
|
as.GetString(fmt.Sprint(i+1)+"pwd"),
|
|
)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
return Config{
|
|
DBs: stores,
|
|
Dry: as.GetBool("dry"),
|
|
}
|
|
}
|