From 9a9527d224eb50dbcd455f696e2ac24b16aa0492 Mon Sep 17 00:00:00 2001 From: andig Date: Sun, 8 Feb 2026 11:27:38 +0100 Subject: [PATCH] chore: restrict custom templates by command (#27297) --- cmd/charger.go | 2 ++ cmd/charger_ramp.go | 1 + cmd/device.go | 1 + cmd/meter.go | 2 ++ cmd/root.go | 14 +++++++++----- cmd/setup.go | 4 ++-- cmd/tariff.go | 1 + cmd/vehicle.go | 2 ++ 8 files changed, 20 insertions(+), 7 deletions(-) diff --git a/cmd/charger.go b/cmd/charger.go index a6daf6abd..1acffa201 100644 --- a/cmd/charger.go +++ b/cmd/charger.go @@ -20,6 +20,8 @@ var chargerCmd = &cobra.Command{ func init() { rootCmd.AddCommand(chargerCmd) + withCustomTemplate(chargerCmd) + chargerCmd.Flags().Float64P(flagCurrent, "i", 0, flagCurrentDescription) //lint:ignore SA1019 as Title is safe on ascii chargerCmd.Flags().BoolP(flagEnable, "e", false, strings.Title(flagEnable)) diff --git a/cmd/charger_ramp.go b/cmd/charger_ramp.go index 1852964b6..826f3273b 100644 --- a/cmd/charger_ramp.go +++ b/cmd/charger_ramp.go @@ -21,6 +21,7 @@ var chargerRampCmd = &cobra.Command{ func init() { chargerCmd.AddCommand(chargerRampCmd) + withCustomTemplate(chargerRampCmd) chargerRampCmd.Flags().StringP(flagDigits, "", "0", "fractional digits (0..2)") chargerRampCmd.Flags().StringP(flagDelay, "", "1s", "ramp delay") diff --git a/cmd/device.go b/cmd/device.go index 1f972b52d..cdbb146c0 100644 --- a/cmd/device.go +++ b/cmd/device.go @@ -18,6 +18,7 @@ var deviceCmd = &cobra.Command{ func init() { rootCmd.AddCommand(deviceCmd) + withCustomTemplate(deviceCmd) } func runDevice(cmd *cobra.Command, args []string) { diff --git a/cmd/meter.go b/cmd/meter.go index 5376b1388..bb1076a6f 100644 --- a/cmd/meter.go +++ b/cmd/meter.go @@ -18,6 +18,8 @@ var meterCmd = &cobra.Command{ func init() { rootCmd.AddCommand(meterCmd) + withCustomTemplate(meterCmd) + meterCmd.Flags().StringP(flagBatteryMode, "b", "", flagBatteryModeDescription) meterCmd.Flags().DurationP(flagBatteryModeWait, "w", 0, flagBatteryModeWaitDescription) meterCmd.Flags().Bool(flagDiagnose, false, flagDiagnoseDescription) diff --git a/cmd/root.go b/cmd/root.go index e376bd5bd..57175fb79 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -80,17 +80,14 @@ func init() { cobra.OnInitialize(initConfig) + withCustomTemplate(rootCmd) + // global options rootCmd.PersistentFlags().StringVarP(&cfgFile, "config", "c", "", "Config file (default \"~/evcc.yaml\" or \"/etc/evcc.yaml\")") rootCmd.PersistentFlags().StringVar(&cfgDatabase, "database", "", "Database location (default \"~/.evcc/evcc.db\")") rootCmd.PersistentFlags().BoolP("help", "h", false, "Help") rootCmd.PersistentFlags().Bool(flagHeaders, false, flagHeadersDescription) rootCmd.PersistentFlags().Bool(flagIgnoreDatabase, false, flagIgnoreDatabaseDescription) - rootCmd.PersistentFlags().String(flagTemplate, "", flagTemplateDescription) - rootCmd.PersistentFlags().String(flagTemplateType, "", flagTemplateTypeDescription) - - rootCmd.Flags().Bool(flagDemoMode, false, flagDemoModeDescription) - rootCmd.Flags().StringVar(&customCssFile, flagCustomCss, "", flagCustomCssDescription) // config file options rootCmd.PersistentFlags().StringP("log", "l", "info", "Log level (fatal, error, warn, info, debug, trace)") @@ -106,6 +103,8 @@ func init() { bind(rootCmd, "mcp") rootCmd.Flags().Bool(flagDisableAuth, false, flagDisableAuthDescription) + rootCmd.Flags().Bool(flagDemoMode, false, flagDemoModeDescription) + rootCmd.Flags().StringVar(&customCssFile, flagCustomCss, "", flagCustomCssDescription) } // initConfig reads in config file and ENV variables if set @@ -138,6 +137,11 @@ func Execute() { } } +func withCustomTemplate(cmd *cobra.Command) { + cmd.Flags().String(flagTemplate, "", flagTemplateDescription) + cmd.Flags().String(flagTemplateType, "", flagTemplateTypeDescription) +} + func allowCtrlC(cmd *cobra.Command, args []string) { if cmd.Name() == rootName { return diff --git a/cmd/setup.go b/cmd/setup.go index d3d0e33fc..5953c5b5f 100644 --- a/cmd/setup.go +++ b/cmd/setup.go @@ -522,8 +522,8 @@ func configureEnvironment(cmd *cobra.Command, conf *globalconfig.All) error { // setup additional templates if err == nil { - if cmd.PersistentFlags().Changed(flagTemplate) { - class, err := templates.ClassString(cmd.PersistentFlags().Lookup(flagTemplateType).Value.String()) + if cmd.Flags().Changed(flagTemplate) { + class, err := templates.ClassString(cmd.Flags().Lookup(flagTemplateType).Value.String()) if err != nil { return err } diff --git a/cmd/tariff.go b/cmd/tariff.go index 4a65e7eaf..466ad6cc6 100644 --- a/cmd/tariff.go +++ b/cmd/tariff.go @@ -19,6 +19,7 @@ var tariffCmd = &cobra.Command{ func init() { rootCmd.AddCommand(tariffCmd) + withCustomTemplate(tariffCmd) } func runTariff(cmd *cobra.Command, args []string) { diff --git a/cmd/vehicle.go b/cmd/vehicle.go index eca75a1fc..c5c71c34c 100644 --- a/cmd/vehicle.go +++ b/cmd/vehicle.go @@ -20,6 +20,8 @@ var vehicleCmd = &cobra.Command{ func init() { rootCmd.AddCommand(vehicleCmd) + withCustomTemplate(vehicleCmd) + vehicleCmd.Flags().Int64P(flagCurrent, "i", 0, flagCurrentDescription) vehicleCmd.Flags().BoolP(flagStart, "a", false, flagStartDescription) vehicleCmd.Flags().BoolP(flagStop, "o", false, flagStopDescription)