aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiall Sheridan <nsheridan@gmail.com>2018-08-08 21:52:34 +0100
committerNiall Sheridan <nsheridan@gmail.com>2018-08-08 22:54:43 +0100
commit9f8f0194a3c21e640a5b917f86bf204c014d730d (patch)
tree6921f64032a8eea7adeedfba156b62e2e6925969
parent12417f0dddf4be86aa5b9a4cb25bf48a4e301086 (diff)
Correct client behaviours for option handling
A config file is not required - don't error if one doesn't exist. Don't overwrite default options with an empty string.
-rw-r--r--client/config.go12
-rw-r--r--client/keys.go4
-rw-r--r--cmd/cashier/main.go10
3 files changed, 16 insertions, 10 deletions
diff --git a/client/config.go b/client/config.go
index eae3bfa..4536994 100644
--- a/client/config.go
+++ b/client/config.go
@@ -1,6 +1,8 @@
package client
import (
+ "os"
+
"github.com/mitchellh/go-homedir"
"github.com/spf13/pflag"
"github.com/spf13/viper"
@@ -28,10 +30,12 @@ func setDefaults() {
// ReadConfig reads the client configuration from a file into a Config struct.
func ReadConfig(path string) (*Config, error) {
setDefaults()
- viper.SetConfigFile(path)
- viper.SetConfigType("hcl")
- if err := viper.ReadInConfig(); err != nil {
- return nil, err
+ if _, err := os.Stat(path); err == nil {
+ viper.SetConfigFile(path)
+ viper.SetConfigType("hcl")
+ if err := viper.ReadInConfig(); err != nil {
+ return nil, err
+ }
}
c := &Config{}
if err := viper.Unmarshal(c); err != nil {
diff --git a/client/keys.go b/client/keys.go
index b488ea2..f573136 100644
--- a/client/keys.go
+++ b/client/keys.go
@@ -59,7 +59,9 @@ func pemBlockForKey(priv interface{}) (*pem.Block, error) {
// Default is "rsa"
func KeyType(keyType string) KeyOption {
return func(o *options) {
- o.keytype = keyType
+ if keyType != "" {
+ o.keytype = keyType
+ }
}
}
diff --git a/cmd/cashier/main.go b/cmd/cashier/main.go
index 2b24364..f0ba2f1 100644
--- a/cmd/cashier/main.go
+++ b/cmd/cashier/main.go
@@ -36,17 +36,17 @@ func main() {
c, err := client.ReadConfig(*cfg)
if err != nil {
- log.Printf("Error parsing config file: %v\n", err)
- }
- fmt.Printf("Your browser has been opened to visit %s\n", c.CA)
- if err := browser.OpenURL(c.CA); err != nil {
- fmt.Println("Error launching web browser. Go to the link in your web browser")
+ log.Printf("Configuration error: %v\n", err)
}
fmt.Println("Generating new key pair")
priv, pub, err := client.GenerateKey(client.KeyType(c.Keytype), client.KeySize(c.Keysize))
if err != nil {
log.Fatalln("Error generating key pair: ", err)
}
+ fmt.Printf("Your browser has been opened to visit %s\n", c.CA)
+ if err := browser.OpenURL(c.CA); err != nil {
+ fmt.Println("Error launching web browser. Go to the link in your web browser")
+ }
fmt.Print("Enter token: ")
var token string