30
31
// BuildCLIOptions builds the options for cli
32
>
func BuildCLIOptions() *cli.App {
main.go
33
>
34
>
app := cli.NewApp()
35
>
app.Name = "temporal-sql-tool"
36
>
app.Usage = "Command line tool for temporal sql operations"
37
>
app.Version = headers.ServerVersion
38
>
39
>
logger := log.NewCLILogger()
40
>
41
>
app.Flags = []cli.Flag{
42
>
cli.StringFlag{
43
>
Name: schema.CLIFlagEndpoint,
44
>
Value: environment.GetMySQLAddress(),
45
>
Usage: "hostname or ip address of sql host to connect to",
46
>
EnvVar: "SQL_HOST",
47
>
},
48
>
cli.IntFlag{
49
>
Name: schema.CLIFlagPort,
50
>
Value: environment.GetMySQLPort(),
51
>
Usage: "port of sql host to connect to",
52
>
EnvVar: "SQL_PORT",
53
>
},
54
>
cli.StringFlag{
55
>
Name: schema.CLIFlagUser,
56
>
Value: "",
57
>
Usage: "user name used for authentication when connecting to sql host",
58
>
EnvVar: "SQL_USER",
59
>
},
60
>
cli.StringFlag{
61
>
Name: schema.CLIFlagPassword,
62
>
Value: "",
63
>
Usage: "password used for authentication when connecting to sql host",
64
>
EnvVar: "SQL_PASSWORD",
65
>
},
66
>
cli.StringFlag{
67
>
Name: schema.CLIFlagDatabase,
68
>
Value: "temporal",
69
>
Usage: "name of the sql database",
70
>
EnvVar: "SQL_DATABASE",
71
>
},
72
>
cli.StringFlag{
73
>
Name: schema.CLIFlagPluginName,
74
>
Value: mysql.PluginName,
75
>
Usage: "name of the sql plugin",
76
>
EnvVar: "SQL_PLUGIN",
77
>
},
78
>
cli.BoolFlag{
79
>
Name: schema.CLIFlagQuiet,
80
>
Usage: "Don't set exit status to 1 on error",
81
>
},
82
>
cli.StringFlag{
83
>
Name: schema.CLIFlagConnectAttributes,
84
>
Usage: "sql connect attributes",
85
>
EnvVar: "SQL_CONNECT_ATTRIBUTES",
86
>
},
87
>
cli.BoolFlag{
88
>
Name: schema.CLIFlagEnableTLS,
89
>
Usage: "enable TLS over sql connection",
90
>
EnvVar: "SQL_TLS",
91
>
},
92
>
cli.StringFlag{
93
>
Name: schema.CLIFlagTLSCertFile,
94
>
Usage: "sql tls client cert path (tls must be enabled)",
95
>
EnvVar: "SQL_TLS_CERT_FILE",
96
>
},
97
>
cli.StringFlag{
98
>
Name: schema.CLIFlagTLSKeyFile,
99
>
Usage: "sql tls client key path (tls must be enabled)",
100
>
EnvVar: "SQL_TLS_KEY_FILE",
101
>
},
102
>
cli.StringFlag{
103
>
Name: schema.CLIFlagTLSCaFile,
104
>
Usage: "sql tls client ca file (tls must be enabled)",
105
>
EnvVar: "SQL_TLS_CA_FILE",
106
>
},
107
>
cli.StringFlag{
108
>
Name: schema.CLIFlagTLSHostName,
109
>
Value: "",
110
>
Usage: "override for target server name",
111
>
EnvVar: "SQL_TLS_SERVER_NAME",
112
>
},
113
>
cli.BoolFlag{
114
>
Name: schema.CLIFlagTLSDisableHostVerification,
115
>
Usage: "disable tls host name verification (tls must be enabled)",
116
>
EnvVar: "SQL_TLS_DISABLE_HOST_VERIFICATION",
117
>
},
118
>
}
119
>
120
>
app.Commands = []cli.Command{
121
>
{
122
>
Name: "setup-schema",
123
>
Aliases: []string{"setup"},
124
>
Usage: "setup initial version of sql schema",
125
>
Flags: []cli.Flag{
126
>
cli.StringFlag{
127
>
Name: schema.CLIFlagVersion,
128
>
Usage: "initial version of the schema, cannot be used with disable-versioning",
129
>
},
130
>
cli.StringFlag{
131
>
Name: schema.CLIFlagSchemaFile,
132
>
Usage: "path to the .sql schema file; if un-specified, will just setup versioning tables",
133
>
},
134
>
cli.StringFlag{
135
>
Name: schema.CLIFlagSchemaName,
136
>
Usage: fmt.Sprintf("name of embedded schema directory with .sql file, one of: %v",
137
>
dbschemas.PathsByDB("sql")),
138
>
},
139
>
cli.BoolFlag{
140
>
Name: schema.CLIFlagDisableVersioning,
141
>
Usage: "disable setup of schema versioning",
142
>
},
143
>
cli.BoolFlag{
144
>
Name: schema.CLIFlagOverwrite,
145
>
Usage: "drop all existing tables before setting up new schema",
146
>
},
147
>
},
148
>
Action: func(c *cli.Context) {
149
>
cliHandler(c, setupSchema, logger)
main.go
150
>
},
151
},
152
{