github.com/kayoticsully/syncthing@v0.8.9-0.20140724133906-c45a2fdc03f8/cmd/pidx/main.go (about) 1 package main 2 3 import ( 4 "flag" 5 "fmt" 6 "log" 7 "os" 8 9 "github.com/calmh/syncthing/files" 10 "github.com/calmh/syncthing/protocol" 11 "github.com/syndtr/goleveldb/leveldb" 12 ) 13 14 func main() { 15 log.SetFlags(0) 16 log.SetOutput(os.Stdout) 17 18 repo := flag.String("repo", "default", "Repository ID") 19 node := flag.String("node", "", "Node ID (blank for global)") 20 flag.Parse() 21 22 db, err := leveldb.OpenFile(flag.Arg(0), nil) 23 if err != nil { 24 log.Fatal(err) 25 } 26 27 fs := files.NewSet(*repo, db) 28 29 if *node == "" { 30 log.Printf("*** Global index for repo %q", *repo) 31 fs.WithGlobal(func(f protocol.FileInfo) bool { 32 fmt.Println(f) 33 fmt.Println("\t", fs.Availability(f.Name)) 34 return true 35 }) 36 } else { 37 n, err := protocol.NodeIDFromString(*node) 38 if err != nil { 39 log.Fatal(err) 40 } 41 log.Printf("*** Have index for repo %q node %q", *repo, n) 42 fs.WithHave(n, func(f protocol.FileInfo) bool { 43 fmt.Println(f) 44 return true 45 }) 46 } 47 }