diff options
author | Druhin Bala <theblueskies@users.noreply.github.com> | 2018-07-18 05:49:48 -0500 |
---|---|---|
committer | George Goldberg <george@gberg.me> | 2018-07-18 11:49:48 +0100 |
commit | 301e7eb1c424be9c3fb00401fdc2ea387bddee05 (patch) | |
tree | 7add86db67f23fc1749709af770d97b00afe2c5e /cmd/mattermost | |
parent | b367b1ff4064557deacae0f7ecf77fae4624b8c6 (diff) | |
download | chat-301e7eb1c424be9c3fb00401fdc2ea387bddee05.tar.gz chat-301e7eb1c424be9c3fb00401fdc2ea387bddee05.tar.bz2 chat-301e7eb1c424be9c3fb00401fdc2ea387bddee05.zip |
MM-10699 Add channel renaming to CLI (#9094)
Diffstat (limited to 'cmd/mattermost')
-rw-r--r-- | cmd/mattermost/commands/channel.go | 42 | ||||
-rw-r--r-- | cmd/mattermost/commands/channel_test.go | 14 |
2 files changed, 56 insertions, 0 deletions
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) +} |