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  }