diff --git a/cmd/charger.go b/cmd/charger.go index 5ed4a1312..818088d45 100644 --- a/cmd/charger.go +++ b/cmd/charger.go @@ -1,12 +1,15 @@ package cmd import ( + "fmt" "strconv" + "strings" "github.com/evcc-io/evcc/api" "github.com/evcc-io/evcc/cmd/shutdown" "github.com/evcc-io/evcc/server" "github.com/evcc-io/evcc/util" + "github.com/evcc-io/evcc/util/request" "github.com/spf13/cobra" "github.com/spf13/viper" ) @@ -22,11 +25,12 @@ const noCurrent = -1 func init() { rootCmd.AddCommand(chargerCmd) - chargerCmd.PersistentFlags().StringP(flagName, "n", "", "select charger by name") - chargerCmd.PersistentFlags().IntP(flagCurrent, "I", noCurrent, "set current") - chargerCmd.PersistentFlags().BoolP(flagEnable, "e", false, flagEnable) - chargerCmd.PersistentFlags().BoolP(flagDisable, "d", false, flagDisable) - chargerCmd.PersistentFlags().BoolP(flagWakeup, "w", false, flagWakeup) + chargerCmd.PersistentFlags().StringP(flagName, "n", "", fmt.Sprintf(flagNameDescription, "charger")) + chargerCmd.PersistentFlags().IntP(flagCurrent, "I", noCurrent, flagCurrentDescription) + chargerCmd.PersistentFlags().BoolP(flagEnable, "e", false, strings.Title(flagEnable)) + chargerCmd.PersistentFlags().BoolP(flagDisable, "d", false, strings.Title(flagDisable)) + chargerCmd.PersistentFlags().BoolP(flagWakeup, "w", false, flagWakeupDescription) + chargerCmd.PersistentFlags().Bool(flagHeaders, false, flagHeadersDescription) } func runCharger(cmd *cobra.Command, args []string) { @@ -44,6 +48,11 @@ func runCharger(cmd *cobra.Command, args []string) { log.FATAL.Fatal(err) } + // full http request log + if cmd.PersistentFlags().Lookup(flagHeaders).Changed { + request.LogHeaders = true + } + // select single charger if name := cmd.PersistentFlags().Lookup(flagName).Value.String(); name != "" { for _, cfg := range conf.Chargers { diff --git a/cmd/flags.go b/cmd/flags.go index 73cd0f212..28b218cea 100644 --- a/cmd/flags.go +++ b/cmd/flags.go @@ -1,11 +1,24 @@ package cmd const ( - flagName = "name" - flagCurrent = "current" + flagHeaders = "log-headers" + flagHeadersDescription = "Log headers" + + flagName = "name" + flagNameDescription = "Select %s by name" + + flagCurrent = "current" + flagCurrentDescription = "Set maximum current" + flagEnable = "enable" flagDisable = "disable" - flagWakeup = "wakeup" - flagStart = "start" - flagStop = "stop" + + flagWakeup = "wakeup" + flagWakeupDescription = "Wake up" + + flagStart = "start" + flagStartDescription = "Start charging" + + flagStop = "stop" + flagStopDescription = "Stop charging" ) diff --git a/cmd/meter.go b/cmd/meter.go index b00d7d2ae..32cf34f81 100644 --- a/cmd/meter.go +++ b/cmd/meter.go @@ -1,9 +1,12 @@ package cmd import ( + "fmt" + "github.com/evcc-io/evcc/api" "github.com/evcc-io/evcc/server" "github.com/evcc-io/evcc/util" + "github.com/evcc-io/evcc/util/request" "github.com/spf13/cobra" "github.com/spf13/viper" ) @@ -17,7 +20,8 @@ var meterCmd = &cobra.Command{ func init() { rootCmd.AddCommand(meterCmd) - meterCmd.PersistentFlags().StringP("name", "n", "", "select meter by name") + meterCmd.PersistentFlags().StringP(flagName, "n", "", fmt.Sprintf(flagNameDescription, "meter")) + meterCmd.PersistentFlags().Bool(flagHeaders, false, flagHeadersDescription) } func runMeter(cmd *cobra.Command, args []string) { @@ -35,6 +39,11 @@ func runMeter(cmd *cobra.Command, args []string) { log.FATAL.Fatal(err) } + // full http request log + if cmd.PersistentFlags().Lookup(flagHeaders).Changed { + request.LogHeaders = true + } + // select single meter if name := cmd.PersistentFlags().Lookup("name").Value.String(); name != "" { for _, cfg := range conf.Meters { diff --git a/cmd/root.go b/cmd/root.go index 0a68087f6..d67cd3915 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -17,6 +17,7 @@ import ( "github.com/evcc-io/evcc/server/updater" "github.com/evcc-io/evcc/util" "github.com/evcc-io/evcc/util/pipe" + "github.com/evcc-io/evcc/util/request" "github.com/evcc-io/evcc/util/sponsor" "github.com/grandcat/zeroconf" "github.com/prometheus/client_golang/prometheus/promhttp" @@ -71,33 +72,19 @@ func init() { cobra.OnInitialize(initConfig) configureCommand(rootCmd) - rootCmd.PersistentFlags().StringP( - "uri", "u", - "0.0.0.0:7070", - "Listen address", - ) + rootCmd.PersistentFlags().StringP("uri", "u", "0.0.0.0:7070", "Listen address") bind(rootCmd, "uri") - rootCmd.PersistentFlags().DurationP( - "interval", "i", - 10*time.Second, - "Update interval", - ) + rootCmd.PersistentFlags().DurationP("interval", "i", 10*time.Second, "Update interval") bind(rootCmd, "interval") - rootCmd.PersistentFlags().Bool( - "metrics", - false, - "Expose metrics", - ) + rootCmd.PersistentFlags().Bool("metrics", false, "Expose metrics") bind(rootCmd, "metrics") - rootCmd.PersistentFlags().Bool( - "profile", - false, - "Expose pprof profiles", - ) + rootCmd.PersistentFlags().Bool("profile", false, "Expose pprof profiles") bind(rootCmd, "profile") + + rootCmd.PersistentFlags().Bool(flagHeaders, false, flagHeadersDescription) } // initConfig reads in config file and ENV variables if set @@ -163,6 +150,11 @@ func run(cmd *cobra.Command, args []string) { log.FATAL.Fatal(err) } + // full http request log + if cmd.PersistentFlags().Lookup(flagHeaders).Changed { + request.LogHeaders = true + } + // setup loadpoints cp.TrackVisitors() // track duplicate usage diff --git a/cmd/vehicle.go b/cmd/vehicle.go index 35fbdfd05..d5f4bcdfc 100644 --- a/cmd/vehicle.go +++ b/cmd/vehicle.go @@ -1,9 +1,12 @@ package cmd import ( + "fmt" + "github.com/evcc-io/evcc/api" "github.com/evcc-io/evcc/server" "github.com/evcc-io/evcc/util" + "github.com/evcc-io/evcc/util/request" "github.com/spf13/cobra" "github.com/spf13/viper" ) @@ -17,10 +20,11 @@ var vehicleCmd = &cobra.Command{ func init() { rootCmd.AddCommand(vehicleCmd) - 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) + vehicleCmd.PersistentFlags().StringP(flagName, "n", "", fmt.Sprintf(flagNameDescription, "vehicle")) + vehicleCmd.PersistentFlags().BoolP(flagStart, "a", false, flagStartDescription) + vehicleCmd.PersistentFlags().BoolP(flagStop, "o", false, flagStopDescription) + vehicleCmd.PersistentFlags().BoolP(flagWakeup, "w", false, flagWakeupDescription) + vehicleCmd.PersistentFlags().Bool(flagHeaders, false, flagHeadersDescription) } func runVehicle(cmd *cobra.Command, args []string) { @@ -38,6 +42,11 @@ func runVehicle(cmd *cobra.Command, args []string) { log.FATAL.Fatal(err) } + // full http request log + if cmd.PersistentFlags().Lookup(flagHeaders).Changed { + request.LogHeaders = true + } + // select single charger if name := cmd.PersistentFlags().Lookup(flagName).Value.String(); name != "" { for _, cfg := range conf.Vehicles {