mirror of
https://github.com/grafana/grafana.git
synced 2025-01-27 00:37:04 -06:00
2fb45eeec8
* Feature: Introduce a grafana-cli wrapper When our users install the *nix packed version of grafana, tendency is to use the services and scripts installed as part of the package for grafana-server. These leverage the default configuration options by specifying the several default paths. This introduces a similar approach for the grafana-cli binary. We exposed it through a wrapper to ensure a proper configuration is in place. To enable that, we add the .real suffix to the original binary (grafana-cli.real) and then use a bash script named grafana-cli as the wrapper. * Make the config and homepath flags global * Introduce `configOverrides` as a global flag This flag allows us to pass configuration overrides as a string. The string follows the convention of configuration arguments separated by a space e.g. "cfg:default.paths.data=/dev/nullX cfg:default.paths.logs=/dev/nullX" Also, it is backwards compatible with similar the previous configuration method through tailing arguments. Tailing arguments take presedence over the configuration options string. * Only log configuration information in debug mode * Move the grafana-cli binary to $GRAFANA_HOME/bin As part of the package install process, we copy all the release files and directories into the grafana home directory. This includes the /bin folder from where we copied the binaries into their respective destinations. After that, the /bin folder gets deleted as we don't want to keep duplicates of the binaries around. As part of this commit, we moved the re-creation of /bin within grafana-home and the copy of the original binary (again) after the folder gets deleted.
98 lines
2.1 KiB
Go
98 lines
2.1 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"runtime"
|
|
|
|
"github.com/codegangsta/cli"
|
|
"github.com/grafana/grafana/pkg/cmd/grafana-cli/commands"
|
|
"github.com/grafana/grafana/pkg/cmd/grafana-cli/logger"
|
|
"github.com/grafana/grafana/pkg/cmd/grafana-cli/services"
|
|
"github.com/grafana/grafana/pkg/cmd/grafana-cli/utils"
|
|
)
|
|
|
|
var version = "master"
|
|
|
|
func main() {
|
|
setupLogging()
|
|
|
|
app := cli.NewApp()
|
|
app.Name = "Grafana cli"
|
|
app.Usage = ""
|
|
app.Author = "Grafana Project"
|
|
app.Email = "https://github.com/grafana/grafana"
|
|
app.Version = version
|
|
|
|
app.Flags = []cli.Flag{
|
|
cli.StringFlag{
|
|
Name: "pluginsDir",
|
|
Usage: "path to the grafana plugin directory",
|
|
Value: utils.GetGrafanaPluginDir(runtime.GOOS),
|
|
EnvVar: "GF_PLUGIN_DIR",
|
|
},
|
|
cli.StringFlag{
|
|
Name: "repo",
|
|
Usage: "url to the plugin repository",
|
|
Value: "https://grafana.com/api/plugins",
|
|
EnvVar: "GF_PLUGIN_REPO",
|
|
},
|
|
cli.StringFlag{
|
|
Name: "pluginUrl",
|
|
Usage: "Full url to the plugin zip file instead of downloading the plugin from grafana.com/api",
|
|
Value: "",
|
|
EnvVar: "GF_PLUGIN_URL",
|
|
},
|
|
cli.BoolFlag{
|
|
Name: "insecure",
|
|
Usage: "Skip TLS verification (insecure)",
|
|
},
|
|
cli.BoolFlag{
|
|
Name: "debug, d",
|
|
Usage: "enable debug logging",
|
|
},
|
|
cli.StringFlag{
|
|
Name: "configOverrides",
|
|
Usage: "configuration options to override defaults as a string. e.g. cfg:default.paths.log=/dev/null",
|
|
},
|
|
cli.StringFlag{
|
|
Name: "homepath",
|
|
Usage: "path to grafana install/home path, defaults to working directory",
|
|
},
|
|
cli.StringFlag{
|
|
Name: "config",
|
|
Usage: "path to config file",
|
|
},
|
|
}
|
|
|
|
app.Before = func(c *cli.Context) error {
|
|
services.Init(version, c.GlobalBool("insecure"))
|
|
return nil
|
|
}
|
|
app.Commands = commands.Commands
|
|
app.CommandNotFound = cmdNotFound
|
|
|
|
if err := app.Run(os.Args); err != nil {
|
|
logger.Errorf("%v", err)
|
|
}
|
|
}
|
|
|
|
func setupLogging() {
|
|
for _, f := range os.Args {
|
|
if f == "-d" || f == "--debug" || f == "-debug" {
|
|
logger.SetDebug(true)
|
|
}
|
|
}
|
|
}
|
|
|
|
func cmdNotFound(c *cli.Context, command string) {
|
|
fmt.Printf(
|
|
"%s: '%s' is not a %s command. See '%s --help'.\n",
|
|
c.App.Name,
|
|
command,
|
|
c.App.Name,
|
|
os.Args[0],
|
|
)
|
|
os.Exit(1)
|
|
}
|