From ec0831cf36a371e2fb6c92281688697b85f1efd6 Mon Sep 17 00:00:00 2001 From: andig Date: Thu, 13 May 2021 10:54:58 +0200 Subject: [PATCH] Shorten call to create decorators by using go:generate env settings (#1010) --- cmd/tools/decorate.go | 14 +++++++++++++- internal/charger/easee.go | 8 ++++++++ internal/charger/evsewifi.go | 2 +- internal/charger/phoenix-em-eth.go | 2 +- internal/charger/phoenix-ev-eth.go | 2 +- internal/charger/wallbe.go | 2 +- internal/charger/warp.go | 2 +- internal/meter/meter.go | 2 +- internal/meter/modbus.go | 2 +- internal/meter/sma.go | 2 +- internal/meter/tesla.go | 2 +- internal/vehicle/vehicle.go | 2 +- 12 files changed, 31 insertions(+), 11 deletions(-) diff --git a/cmd/tools/decorate.go b/cmd/tools/decorate.go index 7c84e1f240..a772b0a037 100644 --- a/cmd/tools/decorate.go +++ b/cmd/tools/decorate.go @@ -198,6 +198,11 @@ func main() { pflag.Usage = Usage pflag.Parse() + // read target from go:generate + if gopkg, ok := os.LookupEnv("GOPACKAGE"); *pkg == "" && ok { + pkg = &gopkg + } + if *base == "" || *pkg == "" || len(*types) == 0 { Usage() os.Exit(2) @@ -218,7 +223,14 @@ func main() { generated := strings.TrimSpace(buf.String()) + "\n" var out io.Writer = os.Stdout - if *target != "" { + + // read target from go:generate + if gofile, ok := os.LookupEnv("GOFILE"); *target == "" && ok { + gofile = strings.TrimSuffix(gofile, ".go") + "_decorators.go" + target = &gofile + } + + if target != nil { name := *target if !strings.HasSuffix(name, ".go") { name += ".go" diff --git a/internal/charger/easee.go b/internal/charger/easee.go index 10a6a3e1f0..9a03bb7b39 100644 --- a/internal/charger/easee.go +++ b/internal/charger/easee.go @@ -104,6 +104,14 @@ func NewEasee(user, password, charger string, cache time.Duration) (*Easee, erro c.site = site.ID c.circuit = site.Circuits[0].ID + uri := fmt.Sprintf("%s/streams/amqp", easee.API) + req, err := request.New(http.MethodGet, uri, nil, request.JSONEncoding) + if err == nil { + var res map[string]interface{} + _ = c.DoJSON(req, &res) + fmt.Println(res) + } + return c, err } diff --git a/internal/charger/evsewifi.go b/internal/charger/evsewifi.go index d370760f03..20f6fb628e 100644 --- a/internal/charger/evsewifi.go +++ b/internal/charger/evsewifi.go @@ -58,7 +58,7 @@ func init() { registry.Add("evsewifi", NewEVSEWifiFromConfig) } -//go:generate go run ../../cmd/tools/decorate.go -p charger -f decorateEVSE -o evsewifi_decorators -b *EVSEWifi -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.MeterCurrent,Currents,func() (float64, float64, float64, error)" +//go:generate go run ../../cmd/tools/decorate.go -f decorateEVSE -b *EVSEWifi -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.MeterCurrent,Currents,func() (float64, float64, float64, error)" // NewEVSEWifiFromConfig creates a EVSEWifi charger from generic config func NewEVSEWifiFromConfig(other map[string]interface{}) (api.Charger, error) { diff --git a/internal/charger/phoenix-em-eth.go b/internal/charger/phoenix-em-eth.go index ba1d872b7f..7fb385fa4b 100644 --- a/internal/charger/phoenix-em-eth.go +++ b/internal/charger/phoenix-em-eth.go @@ -32,7 +32,7 @@ func init() { registry.Add("phoenix-em-eth", NewPhoenixEMEthFromConfig) } -//go:generate go run ../../cmd/tools/decorate.go -p charger -f decoratePhoenixEMEth -o phoenix-em-eth_decorators -b *PhoenixEMEth -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.MeterCurrent,Currents,func() (float64, float64, float64, error)" +//go:generate go run ../../cmd/tools/decorate.go -f decoratePhoenixEMEth -b *PhoenixEMEth -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.MeterCurrent,Currents,func() (float64, float64, float64, error)" // NewPhoenixEMEthFromConfig creates a Phoenix charger from generic config func NewPhoenixEMEthFromConfig(other map[string]interface{}) (api.Charger, error) { diff --git a/internal/charger/phoenix-ev-eth.go b/internal/charger/phoenix-ev-eth.go index ec3be43ee0..1bddde75ee 100644 --- a/internal/charger/phoenix-ev-eth.go +++ b/internal/charger/phoenix-ev-eth.go @@ -33,7 +33,7 @@ func init() { registry.Add("phoenix-ev-eth", NewPhoenixEVEthFromConfig) } -//go:generate go run ../../cmd/tools/decorate.go -p charger -f decoratePhoenixEVEth -o phoenix-ev-eth_decorators -b *PhoenixEVEth -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.MeterCurrent,Currents,func() (float64, float64, float64, error)" +//go:generate go run ../../cmd/tools/decorate.go -f decoratePhoenixEVEth -b *PhoenixEVEth -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.MeterCurrent,Currents,func() (float64, float64, float64, error)" // NewPhoenixEVEthFromConfig creates a Phoenix charger from generic config func NewPhoenixEVEthFromConfig(other map[string]interface{}) (api.Charger, error) { diff --git a/internal/charger/wallbe.go b/internal/charger/wallbe.go index 577695a075..d50371b3fe 100644 --- a/internal/charger/wallbe.go +++ b/internal/charger/wallbe.go @@ -45,7 +45,7 @@ func init() { registry.Add("wallbe", NewWallbeFromConfig) } -// go:generate go run ../cmd/tools/decorate.go -p charger -f decorateWallbe -o wallbe_decorators -b *Wallbe -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.MeterCurrent,Currents,func() (float64, float64, float64, error)" -t "api.ChargerEx,MaxCurrentMillis,func(current float64) error" +// go:generate go run ../cmd/tools/decorate.go -f decorateWallbe -b *Wallbe -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.MeterCurrent,Currents,func() (float64, float64, float64, error)" -t "api.ChargerEx,MaxCurrentMillis,func(current float64) error" // NewWallbeFromConfig creates a Wallbe charger from generic config func NewWallbeFromConfig(other map[string]interface{}) (api.Charger, error) { diff --git a/internal/charger/warp.go b/internal/charger/warp.go index a6be67c856..643e87d5bf 100644 --- a/internal/charger/warp.go +++ b/internal/charger/warp.go @@ -64,7 +64,7 @@ type Warp struct { enabled bool // cache } -//go:generate go run ../../cmd/tools/decorate.go -p charger -f decorateWarp -o warp_decorators -b *Warp -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" +//go:generate go run ../../cmd/tools/decorate.go -f decorateWarp -b *Warp -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" // NewWarp creates a new configurable charger func NewWarp(mqttconf mqtt.Config, topic string, timeout time.Duration) (*Warp, error) { diff --git a/internal/meter/meter.go b/internal/meter/meter.go index 11751fbea3..fdcfa284f8 100644 --- a/internal/meter/meter.go +++ b/internal/meter/meter.go @@ -15,7 +15,7 @@ func init() { registry.Add(internal.Custom, NewConfigurableFromConfig) } -//go:generate go run ../../cmd/tools/decorate.go -p meter -f decorateMeter -b api.Meter -o meter_decorators -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.MeterCurrent,Currents,func() (float64, float64, float64, error)" -t "api.Battery,SoC,func() (float64, error)" +//go:generate go run ../../cmd/tools/decorate.go -f decorateMeter -b api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.MeterCurrent,Currents,func() (float64, float64, float64, error)" -t "api.Battery,SoC,func() (float64, error)" // NewConfigurableFromConfig creates api.Meter from config func NewConfigurableFromConfig(other map[string]interface{}) (api.Meter, error) { diff --git a/internal/meter/modbus.go b/internal/meter/modbus.go index 6e28a7b55c..043f0f2f9f 100644 --- a/internal/meter/modbus.go +++ b/internal/meter/modbus.go @@ -27,7 +27,7 @@ func init() { registry.Add("modbus", NewModbusFromConfig) } -//go:generate go run ../../cmd/tools/decorate.go -p meter -f decorateModbus -b api.Meter -o modbus_decorators -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.Battery,SoC,func() (float64, error)" +//go:generate go run ../../cmd/tools/decorate.go -f decorateModbus -b api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.Battery,SoC,func() (float64, error)" // NewModbusFromConfig creates api.Meter from config func NewModbusFromConfig(other map[string]interface{}) (api.Meter, error) { diff --git a/internal/meter/sma.go b/internal/meter/sma.go index 59407c17ca..ec206318ff 100644 --- a/internal/meter/sma.go +++ b/internal/meter/sma.go @@ -37,7 +37,7 @@ func init() { registry.Add("sma", NewSMAFromConfig) } -//go:generate go run ../../cmd/tools/decorate.go -p meter -f decorateSMA -b api.Meter -o sma_decorators -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" +//go:generate go run ../../cmd/tools/decorate.go -f decorateSMA -b api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" // NewSMAFromConfig creates a SMA Meter from generic config func NewSMAFromConfig(other map[string]interface{}) (api.Meter, error) { diff --git a/internal/meter/tesla.go b/internal/meter/tesla.go index 084ab3dd3c..84846718e6 100644 --- a/internal/meter/tesla.go +++ b/internal/meter/tesla.go @@ -26,7 +26,7 @@ func init() { registry.Add("tesla", NewTeslaFromConfig) } -//go:generate go run ../../cmd/tools/decorate.go -p meter -f decorateTesla -b api.Meter -o tesla_decorators -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 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) { diff --git a/internal/vehicle/vehicle.go b/internal/vehicle/vehicle.go index cd8903fd37..ae5b32cbdc 100644 --- a/internal/vehicle/vehicle.go +++ b/internal/vehicle/vehicle.go @@ -33,7 +33,7 @@ func (m *embed) Identify() (string, error) { return m.Identifier_, nil } -//go:generate go run ../../cmd/tools/decorate.go -p vehicle -f decorateVehicle -b api.Vehicle -o vehicle_decorators -t "api.ChargeState,Status,func() (api.ChargeStatus, error)" -t "api.VehicleRange,Range,func() (int64, error)" +//go:generate go run ../../cmd/tools/decorate.go -f decorateVehicle -b api.Vehicle -t "api.ChargeState,Status,func() (api.ChargeStatus, error)" -t "api.VehicleRange,Range,func() (int64, error)" // Vehicle is an api.Vehicle implementation with configurable getters and setters. type Vehicle struct {