summaryrefslogtreecommitdiffstats
path: root/cmd/mattermost/commands/command.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/mattermost/commands/command.go')
-rw-r--r--cmd/mattermost/commands/command.go69
1 files changed, 69 insertions, 0 deletions
diff --git a/cmd/mattermost/commands/command.go b/cmd/mattermost/commands/command.go
new file mode 100644
index 000000000..147cd823c
--- /dev/null
+++ b/cmd/mattermost/commands/command.go
@@ -0,0 +1,69 @@
+// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
+// See License.txt for license information.
+
+package commands
+
+import (
+ "errors"
+
+ "github.com/mattermost/mattermost-server/app"
+ "github.com/mattermost/mattermost-server/model"
+ "github.com/spf13/cobra"
+)
+
+var CommandCmd = &cobra.Command{
+ Use: "command",
+ Short: "Management of slash commands",
+}
+
+var CommandMoveCmd = &cobra.Command{
+ Use: "move",
+ Short: "Move a slash command to a different team",
+ Long: `Move a slash command to a different team. Commands can be specified by [team]:[command-trigger-word]. ie. myteam:trigger or by command ID.`,
+ Example: ` command move newteam oldteam:command`,
+ RunE: moveCommandCmdF,
+}
+
+func init() {
+ CommandCmd.AddCommand(
+ CommandMoveCmd,
+ )
+ RootCmd.AddCommand(CommandCmd)
+}
+
+func moveCommandCmdF(command *cobra.Command, args []string) error {
+ a, err := InitDBCommandContextCobra(command)
+ if err != nil {
+ return err
+ }
+ defer a.Shutdown()
+
+ if len(args) < 2 {
+ return errors.New("Enter the destination team and at least one comamnd to move.")
+ }
+
+ team := getTeamFromTeamArg(a, args[0])
+ if team == nil {
+ return errors.New("Unable to find destination team '" + args[0] + "'")
+ }
+
+ commands := getCommandsFromCommandArgs(a, args[1:])
+ CommandPrintErrorln(commands)
+ for i, command := range commands {
+ if command == nil {
+ CommandPrintErrorln("Unable to find command '" + args[i+1] + "'")
+ continue
+ }
+ if err := moveCommand(a, team, command); err != nil {
+ CommandPrintErrorln("Unable to move command '" + command.Trigger + "' error: " + err.Error())
+ } else {
+ CommandPrettyPrintln("Moved command '" + command.Trigger + "'")
+ }
+ }
+
+ return nil
+}
+
+func moveCommand(a *app.App, team *model.Team, command *model.Command) *model.AppError {
+ return a.MoveCommand(team, command)
+}