-
Notifications
You must be signed in to change notification settings - Fork 1
/
flag.go
47 lines (37 loc) · 1.65 KB
/
flag.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package main
import (
"flag"
"log"
"os"
"github.com/IBM/sarama"
)
func parseFlags() appConfig {
cfg := appConfig{}
// Kafka configuration
flag.StringVar(&cfg.bootstrapServers, "bootstrap", "localhost:9092", "The Kafka bootstrap servers, as a comma separated list")
flag.StringVar(&cfg.group, "group", "schema-stats", "The Kafka consumer group name")
flag.StringVar(&cfg.version, "version", "2.1.1", "The Kafka client version")
flag.StringVar(&cfg.topic, "topic", "", "The Kafka topic to consume from")
flag.StringVar(&cfg.user, "user", "", "The Kafka username")
flag.StringVar(&cfg.password, "password", "", "The Kafka password")
flag.StringVar(&cfg.caCert, "cert", "", "The path for the CA certificate")
flag.BoolVar(&cfg.oldest, "oldest", true, "Consume from the oldest offset available")
flag.BoolVar(&cfg.verbose, "verbose", false, "Switch to verbose logging")
flag.BoolVar(&cfg.tls, "tls", false, "Enable TLS connection")
flag.IntVar(&cfg.limit, "limit", 0, "Limit consumer to N messages")
// Tool configuration
flag.StringVar(&cfg.path, "path", "/tmp/results.json", "Default file to store the results")
flag.BoolVar(&cfg.store, "store", false, "Store results on file for analysis")
flag.BoolVar(&cfg.chart, "chart", false, "Generate a pie chart from the results")
flag.Parse()
if len(cfg.topic) == 0 {
log.Fatal("No topic name was given. Please set the --topic flag and try again")
}
if cfg.verbose {
sarama.Logger = log.New(os.Stdout, "[sr-stats DEBUG] ", log.LstdFlags)
}
if cfg.tls && cfg.caCert == "" {
log.Fatal("TLS communication was set, but no CA Certificate specified. Please set the --cert flag and try again")
}
return cfg
}