diff --git a/cmd/root.go b/cmd/root.go index 58a882d6..7c516181 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -8,6 +8,7 @@ import ( "github.com/derailed/k9s/internal/color" "github.com/derailed/k9s/internal/config" "github.com/derailed/k9s/internal/k8s" + "github.com/derailed/k9s/internal/resource" "github.com/derailed/k9s/internal/views" "github.com/rs/zerolog" "github.com/rs/zerolog/log" @@ -100,6 +101,10 @@ func loadConfiguration() *config.Config { k9sCfg.K9s.OverrideCommand(*k9sFlags.Command) } + if k9sFlags.AllNamespaces != nil && *k9sFlags.AllNamespaces { + k9sCfg.SetActiveNamespace(resource.AllNamespaces) + } + if err := k9sCfg.Refine(k8sFlags); err != nil { log.Panic().Err(err).Msg("Unable to locate kubeconfig file") } @@ -150,6 +155,12 @@ func initK9sFlags() { false, "Turn K9s header off", ) + rootCmd.Flags().BoolVarP( + k9sFlags.AllNamespaces, + "all-namespaces", "A", + false, + "Launch K9s in all namespaces", + ) rootCmd.Flags().StringVarP( k9sFlags.Command, "command", "c", diff --git a/internal/config/flags.go b/internal/config/flags.go index ee36b7e9..07520b4a 100644 --- a/internal/config/flags.go +++ b/internal/config/flags.go @@ -13,19 +13,21 @@ const ( // Flags represents K9s configuration flags. type Flags struct { - RefreshRate *int - LogLevel *string - Headless *bool - Command *string + RefreshRate *int + LogLevel *string + Headless *bool + Command *string + AllNamespaces *bool } // NewFlags returns new configuration flags. func NewFlags() *Flags { return &Flags{ - RefreshRate: intPtr(DefaultRefreshRate), - LogLevel: strPtr(DefaultLogLevel), - Headless: boolPtr(false), - Command: strPtr(DefaultCommand), + RefreshRate: intPtr(DefaultRefreshRate), + LogLevel: strPtr(DefaultLogLevel), + Headless: boolPtr(false), + Command: strPtr(DefaultCommand), + AllNamespaces: boolPtr(false), } }