main.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // Copyright (C) 2014 The Syncthing Authors.
  2. //
  3. // This Source Code Form is subject to the terms of the Mozilla Public
  4. // License, v. 2.0. If a copy of the MPL was not distributed with this file,
  5. // You can obtain one at http://mozilla.org/MPL/2.0/.
  6. package main
  7. import (
  8. "flag"
  9. "fmt"
  10. "log"
  11. "os"
  12. "github.com/syncthing/protocol"
  13. "github.com/syncthing/syncthing/internal/db"
  14. "github.com/syndtr/goleveldb/leveldb"
  15. )
  16. func main() {
  17. log.SetFlags(0)
  18. log.SetOutput(os.Stdout)
  19. folder := flag.String("folder", "default", "Folder ID")
  20. device := flag.String("device", "", "Device ID (blank for global)")
  21. flag.Parse()
  22. ldb, err := leveldb.OpenFile(flag.Arg(0), nil)
  23. if err != nil {
  24. log.Fatal(err)
  25. }
  26. fs := db.NewFileSet(*folder, ldb)
  27. if *device == "" {
  28. log.Printf("*** Global index for folder %q", *folder)
  29. fs.WithGlobalTruncated(func(fi db.FileIntf) bool {
  30. f := fi.(db.FileInfoTruncated)
  31. fmt.Println(f)
  32. fmt.Println("\t", fs.Availability(f.Name))
  33. return true
  34. })
  35. } else {
  36. n, err := protocol.DeviceIDFromString(*device)
  37. if err != nil {
  38. log.Fatal(err)
  39. }
  40. log.Printf("*** Have index for folder %q device %q", *folder, n)
  41. fs.WithHaveTruncated(n, func(fi db.FileIntf) bool {
  42. f := fi.(db.FileInfoTruncated)
  43. fmt.Println(f)
  44. return true
  45. })
  46. }
  47. }