From 48ea65aa5f0bcc66174e78a93c884d592f58753f Mon Sep 17 00:00:00 2001 From: Julien Tant <785518+JulienTant@users.noreply.github.com> Date: Wed, 26 Mar 2025 05:21:21 -0700 Subject: [PATCH] [MM-56078] mmctl: assume local mode when no credentials found (#26215) * assume local mode when no credentials found * Use variable --------- Co-authored-by: Mattermost Build Co-authored-by: Ben Schumacher --- server/cmd/mmctl/commands/completion.go | 2 +- server/cmd/mmctl/commands/init.go | 20 +++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/server/cmd/mmctl/commands/completion.go b/server/cmd/mmctl/commands/completion.go index 201cc9a6e0..c074aa5ec6 100644 --- a/server/cmd/mmctl/commands/completion.go +++ b/server/cmd/mmctl/commands/completion.go @@ -218,7 +218,7 @@ func validateArgsWithClient(fn validateArgsFn) func(cmd *cobra.Command, args []s ctx, cancel := context.WithTimeout(context.Background(), shellCompleteTimeout) defer cancel() - c, _, _, err := getClient(ctx) + c, _, _, err := getClient(ctx, cmd) if err != nil { return nil, cobra.ShellCompDirectiveError } diff --git a/server/cmd/mmctl/commands/init.go b/server/cmd/mmctl/commands/init.go index 237d5721b0..77c611a3be 100644 --- a/server/cmd/mmctl/commands/init.go +++ b/server/cmd/mmctl/commands/init.go @@ -68,8 +68,22 @@ func CheckVersionMatch(version, serverVersion string) (bool, error) { return true, nil } -func getClient(ctx context.Context) (*model.Client4, string, bool, error) { - if viper.GetBool("local") { +func getClient(ctx context.Context, cmd *cobra.Command) (*model.Client4, string, bool, error) { + useLocal := viper.GetBool("local") + + if !useLocal { + // Assume local mode if no server address is provided + credentials, err := GetCurrentCredentials() + if err != nil { + cmd.PrintErrln("Warning: Unable to retrieve credentials, assuming --local mode") + useLocal = true + } else if credentials == nil { + cmd.PrintErrln("Warning: No credentials found, assuming --local mode") + useLocal = true + } + } + + if useLocal { c, err := InitUnixClient(viper.GetString("local-socket-path")) if err != nil { return nil, "", true, err @@ -90,7 +104,7 @@ func getClient(ctx context.Context) (*model.Client4, string, bool, error) { func withClient(fn func(c client.Client, cmd *cobra.Command, args []string) error) func(cmd *cobra.Command, args []string) error { return func(cmd *cobra.Command, args []string) error { ctx := context.TODO() - c, serverVersion, local, err := getClient(ctx) + c, serverVersion, local, err := getClient(ctx, cmd) if err != nil { return fmt.Errorf("failed to create client: %w", err) }