11package main
22
33import (
4+ "encoding/json"
45 "flag"
56 "fmt"
7+ "io/ioutil"
68 "os"
79
810 "github.com/hashicorp/consul/api"
@@ -16,15 +18,47 @@ func printUsage() {
1618 os .Exit (1 )
1719}
1820
21+ type ConsulConfig struct {
22+ Scheme string `json:"scheme"`
23+ Host string `json:"host"`
24+ User string `json:"user"`
25+ Password string `json:"password"`
26+ }
27+
28+ func readConfig () (* ConsulConfig , error ) {
29+ b , err := ioutil .ReadFile (os .Getenv ("HOME" ) + "/.consul/config.json" )
30+ if err != nil {
31+ return & ConsulConfig {
32+ Scheme : "http" ,
33+ Host : "127.0.0.1:8500" ,
34+ }, nil
35+ }
36+ var config ConsulConfig
37+ err = json .Unmarshal (b , & config )
38+ if err != nil {
39+ return nil , err
40+ }
41+ return & config , nil
42+ }
43+
1944func main () {
45+ fileConfig , err := readConfig ()
46+ if err != nil {
47+ fmt .Fprintln (os .Stderr , err )
48+ os .Exit (1 )
49+ }
2050 var (
21- host string
22- scheme string
23- recurse bool
24- force bool
51+ host string
52+ scheme string
53+ user string
54+ password string
55+ recurse bool
56+ force bool
2557 )
26- flag .StringVar (& host , "consul" , "127.0.0.1:8500" , "Consul API end point" )
27- flag .StringVar (& scheme , "scheme" , "http" , "Consul API scheme" )
58+ flag .StringVar (& host , "consul" , fileConfig .Host , "Consul API end point" )
59+ flag .StringVar (& scheme , "scheme" , fileConfig .Scheme , "Consul API scheme" )
60+ flag .StringVar (& user , "user" , fileConfig .User , "Consul API scheme" )
61+ flag .StringVar (& password , "password" , fileConfig .Password , "Consul API scheme" )
2862 flag .BoolVar (& recurse , "recurse" , false , "work with put/get/delete/ls action" )
2963 flag .BoolVar (& force , "force" , false , "force put/get if folder exists" )
3064 flag .Parse ()
@@ -37,10 +71,18 @@ func main() {
3771 force : force ,
3872 }
3973
40- client , err := api . NewClient ( & api.Config {
74+ consulConfig := & api.Config {
4175 Address : host ,
4276 Scheme : scheme ,
43- })
77+ }
78+ if user != "" && password != "" {
79+ consulConfig .HttpAuth = & api.HttpBasicAuth {
80+ Username : user ,
81+ Password : password ,
82+ }
83+ }
84+
85+ client , err := api .NewClient (consulConfig )
4486 if err != nil {
4587 fmt .Fprintln (os .Stderr , err )
4688 os .Exit (1 )
@@ -56,6 +98,8 @@ func main() {
5698 cmdGet (kv , args [1 :], config )
5799 case "ls" :
58100 cmdLs (kv , args [1 :], config )
101+ case "version" :
102+ cmdVersion ()
59103 default :
60104 printUsage ()
61105 }
0 commit comments