diff --git a/charger/abl.go b/charger/abl.go index edaed4672..9a5953b2e 100644 --- a/charger/abl.go +++ b/charger/abl.go @@ -96,7 +96,7 @@ func NewABLeMHFromConfig(other map[string]interface{}) (api.Charger, error) { return NewABLeMH(cc.URI, cc.Device, cc.Comset, cc.Baudrate, cc.ID, cc.Timeout) } -//go:generate go run ../cmd/tools/decorate.go -f decorateABLeMH -b *ABLeMH -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" +//go:generate decorate -f decorateABLeMH -b *ABLeMH -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" // NewABLeMH creates ABLeMH charger func NewABLeMH(uri, device, comset string, baudrate int, slaveID uint8, timeout time.Duration) (api.Charger, error) { diff --git a/charger/alfen.go b/charger/alfen.go index dc3ff4a6f..97cabc20b 100644 --- a/charger/alfen.go +++ b/charger/alfen.go @@ -56,7 +56,7 @@ func init() { registry.AddCtx("alfen", NewAlfenFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decorateAlfen -b *Alfen -r api.Charger -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.PhaseGetter,GetPhases,func() (int, error)" +//go:generate decorate -f decorateAlfen -b *Alfen -r api.Charger -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.PhaseGetter,GetPhases,func() (int, error)" // NewAlfenFromConfig creates a Alfen charger from generic config func NewAlfenFromConfig(ctx context.Context, other map[string]interface{}) (api.Charger, error) { diff --git a/charger/amperfied.go b/charger/amperfied.go index 854d6270a..23c046e42 100644 --- a/charger/amperfied.go +++ b/charger/amperfied.go @@ -58,7 +58,7 @@ func init() { registry.AddCtx("amperfied", NewAmperfiedFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decorateAmperfied -b *Amperfied -r api.Charger -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.PhaseGetter,GetPhases,func() (int, error)" +//go:generate decorate -f decorateAmperfied -b *Amperfied -r api.Charger -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.PhaseGetter,GetPhases,func() (int, error)" // NewAmperfiedFromConfig creates a Amperfied charger from generic config func NewAmperfiedFromConfig(ctx context.Context, other map[string]interface{}) (api.Charger, error) { diff --git a/charger/bender.go b/charger/bender.go index 51a531fbe..e7d5a0f7b 100644 --- a/charger/bender.go +++ b/charger/bender.go @@ -84,7 +84,7 @@ func NewBenderCCFromConfig(other map[string]interface{}) (api.Charger, error) { return NewBenderCC(cc.URI, cc.ID) } -//go:generate go run ../cmd/tools/decorate.go -f decorateBenderCC -b *BenderCC -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.Battery,Soc,func() (float64, error)" -t "api.Identifier,Identify,func() (string, error)" +//go:generate decorate -f decorateBenderCC -b *BenderCC -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.Battery,Soc,func() (float64, error)" -t "api.Identifier,Identify,func() (string, error)" // NewBenderCC creates BenderCC charger func NewBenderCC(uri string, id uint8) (api.Charger, error) { diff --git a/charger/cfos.go b/charger/cfos.go index a8e19b284..e16fc5544 100644 --- a/charger/cfos.go +++ b/charger/cfos.go @@ -37,7 +37,7 @@ func init() { registry.Add("cfos", NewCfosPowerBrainFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decorateCfos -b *CfosPowerBrain -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseSwitcher,Phases1p3p,func(int) error" +//go:generate decorate -f decorateCfos -b *CfosPowerBrain -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseSwitcher,Phases1p3p,func(int) error" // NewCfosPowerBrainFromConfig creates a cFos charger from generic config func NewCfosPowerBrainFromConfig(other map[string]interface{}) (api.Charger, error) { diff --git a/charger/charger.go b/charger/charger.go index 8a04d934c..d8278a961 100644 --- a/charger/charger.go +++ b/charger/charger.go @@ -24,7 +24,7 @@ func init() { registry.AddCtx(api.Custom, NewConfigurableFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decorateCustom -b *Charger -r api.Charger -t "api.ChargerEx,MaxCurrentMillis,func(float64) error" -t "api.Identifier,Identify,func() (string, error)" -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.Resurrector,WakeUp,func() error" -t "api.Battery,Soc,func() (float64, error)" -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" +//go:generate decorate -f decorateCustom -b *Charger -r api.Charger -t "api.ChargerEx,MaxCurrentMillis,func(float64) error" -t "api.Identifier,Identify,func() (string, error)" -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.Resurrector,WakeUp,func() error" -t "api.Battery,Soc,func() (float64, error)" -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" // NewConfigurableFromConfig creates a new configurable charger func NewConfigurableFromConfig(ctx context.Context, other map[string]interface{}) (api.Charger, error) { diff --git a/charger/eebus.go b/charger/eebus.go index e8fbe9d62..464dfa101 100644 --- a/charger/eebus.go +++ b/charger/eebus.go @@ -72,7 +72,7 @@ func NewEEBusFromConfig(other map[string]interface{}) (api.Charger, error) { return NewEEBus(cc.Ski, cc.Ip, cc.Meter, cc.ChargedEnergy, cc.VasVW) } -//go:generate go run ../cmd/tools/decorate.go -f decorateEEBus -b *EEBus -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.ChargeRater,ChargedEnergy,func() (float64, error)" +//go:generate decorate -f decorateEEBus -b *EEBus -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.ChargeRater,ChargedEnergy,func() (float64, error)" // NewEEBus creates EEBus charger func NewEEBus(ski, ip string, hasMeter, hasChargedEnergy, vasVW bool) (api.Charger, error) { diff --git a/charger/em2go.go b/charger/em2go.go index 47887facd..7712db637 100644 --- a/charger/em2go.go +++ b/charger/em2go.go @@ -66,7 +66,7 @@ func init() { registry.Add("em2go-home", NewEm2GoFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decorateEm2Go -b *Em2Go -r api.Charger -t "api.ChargerEx,MaxCurrentMillis,func(float64) error" -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.PhaseGetter,GetPhases,func() (int, error)" +//go:generate decorate -f decorateEm2Go -b *Em2Go -r api.Charger -t "api.ChargerEx,MaxCurrentMillis,func(float64) error" -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.PhaseGetter,GetPhases,func() (int, error)" // NewEm2GoFromConfig creates a Em2Go charger from generic config func NewEm2GoFromConfig(other map[string]interface{}) (api.Charger, error) { diff --git a/charger/evsewifi.go b/charger/evsewifi.go index 015d162c9..b7a83ad5b 100644 --- a/charger/evsewifi.go +++ b/charger/evsewifi.go @@ -28,7 +28,7 @@ func init() { registry.Add("evsewifi", NewEVSEWifiFromConfig) } -//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.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.ChargerEx,MaxCurrentMillis,func(float64) error" -t "api.Identifier,Identify,func() (string, error)" +//go:generate decorate -f decorateEVSE -b *EVSEWifi -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.ChargerEx,MaxCurrentMillis,func(float64) error" -t "api.Identifier,Identify,func() (string, error)" // NewEVSEWifiFromConfig creates a EVSEWifi charger from generic config func NewEVSEWifiFromConfig(other map[string]interface{}) (api.Charger, error) { diff --git a/charger/go-e.go b/charger/go-e.go index b920f42e9..6418ce86d 100644 --- a/charger/go-e.go +++ b/charger/go-e.go @@ -41,7 +41,7 @@ func init() { registry.Add("go-e", NewGoEFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decorateGoE -b *GoE -r api.Charger -t "api.PhaseSwitcher,Phases1p3p,func(int) error" +//go:generate decorate -f decorateGoE -b *GoE -r api.Charger -t "api.PhaseSwitcher,Phases1p3p,func(int) error" // NewGoEFromConfig creates a go-e charger from generic config func NewGoEFromConfig(other map[string]interface{}) (api.Charger, error) { diff --git a/charger/hardybarth-salia.go b/charger/hardybarth-salia.go index 99defeaef..1763b84c7 100644 --- a/charger/hardybarth-salia.go +++ b/charger/hardybarth-salia.go @@ -53,7 +53,7 @@ func init() { registry.AddCtx("hardybarth-salia", NewSaliaFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decorateSalia -b *Salia -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.PhaseGetter,GetPhases,func() (int, error)" +//go:generate decorate -f decorateSalia -b *Salia -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.PhaseGetter,GetPhases,func() (int, error)" // NewSaliaFromConfig creates a Salia cPH2 charger from generic config func NewSaliaFromConfig(ctx context.Context, other map[string]interface{}) (api.Charger, error) { diff --git a/charger/innogy.go b/charger/innogy.go index fdc3ff43d..463745ed7 100644 --- a/charger/innogy.go +++ b/charger/innogy.go @@ -82,7 +82,7 @@ func NewInnogyFromConfig(other map[string]interface{}) (api.Charger, error) { return decorateInnogy(wb, totalEnergy, voltages), nil } -//go:generate go run ../cmd/tools/decorate.go -f decorateInnogy -b *Innogy -r api.Charger -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" +//go:generate decorate -f decorateInnogy -b *Innogy -r api.Charger -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" // NewInnogy creates a Innogy charger func NewInnogy(uri string, id uint8) (*Innogy, error) { diff --git a/charger/keba-modbus.go b/charger/keba-modbus.go index 3f37da720..d34368aca 100644 --- a/charger/keba-modbus.go +++ b/charger/keba-modbus.go @@ -66,7 +66,7 @@ func init() { registry.AddCtx("keba-modbus", NewKebaFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decorateKeba -b *Keba -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.Identifier,Identify,func() (string, error)" -t "api.StatusReasoner,StatusReason,func() (api.Reason, error)" -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.PhaseGetter,GetPhases,func() (int, error)" +//go:generate decorate -f decorateKeba -b *Keba -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.Identifier,Identify,func() (string, error)" -t "api.StatusReasoner,StatusReason,func() (api.Reason, error)" -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.PhaseGetter,GetPhases,func() (int, error)" // NewKebaFromConfig creates a new Keba ModbusTCP charger func NewKebaFromConfig(ctx context.Context, other map[string]interface{}) (api.Charger, error) { diff --git a/charger/keba-udp.go b/charger/keba-udp.go index c37528361..7b7fefbe3 100644 --- a/charger/keba-udp.go +++ b/charger/keba-udp.go @@ -32,7 +32,7 @@ func init() { registry.Add("keba-udp", NewKebaUdpFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decorateKebaUdp -b *KebaUdp -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" +//go:generate decorate -f decorateKebaUdp -b *KebaUdp -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" // NewKebaUdpFromConfig creates a new Keba UDP charger func NewKebaUdpFromConfig(other map[string]interface{}) (api.Charger, error) { diff --git a/charger/kse.go b/charger/kse.go index a939c9bf6..c33bee912 100644 --- a/charger/kse.go +++ b/charger/kse.go @@ -70,7 +70,7 @@ func NewKSEFromConfig(other map[string]interface{}) (api.Charger, error) { return NewKSE(cc.URI, cc.Device, cc.Comset, cc.Baudrate, cc.ID) } -//go:generate go run ../cmd/tools/decorate.go -f decorateKSE -b *KSE -r api.Charger -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.PhaseGetter,GetPhases,func() (int, error)" -t "api.Identifier,Identify,func() (string, error)" +//go:generate decorate -f decorateKSE -b *KSE -r api.Charger -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.PhaseGetter,GetPhases,func() (int, error)" -t "api.Identifier,Identify,func() (string, error)" // NewKSE creates KSE charger func NewKSE(uri, device, comset string, baudrate int, slaveID uint8) (api.Charger, error) { diff --git a/charger/nrggen2.go b/charger/nrggen2.go index 5afcc2509..554f6333b 100644 --- a/charger/nrggen2.go +++ b/charger/nrggen2.go @@ -48,7 +48,7 @@ func init() { registry.Add("nrggen2", NewNRGKickGen2FromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decorateNRGKickGen2 -b *NRGKickGen2 -r api.Charger -t "api.PhaseSwitcher,Phases1p3p,func(int) error" +//go:generate decorate -f decorateNRGKickGen2 -b *NRGKickGen2 -r api.Charger -t "api.PhaseSwitcher,Phases1p3p,func(int) error" // NewNRGKickGen2FromConfig creates a NRGKickGen2 charger from generic config func NewNRGKickGen2FromConfig(other map[string]interface{}) (api.Charger, error) { diff --git a/charger/ocpp.go b/charger/ocpp.go index dac0087d5..308d4c4b0 100644 --- a/charger/ocpp.go +++ b/charger/ocpp.go @@ -134,7 +134,7 @@ func NewOCPPFromConfig(other map[string]interface{}) (api.Charger, error) { return decorateOCPP(c, powerG, totalEnergyG, currentsG, voltagesG, currentG, phasesS, socG), nil } -//go:generate go run ../cmd/tools/decorate.go -f decorateOCPP -b *OCPP -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.CurrentGetter,GetMaxCurrent,func() (float64, error)" -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.Battery,Soc,func() (float64, error)" +//go:generate decorate -f decorateOCPP -b *OCPP -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.CurrentGetter,GetMaxCurrent,func() (float64, error)" -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.Battery,Soc,func() (float64, error)" // NewOCPP creates OCPP charger func NewOCPP(id string, connector int, idTag string, diff --git a/charger/openevse.go b/charger/openevse.go index a0cab2951..01b79c7bb 100644 --- a/charger/openevse.go +++ b/charger/openevse.go @@ -29,7 +29,7 @@ func init() { registry.Add("openevse", NewOpenEVSEFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decorateOpenEVSE -b *OpenEVSE -r api.Charger -t "api.PhaseSwitcher,Phases1p3p,func(int) error" +//go:generate decorate -f decorateOpenEVSE -b *OpenEVSE -r api.Charger -t "api.PhaseSwitcher,Phases1p3p,func(int) error" // NewOpenEVSEFromConfig creates an OpenEVSE charger from generic config func NewOpenEVSEFromConfig(other map[string]interface{}) (api.Charger, error) { diff --git a/charger/openwb-2.0.go b/charger/openwb-2.0.go index 86fb4da90..961d7b7e9 100644 --- a/charger/openwb-2.0.go +++ b/charger/openwb-2.0.go @@ -40,7 +40,7 @@ func init() { // https://openwb.de/main/wp-content/uploads/2023/10/ModbusTCP-openWB-series2-Pro-1.pdf -//go:generate go run ../cmd/tools/decorate.go -f decorateOpenWB20 -b *OpenWB20 -r api.Charger -t "api.Identifier,Identify,func() (string, error)" +//go:generate decorate -f decorateOpenWB20 -b *OpenWB20 -r api.Charger -t "api.Identifier,Identify,func() (string, error)" // NewOpenWB20FromConfig creates a OpenWB20 charger from generic config func NewOpenWB20FromConfig(other map[string]interface{}) (api.Charger, error) { diff --git a/charger/openwb.go b/charger/openwb.go index 0f41816c9..e4de91d00 100644 --- a/charger/openwb.go +++ b/charger/openwb.go @@ -30,7 +30,7 @@ type OpenWB struct { authS func(string) error } -//go:generate go run ../cmd/tools/decorate.go -f decorateOpenWB -b *OpenWB -r api.Charger -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.Battery,Soc,func() (float64, error)" +//go:generate decorate -f decorateOpenWB -b *OpenWB -r api.Charger -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.Battery,Soc,func() (float64, error)" // NewOpenWBFromConfig creates a new configurable charger func NewOpenWBFromConfig(other map[string]interface{}) (api.Charger, error) { diff --git a/charger/pcelectric.go b/charger/pcelectric.go index 7f0a0f116..e2ef8b018 100644 --- a/charger/pcelectric.go +++ b/charger/pcelectric.go @@ -30,7 +30,7 @@ func init() { registry.Add("pcelectric", NewPCElectricFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decoratePCE -b *PCElectric -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" +//go:generate decorate -f decoratePCE -b *PCElectric -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" // NewPCElectricFromConfig creates a PCElectric charger from generic config func NewPCElectricFromConfig(other map[string]interface{}) (api.Charger, error) { diff --git a/charger/peblar.go b/charger/peblar.go index 8e696192e..9bbae2b90 100644 --- a/charger/peblar.go +++ b/charger/peblar.go @@ -70,7 +70,7 @@ func init() { registry.Add("peblar", NewPeblarFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decoratePeblar -b *Peblar -r api.Charger -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.PhaseGetter,GetPhases,func() (int, error)" +//go:generate decorate -f decoratePeblar -b *Peblar -r api.Charger -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.PhaseGetter,GetPhases,func() (int, error)" // NewPeblarFromConfig creates a Peblar charger from generic config func NewPeblarFromConfig(other map[string]interface{}) (api.Charger, error) { diff --git a/charger/phoenix-charx.go b/charger/phoenix-charx.go index 4aa61a079..2099487c6 100644 --- a/charger/phoenix-charx.go +++ b/charger/phoenix-charx.go @@ -45,7 +45,7 @@ func init() { registry.Add("phoenix-charx", NewPhoenixCharxFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decoratePhoenixCharx -b *PhoenixCharx -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" +//go:generate decorate -f decoratePhoenixCharx -b *PhoenixCharx -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" // NewPhoenixCharxFromConfig creates a Phoenix charger from generic config func NewPhoenixCharxFromConfig(other map[string]interface{}) (api.Charger, error) { diff --git a/charger/phoenix-em-eth.go b/charger/phoenix-em-eth.go index 7d02b531e..462896aa7 100644 --- a/charger/phoenix-em-eth.go +++ b/charger/phoenix-em-eth.go @@ -31,7 +31,7 @@ func init() { registry.Add("phoenix-em-eth", NewPhoenixEMEthFromConfig) } -//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.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" +//go:generate decorate -f decoratePhoenixEMEth -b *PhoenixEMEth -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,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/charger/phoenix-ev-eth.go b/charger/phoenix-ev-eth.go index 4d98ca48b..ec1b542e3 100644 --- a/charger/phoenix-ev-eth.go +++ b/charger/phoenix-ev-eth.go @@ -61,7 +61,7 @@ func init() { registry.Add("phoenix-ev-eth", NewPhoenixEVEthFromConfig) } -//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.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.ChargerEx,MaxCurrentMillis,func(float64) error" -t "api.Identifier,Identify,func() (string, error)" +//go:generate decorate -f decoratePhoenixEVEth -b *PhoenixEVEth -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.ChargerEx,MaxCurrentMillis,func(float64) error" -t "api.Identifier,Identify,func() (string, error)" // NewPhoenixEVEthFromConfig creates a PhoenixEVEth charger from generic config func NewPhoenixEVEthFromConfig(other map[string]interface{}) (api.Charger, error) { diff --git a/charger/pulsares.go b/charger/pulsares.go index 71c54e348..33c653874 100644 --- a/charger/pulsares.go +++ b/charger/pulsares.go @@ -51,7 +51,7 @@ func init() { registry.AddCtx("pulsares", NewPulsaresFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decoratePulsares -b *Pulsares -r api.Charger -t "api.PhaseSwitcher,Phases1p3p,func(int) error" +//go:generate decorate -f decoratePulsares -b *Pulsares -r api.Charger -t "api.PhaseSwitcher,Phases1p3p,func(int) error" // NewPulsaresFromConfig creates a Pulsares charger from generic config func NewPulsaresFromConfig(ctx context.Context, other map[string]interface{}) (api.Charger, error) { diff --git a/charger/switchsocket.go b/charger/switchsocket.go index a9f9ea8ea..17107501e 100644 --- a/charger/switchsocket.go +++ b/charger/switchsocket.go @@ -19,7 +19,7 @@ type SwitchSocket struct { *switchSocket } -//go:generate go run ../cmd/tools/decorate.go -f decorateSwitchSocket -b *SwitchSocket -r api.Charger -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" +//go:generate decorate -f decorateSwitchSocket -b *SwitchSocket -r api.Charger -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" func NewSwitchSocketFromConfig(ctx context.Context, other map[string]interface{}) (api.Charger, error) { var cc struct { diff --git a/charger/tasmota.go b/charger/tasmota.go index bba34e9af..222cecb41 100644 --- a/charger/tasmota.go +++ b/charger/tasmota.go @@ -23,7 +23,7 @@ func init() { registry.Add("tasmota", NewTasmotaFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decorateTasmota -b *Tasmota -r api.Charger -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" +//go:generate decorate -f decorateTasmota -b *Tasmota -r api.Charger -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" // NewTasmotaFromConfig creates a Tasmota charger from generic config func NewTasmotaFromConfig(other map[string]interface{}) (api.Charger, error) { diff --git a/charger/wallbe.go b/charger/wallbe.go index 74577420d..7923f380c 100644 --- a/charger/wallbe.go +++ b/charger/wallbe.go @@ -40,7 +40,7 @@ func init() { registry.Add("wallbe", NewWallbeFromConfig) } -//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.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.ChargerEx,MaxCurrentMillis,func(float64) error" +//go:generate decorate -f decorateWallbe -b *Wallbe -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.ChargerEx,MaxCurrentMillis,func(float64) error" // NewWallbeFromConfig creates a Wallbe charger from generic config func NewWallbeFromConfig(other map[string]interface{}) (api.Charger, error) { diff --git a/charger/warp2.go b/charger/warp2.go index 5a346f61f..a477a3ab9 100644 --- a/charger/warp2.go +++ b/charger/warp2.go @@ -36,7 +36,7 @@ func init() { registry.Add("warp-fw2", NewWarp2FromConfig) // deprecated } -//go:generate go run ../cmd/tools/decorate.go -f decorateWarp2 -b *Warp2 -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.Identifier,Identify,func() (string, error)" -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.PhaseGetter,GetPhases,func() (int, error)" +//go:generate decorate -f decorateWarp2 -b *Warp2 -r api.Charger -t "api.Meter,CurrentPower,func() (float64, error)" -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.Identifier,Identify,func() (string, error)" -t "api.PhaseSwitcher,Phases1p3p,func(int) error" -t "api.PhaseGetter,GetPhases,func() (int, error)" // NewWarpFromConfig creates a new configurable charger func NewWarp2FromConfig(other map[string]interface{}) (api.Charger, error) { diff --git a/cmd/tools/decorate.go b/cmd/decorate/decorate.go similarity index 100% rename from cmd/tools/decorate.go rename to cmd/decorate/decorate.go diff --git a/cmd/tools/decorate.tpl b/cmd/decorate/decorate.tpl similarity index 100% rename from cmd/tools/decorate.tpl rename to cmd/decorate/decorate.tpl diff --git a/cmd/tools/decorate_decorators.go b/cmd/decorate/decorate_decorators.go similarity index 100% rename from cmd/tools/decorate_decorators.go rename to cmd/decorate/decorate_decorators.go diff --git a/cmd/tools/decorate_test.go b/cmd/decorate/decorate_test.go similarity index 100% rename from cmd/tools/decorate_test.go rename to cmd/decorate/decorate_test.go diff --git a/meter/bosch_bpts5_hybrid.go b/meter/bosch_bpts5_hybrid.go index 44fe40bed..581fee088 100644 --- a/meter/bosch_bpts5_hybrid.go +++ b/meter/bosch_bpts5_hybrid.go @@ -46,7 +46,7 @@ func init() { registry.Add("bosch-bpt", NewBoschBpts5HybridFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decorateBoschBpts5Hybrid -b api.Meter -t "api.Battery,Soc,func() (float64, error)" +//go:generate decorate -f decorateBoschBpts5Hybrid -b api.Meter -t "api.Battery,Soc,func() (float64, error)" // NewBoschBpts5HybridFromConfig creates a Bosch BPT-S 5 Hybrid Meter from generic config func NewBoschBpts5HybridFromConfig(other map[string]interface{}) (api.Meter, error) { diff --git a/meter/dsmr.go b/meter/dsmr.go index fb730958a..7f26d9612 100644 --- a/meter/dsmr.go +++ b/meter/dsmr.go @@ -71,7 +71,7 @@ func init() { registry.Add("dsmr", NewDsmrFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decorateDsmr -b api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" +//go:generate decorate -f decorateDsmr -b api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" // NewDsmrFromConfig creates a DSMR meter from generic config func NewDsmrFromConfig(other map[string]interface{}) (api.Meter, error) { diff --git a/meter/e3dc.go b/meter/e3dc.go index 0323e7fbd..89c530194 100644 --- a/meter/e3dc.go +++ b/meter/e3dc.go @@ -26,7 +26,7 @@ func init() { registry.Add("e3dc-rscp", NewE3dcFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decorateE3dc -b *E3dc -r api.Meter -t "api.BatteryCapacity,Capacity,func() float64" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatteryController,SetBatteryMode,func(api.BatteryMode) error" +//go:generate decorate -f decorateE3dc -b *E3dc -r api.Meter -t "api.BatteryCapacity,Capacity,func() float64" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatteryController,SetBatteryMode,func(api.BatteryMode) error" func NewE3dcFromConfig(other map[string]interface{}) (api.Meter, error) { cc := struct { diff --git a/meter/goodwe-wifi.go b/meter/goodwe-wifi.go index 5cb6d4303..ccdea87d4 100644 --- a/meter/goodwe-wifi.go +++ b/meter/goodwe-wifi.go @@ -18,7 +18,7 @@ func init() { registry.Add("goodwe-wifi", NewGoodWeWifiFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decorateGoodWeWifi -b *goodWeWiFi -r api.Meter -t "api.Battery,Soc,func() (float64, error)" +//go:generate decorate -f decorateGoodWeWifi -b *goodWeWiFi -r api.Meter -t "api.Battery,Soc,func() (float64, error)" // TODO deprecated remove diff --git a/meter/lgess.go b/meter/lgess.go index 72b978fc9..87ed4b861 100644 --- a/meter/lgess.go +++ b/meter/lgess.go @@ -54,7 +54,7 @@ func init() { registry.Add("lgess15", NewLgEss15FromConfig) } -//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)" -t "api.BatteryCapacity,Capacity,func() float64" +//go:generate decorate -f decorateLgEss -b *LgEss -r api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatteryCapacity,Capacity,func() float64" func NewLgEss8FromConfig(other map[string]interface{}) (api.Meter, error) { return NewLgEssFromConfig(other, lgpcs.LgEss8) diff --git a/meter/mbmd.go b/meter/mbmd.go index 6a0dcbf4b..2c4e19c73 100644 --- a/meter/mbmd.go +++ b/meter/mbmd.go @@ -26,7 +26,7 @@ func init() { registry.Add("mbmd", NewModbusMbmdFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decorateModbusMbmd -b api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.PhasePowers,Powers,func() (float64, float64, float64, error)" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatteryCapacity,Capacity,func() float64" +//go:generate decorate -f decorateModbusMbmd -b api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.PhasePowers,Powers,func() (float64, float64, float64, error)" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatteryCapacity,Capacity,func() float64" // NewModbusMbmdFromConfig creates api.Meter from config func NewModbusMbmdFromConfig(other map[string]interface{}) (api.Meter, error) { diff --git a/meter/meter.go b/meter/meter.go index 000dd14f3..c24a77dfb 100644 --- a/meter/meter.go +++ b/meter/meter.go @@ -13,7 +13,7 @@ func init() { registry.AddCtx(api.Custom, NewConfigurableFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decorateMeter -b api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.PhasePowers,Powers,func() (float64, float64, float64, error)" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatteryCapacity,Capacity,func() float64" -t "api.MaxACPower,MaxACPower,func() float64" -t "api.BatteryController,SetBatteryMode,func(api.BatteryMode) error" +//go:generate decorate -f decorateMeter -b api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.PhasePowers,Powers,func() (float64, float64, float64, error)" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatteryCapacity,Capacity,func() float64" -t "api.MaxACPower,MaxACPower,func() float64" -t "api.BatteryController,SetBatteryMode,func(api.BatteryMode) error" // NewConfigurableFromConfig creates api.Meter from config func NewConfigurableFromConfig(ctx context.Context, other map[string]interface{}) (api.Meter, error) { diff --git a/meter/powerwall.go b/meter/powerwall.go index 9eb52076a..022fc0209 100644 --- a/meter/powerwall.go +++ b/meter/powerwall.go @@ -32,7 +32,7 @@ func init() { registry.Add("powerwall", NewPowerWallFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decoratePowerWall -b *PowerWall -r api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatteryCapacity,Capacity,func() float64" -t "api.BatteryController,SetBatteryMode,func(api.BatteryMode) error" +//go:generate decorate -f decoratePowerWall -b *PowerWall -r api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatteryCapacity,Capacity,func() float64" -t "api.BatteryController,SetBatteryMode,func(api.BatteryMode) error" // NewPowerWallFromConfig creates a PowerWall Powerwall Meter from generic config func NewPowerWallFromConfig(other map[string]interface{}) (api.Meter, error) { diff --git a/meter/rct.go b/meter/rct.go index 5fe094bfe..8f2170af6 100644 --- a/meter/rct.go +++ b/meter/rct.go @@ -52,7 +52,7 @@ func init() { registry.Add("rct", NewRCTFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decorateRCT -b *RCT -r api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatteryCapacity,Capacity,func() float64" +//go:generate decorate -f decorateRCT -b *RCT -r api.Meter -t "api.MeterEnergy,TotalEnergy,func() (float64, error)" -t "api.Battery,Soc,func() (float64, error)" -t "api.BatteryCapacity,Capacity,func() float64" // NewRCTFromConfig creates an RCT from generic config func NewRCTFromConfig(other map[string]interface{}) (api.Meter, error) { diff --git a/meter/sma.go b/meter/sma.go index 0f47c7b90..7715f22ff 100644 --- a/meter/sma.go +++ b/meter/sma.go @@ -24,7 +24,7 @@ func init() { registry.Add("sma", NewSMAFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decorateSMA -b *SMA -r api.Meter -t "api.Battery,Soc,func() (float64, error)" -t "api.BatteryCapacity,Capacity,func() float64" +//go:generate decorate -f decorateSMA -b *SMA -r api.Meter -t "api.Battery,Soc,func() (float64, error)" -t "api.BatteryCapacity,Capacity,func() float64" // NewSMAFromConfig creates an SMA meter from generic config func NewSMAFromConfig(other map[string]interface{}) (api.Meter, error) { diff --git a/meter/tasmota.go b/meter/tasmota.go index 933cdc137..890be1c33 100644 --- a/meter/tasmota.go +++ b/meter/tasmota.go @@ -20,7 +20,7 @@ func init() { registry.Add("tasmota", NewTasmotaFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decorateTasmota -b *Tasmota -r api.Meter -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" +//go:generate decorate -f decorateTasmota -b *Tasmota -r api.Meter -t "api.PhaseVoltages,Voltages,func() (float64, float64, float64, error)" -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" // NewTasmotaFromConfig creates a Tasmota meter from generic config func NewTasmotaFromConfig(other map[string]interface{}) (api.Meter, error) { diff --git a/meter/tq-em.go b/meter/tq-em.go index aea989d2a..214aa9a14 100644 --- a/meter/tq-em.go +++ b/meter/tq-em.go @@ -55,7 +55,7 @@ type TqEm struct { dataG func() (tqemData, error) } -//go:generate go run ../cmd/tools/decorate.go -f decorateTqEm -b api.Meter -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" +//go:generate decorate -f decorateTqEm -b api.Meter -t "api.PhaseCurrents,Currents,func() (float64, float64, float64, error)" // NewTqEmFromConfig creates a new configurable meter func NewTqEmFromConfig(other map[string]interface{}) (api.Meter, error) { diff --git a/tools.go b/tools.go index d27705adb..e19b1e023 100644 --- a/tools.go +++ b/tools.go @@ -4,5 +4,6 @@ package main import ( _ "github.com/dmarkham/enumer" + _ "github.com/evcc-io/evcc/cmd/decorate" _ "go.uber.org/mock/mockgen" ) diff --git a/vehicle/tronity.go b/vehicle/tronity.go index 06a685f11..323f4c510 100644 --- a/vehicle/tronity.go +++ b/vehicle/tronity.go @@ -49,7 +49,7 @@ func init() { registry.Add("tronity", NewTronityFromConfig) } -//go:generate go run ../cmd/tools/decorate.go -f decorateTronity -b *Tronity -r api.Vehicle -t "api.ChargeState,Status,func() (api.ChargeStatus, error)" -t "api.VehicleOdometer,Odometer,func() (float64, error)" -t "api.ChargeController,ChargeEnable,func(bool) error" +//go:generate decorate -f decorateTronity -b *Tronity -r api.Vehicle -t "api.ChargeState,Status,func() (api.ChargeStatus, error)" -t "api.VehicleOdometer,Odometer,func() (float64, error)" -t "api.ChargeController,ChargeEnable,func(bool) error" // NewTronityFromConfig creates a new vehicle func NewTronityFromConfig(other map[string]interface{}) (api.Vehicle, error) { diff --git a/vehicle/vehicle.go b/vehicle/vehicle.go index eaaa68a76..4342fb451 100644 --- a/vehicle/vehicle.go +++ b/vehicle/vehicle.go @@ -10,7 +10,7 @@ import ( "github.com/evcc-io/evcc/util" ) -//go:generate go run ../cmd/tools/decorate.go -f decorateVehicle -b api.Vehicle -t "api.SocLimiter,GetLimitSoc,func() (int64, error)" -t "api.ChargeState,Status,func() (api.ChargeStatus, error)" -t "api.VehicleRange,Range,func() (int64, error)" -t "api.VehicleOdometer,Odometer,func() (float64, error)" -t "api.VehicleClimater,Climater,func() (bool, error)" -t "api.CurrentController,MaxCurrent,func(int64) error" -t "api.CurrentGetter,GetMaxCurrent,func() (float64, error)" -t "api.VehicleFinishTimer,FinishTime,func() (time.Time, error)" -t "api.Resurrector,WakeUp,func() error" -t "api.ChargeController,ChargeEnable,func(bool) error" +//go:generate decorate -f decorateVehicle -b api.Vehicle -t "api.SocLimiter,GetLimitSoc,func() (int64, error)" -t "api.ChargeState,Status,func() (api.ChargeStatus, error)" -t "api.VehicleRange,Range,func() (int64, error)" -t "api.VehicleOdometer,Odometer,func() (float64, error)" -t "api.VehicleClimater,Climater,func() (bool, error)" -t "api.CurrentController,MaxCurrent,func(int64) error" -t "api.CurrentGetter,GetMaxCurrent,func() (float64, error)" -t "api.VehicleFinishTimer,FinishTime,func() (time.Time, error)" -t "api.Resurrector,WakeUp,func() error" -t "api.ChargeController,ChargeEnable,func(bool) error" // Vehicle is an api.Vehicle implementation with configurable getters and setters. type Vehicle struct {