Cli: fix filtering devices by name
This commit is contained in:
parent
dca99c30bc
commit
10c131647d
6 changed files with 33 additions and 47 deletions
|
|
@ -42,12 +42,7 @@ func runCharger(cmd *cobra.Command, args []string) {
|
|||
log.FATAL.Fatal(err)
|
||||
}
|
||||
|
||||
// select single charger
|
||||
if err := selectByName(args, &conf.Chargers); err != nil {
|
||||
log.FATAL.Fatal(err)
|
||||
}
|
||||
|
||||
if err := configureChargers(conf.Chargers); err != nil {
|
||||
if err := configureChargers(conf.Chargers, args...); err != nil {
|
||||
log.FATAL.Fatal(err)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -75,12 +75,7 @@ func runChargerRamp(cmd *cobra.Command, args []string) {
|
|||
log.FATAL.Fatal(err)
|
||||
}
|
||||
|
||||
// select single charger
|
||||
if err := selectByName(args, &conf.Chargers); err != nil {
|
||||
log.FATAL.Fatal(err)
|
||||
}
|
||||
|
||||
if err := configureChargers(conf.Chargers); err != nil {
|
||||
if err := configureChargers(conf.Chargers, args...); err != nil {
|
||||
log.FATAL.Fatal(err)
|
||||
}
|
||||
|
||||
|
|
|
|||
20
cmd/flags.go
20
cmd/flags.go
|
|
@ -1,9 +1,6 @@
|
|||
package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/evcc-io/evcc/util/config"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
|
@ -64,20 +61,3 @@ func bindP(cmd *cobra.Command, key string, flagName ...string) {
|
|||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
func selectByName(args []string, conf *[]config.Named) error {
|
||||
if len(args) != 1 {
|
||||
return nil
|
||||
}
|
||||
|
||||
name := args[0]
|
||||
|
||||
for _, c := range *conf {
|
||||
if c.Name == name {
|
||||
*conf = []config.Named{c}
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
return fmt.Errorf("%s not found", name)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -33,12 +33,7 @@ func runMeter(cmd *cobra.Command, args []string) {
|
|||
log.FATAL.Fatal(err)
|
||||
}
|
||||
|
||||
// select single meter
|
||||
if err := selectByName(args, &conf.Meters); err != nil {
|
||||
log.FATAL.Fatal(err)
|
||||
}
|
||||
|
||||
if err := configureMeters(conf.Meters); err != nil {
|
||||
if err := configureMeters(conf.Meters, args...); err != nil {
|
||||
log.FATAL.Fatal(err)
|
||||
}
|
||||
|
||||
|
|
|
|||
32
cmd/setup.go
32
cmd/setup.go
|
|
@ -174,12 +174,16 @@ func loadConfigFile(conf *globalConfig) error {
|
|||
return err
|
||||
}
|
||||
|
||||
func configureMeters(static []config.Named) error {
|
||||
func configureMeters(static []config.Named, names ...string) error {
|
||||
for i, cc := range static {
|
||||
if cc.Name == "" {
|
||||
return fmt.Errorf("cannot create meter %d: missing name", i+1)
|
||||
}
|
||||
|
||||
if len(names) > 0 && !slices.Contains(names, cc.Name) {
|
||||
continue
|
||||
}
|
||||
|
||||
instance, err := meter.NewFromConfig(cc.Type, cc.Other)
|
||||
if err != nil {
|
||||
return fmt.Errorf("cannot create meter '%s': %w", cc.Name, err)
|
||||
|
|
@ -199,6 +203,10 @@ func configureMeters(static []config.Named) error {
|
|||
for _, conf := range configurable {
|
||||
cc := conf.Named()
|
||||
|
||||
if len(names) > 0 && !slices.Contains(names, cc.Name) {
|
||||
return nil
|
||||
}
|
||||
|
||||
instance, err := meter.NewFromConfig(cc.Type, cc.Other)
|
||||
if err != nil {
|
||||
return fmt.Errorf("cannot create meter '%s': %w", cc.Name, err)
|
||||
|
|
@ -212,7 +220,7 @@ func configureMeters(static []config.Named) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func configureChargers(static []config.Named) error {
|
||||
func configureChargers(static []config.Named, names ...string) error {
|
||||
g, _ := errgroup.WithContext(context.Background())
|
||||
|
||||
for i, cc := range static {
|
||||
|
|
@ -220,6 +228,10 @@ func configureChargers(static []config.Named) error {
|
|||
return fmt.Errorf("cannot create charger %d: missing name", i+1)
|
||||
}
|
||||
|
||||
if len(names) > 0 && !slices.Contains(names, cc.Name) {
|
||||
continue
|
||||
}
|
||||
|
||||
cc := cc
|
||||
g.Go(func() error {
|
||||
instance, err := charger.NewFromConfig(cc.Type, cc.Other)
|
||||
|
|
@ -241,6 +253,11 @@ func configureChargers(static []config.Named) error {
|
|||
conf := conf
|
||||
g.Go(func() error {
|
||||
cc := conf.Named()
|
||||
|
||||
if len(names) > 0 && !slices.Contains(names, cc.Name) {
|
||||
return nil
|
||||
}
|
||||
|
||||
instance, err := charger.NewFromConfig(cc.Type, cc.Other)
|
||||
if err != nil {
|
||||
return fmt.Errorf("cannot create charger '%s': %w", cc.Name, err)
|
||||
|
|
@ -275,7 +292,7 @@ func vehicleInstance(cc config.Named) (api.Vehicle, error) {
|
|||
return instance, nil
|
||||
}
|
||||
|
||||
func configureVehicles(static []config.Named) error {
|
||||
func configureVehicles(static []config.Named, names ...string) error {
|
||||
var mu sync.Mutex
|
||||
g, _ := errgroup.WithContext(context.Background())
|
||||
|
||||
|
|
@ -287,6 +304,10 @@ func configureVehicles(static []config.Named) error {
|
|||
return fmt.Errorf("cannot create vehicle %d: missing name", i+1)
|
||||
}
|
||||
|
||||
if len(names) > 0 && !slices.Contains(names, cc.Name) {
|
||||
continue
|
||||
}
|
||||
|
||||
cc := cc
|
||||
g.Go(func() error {
|
||||
instance, err := vehicleInstance(cc)
|
||||
|
|
@ -315,6 +336,11 @@ func configureVehicles(static []config.Named) error {
|
|||
conf := conf
|
||||
g.Go(func() error {
|
||||
cc := conf.Named()
|
||||
|
||||
if len(names) > 0 && !slices.Contains(names, cc.Name) {
|
||||
return nil
|
||||
}
|
||||
|
||||
instance, err := vehicleInstance(cc)
|
||||
if err != nil {
|
||||
return fmt.Errorf("cannot create vehicle '%s': %w", cc.Name, err)
|
||||
|
|
|
|||
|
|
@ -34,11 +34,6 @@ func runVehicle(cmd *cobra.Command, args []string) {
|
|||
fatal(err)
|
||||
}
|
||||
|
||||
// select single vehicle
|
||||
if err := selectByName(args, &conf.Vehicles); err != nil {
|
||||
fatal(err)
|
||||
}
|
||||
|
||||
// use cloud
|
||||
if cmd.Flags().Lookup(flagCloud).Changed {
|
||||
for _, conf := range conf.Vehicles {
|
||||
|
|
@ -46,7 +41,7 @@ func runVehicle(cmd *cobra.Command, args []string) {
|
|||
}
|
||||
}
|
||||
|
||||
if err := configureVehicles(conf.Vehicles); err != nil {
|
||||
if err := configureVehicles(conf.Vehicles, args...); err != nil {
|
||||
fatal(err)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue