From 301e7eb1c424be9c3fb00401fdc2ea387bddee05 Mon Sep 17 00:00:00 2001 From: Druhin Bala Date: Wed, 18 Jul 2018 05:49:48 -0500 Subject: MM-10699 Add channel renaming to CLI (#9094) --- cmd/mattermost/commands/channel.go | 42 +++++++++++++++++++++++++++++++++ cmd/mattermost/commands/channel_test.go | 14 +++++++++++ 2 files changed, 56 insertions(+) (limited to 'cmd') diff --git a/cmd/mattermost/commands/channel.go b/cmd/mattermost/commands/channel.go index 478466a34..cbafac6b5 100644 --- a/cmd/mattermost/commands/channel.go +++ b/cmd/mattermost/commands/channel.go @@ -26,6 +26,14 @@ var ChannelCreateCmd = &cobra.Command{ RunE: createChannelCmdF, } +var ChannelRenameCmd = &cobra.Command{ + Use: "rename", + Short: "Rename a channel", + Long: `Rename a channel.`, + Example: `" channel rename myteam:mychannel newchannelname --display_name "New Display Name"`, + RunE: renameChannelCmdF, +} + var RemoveChannelUsersCmd = &cobra.Command{ Use: "remove [channel] [users]", Short: "Remove users from channel", @@ -115,6 +123,8 @@ func init() { ModifyChannelCmd.Flags().Bool("public", false, "Convert the channel to a public channel") ModifyChannelCmd.Flags().String("username", "", "Required. Username who changes the channel privacy.") + ChannelRenameCmd.Flags().String("display_name", "", "Channel Display Name") + ChannelCmd.AddCommand( ChannelCreateCmd, RemoveChannelUsersCmd, @@ -125,6 +135,7 @@ func init() { MoveChannelsCmd, RestoreChannelsCmd, ModifyChannelCmd, + ChannelRenameCmd, ) RootCmd.AddCommand(ChannelCmd) @@ -493,3 +504,34 @@ func modifyChannelCmdF(command *cobra.Command, args []string) error { return nil } + +func renameChannelCmdF(command *cobra.Command, args []string) error { + a, err := InitDBCommandContextCobra(command) + var newDisplayName, newChannelName string + if err != nil { + return err + } + defer a.Shutdown() + + if len(args) < 2 { + return errors.New("Not enough arguments.") + } + + channel := getChannelFromChannelArg(a, args[0]) + if channel == nil { + return errors.New("Unable to find channel '" + args[0] + "'") + } + + newChannelName = args[1] + newDisplayName, errdn := command.Flags().GetString("display_name") + if errdn != nil { + return errdn + } + + _, errch := a.RenameChannel(channel, newChannelName, newDisplayName) + if errch != nil { + return errors.New("Error in updating channel from " + channel.Name + " to " + newChannelName + err.Error()) + } + + return nil +} diff --git a/cmd/mattermost/commands/channel_test.go b/cmd/mattermost/commands/channel_test.go index 8fec971ca..9632ee432 100644 --- a/cmd/mattermost/commands/channel_test.go +++ b/cmd/mattermost/commands/channel_test.go @@ -9,6 +9,7 @@ import ( "github.com/mattermost/mattermost-server/api4" "github.com/mattermost/mattermost-server/model" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) @@ -113,3 +114,16 @@ func TestCreateChannel(t *testing.T) { name = name + "-private" CheckCommand(t, "channel", "create", "--display_name", name, "--team", th.BasicTeam.Name, "--private", "--name", name) } + +func TestRenameChannel(t *testing.T) { + th := api4.Setup().InitBasic() + defer th.TearDown() + + channel := th.CreatePublicChannel() + CheckCommand(t, "channel", "rename", th.BasicTeam.Name+":"+channel.Name, "newchannelname10", "--display_name", "New Display Name") + + // Get the channel from the DB + updatedChannel, _ := th.App.GetChannel(channel.Id) + assert.Equal(t, "newchannelname10", updatedChannel.Name) + assert.Equal(t, "New Display Name", updatedChannel.DisplayName) +} -- cgit v1.2.3-1-g7c22