diff --git a/cmd/charger.go b/cmd/charger.go index 818088d45..4c6d66670 100644 --- a/cmd/charger.go +++ b/cmd/charger.go @@ -54,13 +54,8 @@ func runCharger(cmd *cobra.Command, args []string) { } // select single charger - if name := cmd.PersistentFlags().Lookup(flagName).Value.String(); name != "" { - for _, cfg := range conf.Chargers { - if cfg.Name == name { - conf.Chargers = []qualifiedConfig{cfg} - break - } - } + if err := selectByName(cmd, &conf.Chargers); err != nil { + log.FATAL.Fatal(err) } if err := cp.configureChargers(conf); err != nil { diff --git a/cmd/flags.go b/cmd/flags.go index 28b218cea..ebffaa6aa 100644 --- a/cmd/flags.go +++ b/cmd/flags.go @@ -1,5 +1,11 @@ package cmd +import ( + "fmt" + + "github.com/spf13/cobra" +) + const ( flagHeaders = "log-headers" flagHeadersDescription = "Log headers" @@ -22,3 +28,21 @@ const ( flagStop = "stop" flagStopDescription = "Stop charging" ) + +func selectByName(cmd *cobra.Command, conf *[]qualifiedConfig) error { + flag := cmd.PersistentFlags().Lookup(flagName) + if !flag.Changed { + return nil + } + + name := flag.Value.String() + + for _, cfg := range *conf { + if cfg.Name == name { + *conf = []qualifiedConfig{cfg} + return nil + } + } + + return fmt.Errorf("%s not found", name) +} diff --git a/cmd/meter.go b/cmd/meter.go index 32cf34f81..3440484ca 100644 --- a/cmd/meter.go +++ b/cmd/meter.go @@ -45,13 +45,8 @@ func runMeter(cmd *cobra.Command, args []string) { } // select single meter - if name := cmd.PersistentFlags().Lookup("name").Value.String(); name != "" { - for _, cfg := range conf.Meters { - if cfg.Name == name { - conf.Meters = []qualifiedConfig{cfg} - break - } - } + if err := selectByName(cmd, &conf.Meters); err != nil { + log.FATAL.Fatal(err) } if err := cp.configureMeters(conf); err != nil { diff --git a/cmd/vehicle.go b/cmd/vehicle.go index d5f4bcdfc..024784031 100644 --- a/cmd/vehicle.go +++ b/cmd/vehicle.go @@ -47,14 +47,9 @@ func runVehicle(cmd *cobra.Command, args []string) { request.LogHeaders = true } - // select single charger - if name := cmd.PersistentFlags().Lookup(flagName).Value.String(); name != "" { - for _, cfg := range conf.Vehicles { - if cfg.Name == name { - conf.Vehicles = []qualifiedConfig{cfg} - break - } - } + // select single vehicle + if err := selectByName(cmd, &conf.Vehicles); err != nil { + log.FATAL.Fatal(err) } if err := cp.configureVehicles(conf); err != nil {