Skip to content

Commit

Permalink
Merge pull request #218 from daixiang0/support-config
Browse files Browse the repository at this point in the history
cmd/logcli: support load config from file
  • Loading branch information
davkal authored Feb 22, 2019
2 parents 351b4c6 + 2392cc3 commit e6bf548
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 4 deletions.
20 changes: 20 additions & 0 deletions cmd/logcli/config.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package main

// Config is the root config for Logcli.
type Config struct {
Addr string `yaml:"addr,omitempty"`
Username string `yaml:"username,omitempty"`
Password string `yaml:"password,omitempty"`
}

func getConfig(configFile string) (*Config, error) {
var config Config

// if not specify config file, keep same with default value
if configFile == "" {
config = Config{Addr: "https://logs-us-west1.grafana.net"}
return &config, nil
}

return &config, nil
}
5 changes: 5 additions & 0 deletions cmd/logcli/logcli-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
addr: https://logs-us-west1.grafana.net

username:

password:
20 changes: 16 additions & 4 deletions cmd/logcli/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,11 @@ import (
)

var (
app = kingpin.New("logcli", "A command-line for loki.")
addr = app.Flag("addr", "Server address.").Default("").Envar("GRAFANA_ADDR").String()
username = app.Flag("username", "Username for HTTP basic auth.").Default("").Envar("GRAFANA_USERNAME").String()
password = app.Flag("password", "Password for HTTP basic auth.").Default("").Envar("GRAFANA_PASSWORD").String()
app = kingpin.New("logcli", "A command-line for loki.")

config = app.Flag("config", "Logcli config.").Default("").String()

addr, username, password *string

queryCmd = app.Command("query", "Run a LogQL query.")
queryStr = queryCmd.Arg("query", "eg '{foo=\"bar\",baz=\"blip\"}'").Required().String()
Expand All @@ -26,6 +27,17 @@ var (
)

func main() {
// get val from config file
cfg, err := getConfig(*config)
if err != nil {
fmt.Println(err)
os.Exit(1)
}

addr = app.Flag("addr", "Server address.").Default(cfg.Addr).Envar("GRAFANA_ADDR").String()
username = app.Flag("username", "Username for HTTP basic auth.").Default(cfg.Username).Envar("GRAFANA_USERNAME").String()
password = app.Flag("password", "Password for HTTP basic auth.").Default(cfg.Password).Envar("GRAFANA_PASSWORD").String()

switch kingpin.MustParse(app.Parse(os.Args[1:])) {
case queryCmd.FullCommand():
if *addr == "" {
Expand Down
7 changes: 7 additions & 0 deletions docs/logcli.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@ Common labels: {job="cortex-ops/consul", namespace="cortex-ops"}
2018-06-25T12:52:09Z {instance="consul-8576459955-pl75w"} 2018/06/25 12:52:09 [INFO] raft: Snapshot to 475409 complete
2018-06-25T12:52:09Z {instance="consul-8576459955-pl75w"} 2018/06/25 12:52:09 [INFO] raft: Compacting logs from 456973 to 465169
```
You may use `--config=path/to/file` to load configuration options from a file. For an example file see `cmd/logcli/logcli-config.yaml`

Configuration values are considered in the following order (lowest to highest):
- config file
- environment value
- command line

The URLs of the requests are printed to help with integration work.

Expand All @@ -34,6 +40,7 @@ Flags:
--addr="" Server address, need to specify.
--username="" Username for HTTP basic auth.
--password="" Password for HTTP basic auth.
--config="" Configuration file for logcli.
Commands:
help [<command>...]
Expand Down

0 comments on commit e6bf548

Please sign in to comment.