Improve generating decorators (#1648)

This commit is contained in:
andig 2021-09-26 19:37:00 +02:00 • committed by GitHub
parent d2e3c47e10
commit 71f0cae5ea
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 99 additions and 98 deletions

View file

@ -49,7 +49,7 @@ func init() {
registry.Add("lgess", NewLgEssFromConfig)
}
//go:generate go run ../cmd/tools/decorate.go -f decorateLgEss -b api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.Battery,SoC,func() (float64, error)"
//go:generate go run ../cmd/tools/decorate.go -f decorateLgEss -b *LgEss -r api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.Battery,SoC,func() (float64, error)"
// NewLgEssFromConfig creates an LgEss Meter from generic config
func NewLgEssFromConfig(other map[string]interface{}) (api.Meter, error) {

View file

@ -1,22 +1,22 @@
package meter
// Code generated by github.com/andig/cmd/tools/decorate.go. DO NOT EDIT.
// Code generated by github.com/evcc-io/evcc/cmd/tools/decorate.go. DO NOT EDIT.
import (
"github.com/evcc-io/evcc/api"
)
func decorateLgEss(base api.Meter, meterEnergy func() (float64, error), battery func() (float64, error)) api.Meter {
func decorateLgEss(base *LgEss, meterEnergy func() (float64, error), battery func() (float64, error)) api.Meter {
switch {
case battery == nil && meterEnergy == nil:
return base
case battery == nil && meterEnergy != nil:
return &struct {
api.Meter
*LgEss
api.MeterEnergy
}{
Meter: base,
LgEss: base,
MeterEnergy: &decorateLgEssMeterEnergyImpl{
meterEnergy: meterEnergy,
},
@ -24,10 +24,10 @@ func decorateLgEss(base api.Meter, meterEnergy func() (float64, error), battery
case battery != nil && meterEnergy == nil:
return &struct {
api.Meter
*LgEss
api.Battery
}{
Meter: base,
LgEss: base,
Battery: &decorateLgEssBatteryImpl{
battery: battery,
},
@ -35,11 +35,11 @@ func decorateLgEss(base api.Meter, meterEnergy func() (float64, error), battery
case battery != nil && meterEnergy != nil:
return &struct {
api.Meter
*LgEss
api.Battery
api.MeterEnergy
}{
Meter: base,
LgEss: base,
Battery: &decorateLgEssBatteryImpl{
battery: battery,
},

View file

@ -1,6 +1,6 @@
package meter
// Code generated by github.com/andig/cmd/tools/decorate.go. DO NOT EDIT.
// Code generated by github.com/evcc-io/evcc/cmd/tools/decorate.go. DO NOT EDIT.
import (
"github.com/evcc-io/evcc/api"

View file

@ -1,6 +1,6 @@
package meter
// Code generated by github.com/andig/cmd/tools/decorate.go. DO NOT EDIT.
// Code generated by github.com/evcc-io/evcc/cmd/tools/decorate.go. DO NOT EDIT.
import (
"github.com/evcc-io/evcc/api"

View file

@ -25,7 +25,7 @@ func init() {
registry.Add("sma", NewSMAFromConfig)
}
//go:generate go run ../cmd/tools/decorate.go -f decorateSMA -r api.Meter -b *SMA -t "api.Battery,SoC,func() (float64, error)"
//go:generate go run ../cmd/tools/decorate.go -f decorateSMA -b *SMA -r api.Meter -t "api.Battery,SoC,func() (float64, error)"
// NewSMAFromConfig creates a SMA Meter from generic config
func NewSMAFromConfig(other map[string]interface{}) (api.Meter, error) {

View file

@ -1,6 +1,6 @@
package meter
// Code generated by github.com/andig/cmd/tools/decorate.go. DO NOT EDIT.
// Code generated by github.com/evcc-io/evcc/cmd/tools/decorate.go. DO NOT EDIT.
import (
"github.com/evcc-io/evcc/api"

View file

@ -26,7 +26,7 @@ func init() {
registry.Add("tesla", NewTeslaFromConfig)
}
//go:generate go run ../cmd/tools/decorate.go -f decorateTesla -b api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.Battery,SoC,func() (float64, error)"
//go:generate go run ../cmd/tools/decorate.go -f decorateTesla -b *Tesla -r api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.Battery,SoC,func() (float64, error)"
// NewTeslaFromConfig creates a Tesla Powerwall Meter from generic config
func NewTeslaFromConfig(other map[string]interface{}) (api.Meter, error) {
@ -115,6 +115,8 @@ func (m *Tesla) Login() error {
return err
}
var _ api.Meter = (*Tesla)(nil)
// CurrentPower implements the api.Meter interface
func (m *Tesla) CurrentPower() (float64, error) {
var res powerwall.MeterResponse

View file

@ -1,22 +1,22 @@
package meter
// Code generated by github.com/andig/cmd/tools/decorate.go. DO NOT EDIT.
// Code generated by github.com/evcc-io/evcc/cmd/tools/decorate.go. DO NOT EDIT.
import (
"github.com/evcc-io/evcc/api"
)
func decorateTesla(base api.Meter, meterEnergy func() (float64, error), battery func() (float64, error)) api.Meter {
func decorateTesla(base *Tesla, meterEnergy func() (float64, error), battery func() (float64, error)) api.Meter {
switch {
case battery == nil && meterEnergy == nil:
return base
case battery == nil && meterEnergy != nil:
return &struct {
api.Meter
*Tesla
api.MeterEnergy
}{
Meter: base,
Tesla: base,
MeterEnergy: &decorateTeslaMeterEnergyImpl{
meterEnergy: meterEnergy,
},
@ -24,10 +24,10 @@ func decorateTesla(base api.Meter, meterEnergy func() (float64, error), battery
case battery != nil && meterEnergy == nil:
return &struct {
api.Meter
*Tesla
api.Battery
}{
Meter: base,
Tesla: base,
Battery: &decorateTeslaBatteryImpl{
battery: battery,
},
@ -35,11 +35,11 @@ func decorateTesla(base api.Meter, meterEnergy func() (float64, error), battery
case battery != nil && meterEnergy != nil:
return &struct {
api.Meter
*Tesla
api.Battery
api.MeterEnergy
}{
Meter: base,
Tesla: base,
Battery: &decorateTeslaBatteryImpl{
battery: battery,
},