MCPcopy Create free account
hub / github.com/Debian/dcs / query

Function query

cmd/dcs/query.go:32–120  ·  view source on GitHub ↗
(args []string)

Source from the content-addressed store, hash-verified

30`
31
32func query(args []string) error {
33 fset := flag.NewFlagSet("query", flag.ExitOnError)
34 fset.Usage = usage(fset, queryHelp)
35 var target string
36 fset.StringVar(&target, "target", "codesearch.debian.net:443", "gRPC target address")
37 var insecure bool
38 fset.BoolVar(&insecure, "insecure", false, "skip TLS certificate verification")
39 var grpcEnableLog bool
40 fset.BoolVar(&grpcEnableLog, "grpclog", false, "enable gRPC verbose logging for debugging")
41 var apikey string
42 fset.StringVar(&apikey, "apikey",
43 // API key for codesearch.debian.net for subject
44 // “program!github.com/Debian/dcs/cmd/dcs”:
45 "MTU5OTI5NzQzN3xDU1d4UE0yZllVUk9TVXRfdmxicEhIdUxiU3YzTkxGRjZNRl90WUc4bUg1OVdqNU9CM3RQaXFsa0xaRGdZRlZPSWNCZG1QNGZ3ZUNEcXp2SGdocVlEc1dkQmxRSUh0dmZoM0xKazRrPXx5ED9o0r-7uawKvV_K0Fb4QdbHsTV1qfY0XYFrl_904g==",
46 "Debian Code Search API key to use, see https://codesearch.debian.net/apikeys/ for more details. Please get an API key if you are doing automated queries.")
47 if err := fset.Parse(args); err != nil {
48 return err
49 }
50 if fset.NArg() < 1 {
51 return fmt.Errorf("Usage: query <search term(s)>")
52 }
53 log.Printf("dialing %s", target)
54
55 if grpcEnableLog {
56 grpclog.SetLoggerV2(grpclog.NewLoggerV2WithVerbosity(os.Stderr, os.Stderr, os.Stderr, 2))
57 }
58
59 creds := credentials.NewTLS(&tls.Config{
60 InsecureSkipVerify: insecure,
61 })
62 conn, err := grpc.Dial(target,
63 grpc.WithTransportCredentials(creds),
64 grpc.WithBlock())
65 if err != nil {
66 return err
67 }
68 log.Printf("sending Search query")
69 dcs := dcspb.NewDCSClient(conn)
70 stream, err := dcs.Search(context.Background(), &dcspb.SearchRequest{
71 Query: strings.Join(fset.Args(), " "),
72 Apikey: apikey,
73 })
74 if err != nil {
75 return err
76 }
77 for {
78 event, err := stream.Recv()
79 if err == io.EOF {
80 break
81 }
82 if err != nil {
83 return err
84 }
85 switch ev := event.Data.(type) {
86 case *dcspb.Event_Progress:
87 log.Printf("progress: %v of %v files searched (%.2f%%)",
88 ev.Progress.FilesProcessed,
89 ev.Progress.FilesTotal,

Callers 1

mainFunction · 0.85

Calls 9

SearchMethod · 0.95
ResultsMethod · 0.95
NewDCSClientFunction · 0.92
usageFunction · 0.85
GetLineMethod · 0.80
GetContextMethod · 0.80
RecvMethod · 0.65
GetQueryIdMethod · 0.45
GetPathMethod · 0.45

Tested by

no test coverage detected