Add st(a)rt, st(o)p, (w)akeup options to vehicle command (#2870)
This commit is contained in:
parent
627d2afa1b
commit
f952427674
3 changed files with 86 additions and 25 deletions
|
|
@ -18,20 +18,13 @@ var chargerCmd = &cobra.Command{
|
|||
Run: runCharger,
|
||||
}
|
||||
|
||||
const (
|
||||
pCurrent = "current"
|
||||
pEnable = "enable"
|
||||
pDisable = "disable"
|
||||
pWakeup = "wakeup"
|
||||
)
|
||||
|
||||
func init() {
|
||||
rootCmd.AddCommand(chargerCmd)
|
||||
chargerCmd.PersistentFlags().StringP("name", "n", "", "select charger by name")
|
||||
chargerCmd.PersistentFlags().IntP(pCurrent, "I", -1, "set current")
|
||||
chargerCmd.PersistentFlags().BoolP(pEnable, "e", false, pEnable)
|
||||
chargerCmd.PersistentFlags().BoolP(pDisable, "d", false, pDisable)
|
||||
chargerCmd.PersistentFlags().BoolP(pWakeup, "w", false, pWakeup)
|
||||
chargerCmd.PersistentFlags().StringP(flagName, "n", "", "select charger by name")
|
||||
chargerCmd.PersistentFlags().IntP(flagCurrent, "I", -1, "set current")
|
||||
chargerCmd.PersistentFlags().BoolP(flagEnable, "e", false, flagEnable)
|
||||
chargerCmd.PersistentFlags().BoolP(flagDisable, "d", false, flagDisable)
|
||||
chargerCmd.PersistentFlags().BoolP(flagWakeup, "w", false, flagWakeup)
|
||||
}
|
||||
|
||||
func runCharger(cmd *cobra.Command, args []string) {
|
||||
|
|
@ -50,7 +43,7 @@ func runCharger(cmd *cobra.Command, args []string) {
|
|||
}
|
||||
|
||||
// select single charger
|
||||
if name := cmd.PersistentFlags().Lookup("name").Value.String(); name != "" {
|
||||
if name := cmd.PersistentFlags().Lookup(flagName).Value.String(); name != "" {
|
||||
for _, cfg := range conf.Chargers {
|
||||
if cfg.Name == name {
|
||||
conf.Chargers = []qualifiedConfig{cfg}
|
||||
|
|
@ -73,35 +66,43 @@ func runCharger(cmd *cobra.Command, args []string) {
|
|||
}
|
||||
|
||||
var current int64
|
||||
if flag := cmd.PersistentFlags().Lookup(pCurrent).Value.String(); flag != "-1" {
|
||||
if flag := cmd.PersistentFlags().Lookup(flagCurrent); flag.Changed {
|
||||
var err error
|
||||
current, err = strconv.ParseInt(flag, 10, 64)
|
||||
current, err = strconv.ParseInt(flag.Value.String(), 10, 64)
|
||||
if err != nil {
|
||||
log.ERROR.Fatalln(err)
|
||||
}
|
||||
}
|
||||
|
||||
d := dumper{len: len(chargers)}
|
||||
for name, v := range chargers {
|
||||
var flagUsed bool
|
||||
for _, v := range chargers {
|
||||
if current >= 0 {
|
||||
flagUsed = true
|
||||
|
||||
if err := v.MaxCurrent(current); err != nil {
|
||||
log.ERROR.Println("set current:", err)
|
||||
}
|
||||
}
|
||||
|
||||
if flag := cmd.PersistentFlags().Lookup(pEnable).Value.String(); flag == "true" {
|
||||
if cmd.PersistentFlags().Lookup(flagEnable).Changed {
|
||||
flagUsed = true
|
||||
|
||||
if err := v.Enable(true); err != nil {
|
||||
log.ERROR.Println("enable:", err)
|
||||
}
|
||||
}
|
||||
|
||||
if flag := cmd.PersistentFlags().Lookup(pDisable).Value.String(); flag == "true" {
|
||||
if cmd.PersistentFlags().Lookup(flagDisable).Changed {
|
||||
flagUsed = true
|
||||
|
||||
if err := v.Enable(false); err != nil {
|
||||
log.ERROR.Println("disable:", err)
|
||||
}
|
||||
}
|
||||
|
||||
if flag := cmd.PersistentFlags().Lookup(pWakeup).Value.String(); flag == "true" {
|
||||
if cmd.PersistentFlags().Lookup(flagWakeup).Changed {
|
||||
flagUsed = true
|
||||
|
||||
if vv, ok := v.(api.AlarmClock); ok {
|
||||
if err := vv.WakeUp(); err != nil {
|
||||
log.ERROR.Println("wakeup:", err)
|
||||
|
|
@ -110,8 +111,13 @@ func runCharger(cmd *cobra.Command, args []string) {
|
|||
log.ERROR.Println("wakeup: not implemented")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
d.DumpWithHeader(name, v)
|
||||
if !flagUsed {
|
||||
d := dumper{len: len(chargers)}
|
||||
for name, v := range chargers {
|
||||
d.DumpWithHeader(name, v)
|
||||
}
|
||||
}
|
||||
|
||||
close(stopC)
|
||||
|
|
|
|||
11
cmd/flags.go
Normal file
11
cmd/flags.go
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
package cmd
|
||||
|
||||
const (
|
||||
flagName = "name"
|
||||
flagCurrent = "current"
|
||||
flagEnable = "enable"
|
||||
flagDisable = "disable"
|
||||
flagWakeup = "wakeup"
|
||||
flagStart = "start"
|
||||
flagStop = "stop"
|
||||
)
|
||||
|
|
@ -17,7 +17,10 @@ var vehicleCmd = &cobra.Command{
|
|||
|
||||
func init() {
|
||||
rootCmd.AddCommand(vehicleCmd)
|
||||
vehicleCmd.PersistentFlags().StringP("name", "n", "", "select vehicle by name")
|
||||
vehicleCmd.PersistentFlags().StringP(flagName, "n", "", "select vehicle by name")
|
||||
vehicleCmd.PersistentFlags().BoolP(flagStart, "a", false, "start charge")
|
||||
vehicleCmd.PersistentFlags().BoolP(flagStop, "o", false, "stop charge")
|
||||
vehicleCmd.PersistentFlags().BoolP(flagWakeup, "w", false, flagWakeup)
|
||||
}
|
||||
|
||||
func runVehicle(cmd *cobra.Command, args []string) {
|
||||
|
|
@ -36,7 +39,7 @@ func runVehicle(cmd *cobra.Command, args []string) {
|
|||
}
|
||||
|
||||
// select single charger
|
||||
if name := cmd.PersistentFlags().Lookup("name").Value.String(); name != "" {
|
||||
if name := cmd.PersistentFlags().Lookup(flagName).Value.String(); name != "" {
|
||||
for _, cfg := range conf.Vehicles {
|
||||
if cfg.Name == name {
|
||||
conf.Vehicles = []qualifiedConfig{cfg}
|
||||
|
|
@ -57,7 +60,48 @@ func runVehicle(cmd *cobra.Command, args []string) {
|
|||
|
||||
d := dumper{len: len(vehicles)}
|
||||
|
||||
for name, v := range vehicles {
|
||||
d.DumpWithHeader(name, v)
|
||||
var flagUsed bool
|
||||
for _, v := range vehicles {
|
||||
if cmd.PersistentFlags().Lookup(flagWakeup).Changed {
|
||||
flagUsed = true
|
||||
|
||||
if vv, ok := v.(api.AlarmClock); ok {
|
||||
if err := vv.WakeUp(); err != nil {
|
||||
log.ERROR.Println("wakeup:", err)
|
||||
}
|
||||
} else {
|
||||
log.ERROR.Println("wakeup: not implemented")
|
||||
}
|
||||
}
|
||||
|
||||
if cmd.PersistentFlags().Lookup(flagStart).Changed {
|
||||
flagUsed = true
|
||||
|
||||
if vv, ok := v.(api.VehicleStartCharge); ok {
|
||||
if err := vv.StartCharge(); err != nil {
|
||||
log.ERROR.Println("start charge:", err)
|
||||
}
|
||||
} else {
|
||||
log.ERROR.Println("start charge: not implemented")
|
||||
}
|
||||
}
|
||||
|
||||
if cmd.PersistentFlags().Lookup(flagStop).Changed {
|
||||
flagUsed = true
|
||||
|
||||
if vv, ok := v.(api.VehicleStopCharge); ok {
|
||||
if err := vv.StopCharge(); err != nil {
|
||||
log.ERROR.Println("stop charge:", err)
|
||||
}
|
||||
} else {
|
||||
log.ERROR.Println("stop charge: not implemented")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if !flagUsed {
|
||||
for name, v := range vehicles {
|
||||
d.DumpWithHeader(name, v)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue