32
33
// root handler for all cli commands
34
>
func cliHandler(c *cli.Context, handler func(c *cli.Context, logger log.Logger) error, logger log.Logger) {
main.go
35
>
quiet := c.GlobalBool(commonschema.CLIOptQuiet)
36
>
err := handler(c, logger)
37
>
if err != nil && !quiet {
38
>
osExit(1)
39
>
}
40
}
41
42
// BuildCLIOptions builds the options for cli
43
>
func BuildCLIOptions() *cli.App {
main.go
44
>
45
>
app := cli.NewApp()
46
>
app.Name = "temporal-elasticsearch-tool"
47
>
app.Usage = "Command line tool for temporal elasticsearch operations (EXPERIMENTAL)"
48
>
app.Version = "0.0.1"
49
>
50
>
logger := log.NewCLILogger()
51
>
52
>
app.Flags = []cli.Flag{
53
>
cli.StringFlag{
54
>
Name: commonschema.CLIFlagEndpoint,
55
>
Value: "http://127.0.0.1:9200",
56
>
Usage: "hostname or ip address of elasticsearch server",
57
>
EnvVar: "ES_SERVER",
58
>
},
59
>
cli.StringFlag{
60
>
Name: commonschema.CLIFlagUser,
61
>
Value: "",
62
>
Usage: "username for elasticsearch or aws_access_key_id if using static aws credentials",
63
>
EnvVar: "ES_USER",
64
>
},
65
>
cli.StringFlag{
66
>
Name: commonschema.CLIFlagPassword,
67
>
Value: "",
68
>
Usage: "password for elasticsearch or aws_secret_access_key if using static aws credentials",
69
>
EnvVar: "ES_PWD",
70
>
},
71
>
cli.StringFlag{
72
>
Name: CLIFlagAWSCredentials,
73
>
Value: "",
74
>
Usage: "AWS credentials provider (supported ['static', 'environment', 'aws-sdk-default'])",
75
>
EnvVar: "AWS_CREDENTIALS",
76
>
},
77
>
cli.StringFlag{
78
>
Name: CLIFlagAWSToken,
79
>
Value: "",
80
>
Usage: "AWS sessiontoken for use with 'static' AWS credentials provider",
81
>
EnvVar: "AWS_SESSION_TOKEN",
82
>
},
83
>
cli.BoolFlag{
84
>
Name: commonschema.CLIOptQuiet,
85
>
Usage: "don't log errors to stderr",
86
>
},
87
>
cli.BoolFlag{
88
>
Name: commonschema.CLIFlagEnableTLS,
89
>
Usage: "enable TLS for elasticsearch connection",
90
>
EnvVar: "ES_TLS",
91
>
},
92
>
cli.StringFlag{
93
>
Name: commonschema.CLIFlagTLSCertFile,
94
>
Value: "",
95
>
Usage: "path to TLS certificate file (tls must be enabled)",
96
>
EnvVar: "ES_TLS_CERT_FILE",
97
>
},
98
>
cli.StringFlag{
99
>
Name: commonschema.CLIFlagTLSKeyFile,
100
>
Value: "",
101
>
Usage: "path to TLS key file (tls must be enabled)",
102
>
EnvVar: "ES_TLS_KEY_FILE",
103
>
},
104
>
cli.StringFlag{
105
>
Name: commonschema.CLIFlagTLSCaFile,
106
>
Value: "",
107
>
Usage: "path to TLS CA certificate file (tls must be enabled)",
108
>
EnvVar: "ES_TLS_CA_FILE",
109
>
},
110
>
cli.BoolFlag{
111
>
Name: commonschema.CLIFlagTLSDisableHostVerification,
112
>
Usage: "disable TLS host name verification (tls must be enabled)",
113
>
EnvVar: "ES_TLS_DISABLE_HOST_VERIFICATION",
114
>
},
115
>
cli.StringFlag{
116
>
Name: commonschema.CLIFlagTLSHostName,
117
>
Value: "",
118
>
Usage: "TLS server name for host name verification (tls must be enabled)",
119
>
EnvVar: "ES_TLS_SERVER_NAME",
120
>
},
121
>
}
122
>
123
>
app.Commands = []cli.Command{
124
>
{
125
>
Name: "setup-schema",
126
>
Usage: "setup elasticsearch cluster settings and index template",
127
>
Flags: []cli.Flag{
128
>
cli.BoolFlag{
129
>
Name: CLIFlagFailSilently,
130
>
Usage: "fail silently on HTTP errors",
131
>
},
132
>
cli.BoolFlag{
133
>
Name: CLIFlagSkipClusterSettings,
134
>
Usage: "skip setting up cluster settings",
135
>
},
136
>
},
137
>
Action: func(c *cli.Context) error {
138
cliHandler(c, setupSchema, logger)
139
return nil