package cli import "github.com/spf13/cobra" func newConfigCmd() *cobra.Command { var configFile, outputFile, subscriptionName string cmd := &cobra.Command{ Use: "config", Short: "Manage core configuration", } cmd.PersistentFlags().StringVar(&configFile, "config-file", "", "Path to the user config YAML file (default: config/core-config.yaml in config dir)") cmd.PersistentFlags().StringVar(&outputFile, "output-file", "", "Path to the generated config file (default: generated_config.yaml in config dir)") cmd.PersistentFlags().StringVar(&subscriptionName, "subscription", "", "Name of the subscription to use for config generation (default: active subscription)") build := func() (*managers, error) { return newManagers(configFile, outputFile, subscriptionName) } cmd.AddCommand( &cobra.Command{ Use: "import ", Short: "Import configuration from file", Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { m, err := build() if err != nil { return err } m.CoreConfig.ImportConfig(args[0]) return nil }, }, &cobra.Command{ Use: "export ", Short: "Export configuration to file", Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { m, err := build() if err != nil { return err } m.CoreConfig.ExportConfig(args[0]) return nil }, }, &cobra.Command{ Use: "edit", Short: "Edit configuration with system editor", Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { m, err := build() if err != nil { return err } m.CoreConfig.EditConfig() return nil }, }, &cobra.Command{ Use: "reset", Short: "Reset configuration to default values", Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { m, err := build() if err != nil { return err } m.CoreConfig.ResetConfig() return nil }, }, &cobra.Command{ Use: "show", Short: "Show current configuration", Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { m, err := build() if err != nil { return err } m.CoreConfig.ShowConfig() return nil }, }, &cobra.Command{ Use: "apply", Short: "Apply active subscription to generate final config", Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { m, err := build() if err != nil { return err } m.CoreConfig.Apply() m.Core.ReloadService() return nil }, }, ) return cmd }