main.go 959 B

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