cli: grafana-cli should receive flags from the command line (#17606)

grafana-cli should allow configuration overrides to be received from the command line. e.g.

```
grafana-cli admin reset-password cfg:default.paths.logs=custom/log/directory/
```

Seems like we missed the inclusion of `flag.Parse` as we run the command,  to be able to consume them.

Additionally, it'll be useful for the user to know whenever these are being overriden or not - hence the addition of logging the configuration to be used as we run the command.
This commit is contained in:
gotjosh 2019-06-17 11:27:26 +01:00 committed by GitHub
parent aa1f9cdd40
commit 6fbca90269
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 10 deletions

View File

@ -19,12 +19,15 @@ func runDbCommand(command func(commandLine utils.CommandLine, sqlStore *sqlstore
cmd := &utils.ContextCommandLine{Context: context}
cfg := setting.NewCfg()
cfg.Load(&setting.CommandLineArgs{
Config: cmd.String("config"),
HomePath: cmd.String("homepath"),
Args: flag.Args(),
})
cfg.LogConfigSources()
engine := &sqlstore.SqlStore{}
engine.Cfg = cfg
engine.Bus = bus.GetBus()
@ -93,21 +96,23 @@ var pluginCommands = []cli.Command{
},
}
var dbCommandFlags = []cli.Flag{
cli.StringFlag{
Name: "homepath",
Usage: "path to grafana install/home path, defaults to working directory",
},
cli.StringFlag{
Name: "config",
Usage: "path to config file",
},
}
var adminCommands = []cli.Command{
{
Name: "reset-admin-password",
Usage: "reset-admin-password <new password>",
Action: runDbCommand(resetPasswordCommand),
Flags: []cli.Flag{
cli.StringFlag{
Name: "homepath",
Usage: "path to grafana install/home path, defaults to working directory",
},
cli.StringFlag{
Name: "config",
Usage: "path to config file",
},
},
Flags: dbCommandFlags,
},
{
Name: "data-migration",
@ -117,6 +122,7 @@ var adminCommands = []cli.Command{
Name: "encrypt-datasource-passwords",
Usage: "Migrates passwords from unsecured fields to secure_json_data field. Return ok unless there is an error. Safe to execute multiple times.",
Action: runDbCommand(datamigrations.EncryptDatasourcePaswords),
Flags: dbCommandFlags,
},
},
},

View File

@ -1,6 +1,7 @@
package main
import (
"flag"
"fmt"
"os"
"runtime"
@ -17,6 +18,7 @@ var version = "master"
func main() {
setupLogging()
flag.Parse()
app := cli.NewApp()
app.Name = "Grafana cli"
app.Usage = ""