diff options
Diffstat (limited to 'cmd/platform/cmdtestlib.go')
-rw-r--r-- | cmd/platform/cmdtestlib.go | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/cmd/platform/cmdtestlib.go b/cmd/platform/cmdtestlib.go new file mode 100644 index 000000000..16bfc2b21 --- /dev/null +++ b/cmd/platform/cmdtestlib.go @@ -0,0 +1,45 @@ +// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved. +// See License.txt for license information. + +package main + +import ( + "bytes" + "strings" + + "github.com/spf13/cobra" + "github.com/spf13/pflag" +) + +func runCommand(argString string) error { + err, _ := runCommandWithOutput(argString) + + return err +} + +func runCommandWithOutput(argString string) (error, string) { + // Set arguments on the root command + rootCmd.SetArgs(strings.Split(argString, " ")) + defer rootCmd.SetArgs([]string{}) + + output := new(bytes.Buffer) + rootCmd.SetOutput(output) + defer rootCmd.SetOutput(nil) + + // Executing the root command will call the necessary subcommand + cmd, err := rootCmd.ExecuteC() + + // And clear the arguments on the subcommand that was actually called since they'd otherwise + // be used on the next call to this command + clearArgs(cmd) + + return err, output.String() +} + +func clearArgs(command *cobra.Command) { + command.Flags().VisitAll(clearFlag) +} + +func clearFlag(flag *pflag.Flag) { + flag.Value.Set(flag.DefValue) +} |