summaryrefslogtreecommitdiffstats
path: root/cmd/mattermost/commands/webhook.go
diff options
context:
space:
mode:
Diffstat (limited to 'cmd/mattermost/commands/webhook.go')
-rw-r--r--cmd/mattermost/commands/webhook.go67
1 files changed, 66 insertions, 1 deletions
diff --git a/cmd/mattermost/commands/webhook.go b/cmd/mattermost/commands/webhook.go
index 0c56af18c..d91d076a3 100644
--- a/cmd/mattermost/commands/webhook.go
+++ b/cmd/mattermost/commands/webhook.go
@@ -28,10 +28,18 @@ var WebhookCreateIncomingCmd = &cobra.Command{
Use: "create-incoming",
Short: "Create incoming webhook",
Long: "create incoming webhook which allows external posting of messages to specific channel",
- Example: " webhook create-incoming --channel [channelID] --user [userID] --description [webhookDescription] --lock-to-channel --icon [iconURL]",
+ Example: " webhook create-incoming --channel [channelID] --user [userID] --display-name [displayName] --description [webhookDescription] --lock-to-channel --icon [iconURL]",
RunE: createIncomingWebhookCmdF,
}
+var WebhookModifyIncomingCmd = &cobra.Command{
+ Use: "modify-incoming",
+ Short: "Modify incoming webhook",
+ Long: "Modify existing incoming webhook by changing its title, description, channel or icon url",
+ Example: " webhook modify-incoming [webhookID] --channel [channelID] --display-name [displayName] --description [webhookDescription] --lock-to-channel --icon [iconURL]",
+ RunE: modifyIncomingWebhookCmdF,
+}
+
func listWebhookCmdF(command *cobra.Command, args []string) error {
app, err := InitDBCommandContextCobra(command)
if err != nil {
@@ -119,6 +127,56 @@ func createIncomingWebhookCmdF(command *cobra.Command, args []string) error {
return nil
}
+func modifyIncomingWebhookCmdF(command *cobra.Command, args []string) error {
+ app, err := InitDBCommandContextCobra(command)
+ if err != nil {
+ return err
+ }
+ defer app.Shutdown()
+
+ if len(args) < 1 {
+ return errors.New("WebhookID is not specified")
+ }
+
+ webhookArg := args[0]
+ oldHook, getErr := app.GetIncomingWebhook(webhookArg)
+ if getErr != nil {
+ return errors.New("Unable to find webhook '" + webhookArg + "'")
+ }
+
+ updatedHook := oldHook
+
+ channelArg, _ := command.Flags().GetString("channel")
+ if channelArg != "" {
+ channel := getChannelFromChannelArg(app, channelArg)
+ if channel == nil {
+ return errors.New("Unable to find channel '" + channelArg + "'")
+ }
+ updatedHook.ChannelId = channel.Id
+ }
+
+ displayName, _ := command.Flags().GetString("display-name")
+ if displayName != "" {
+ updatedHook.DisplayName = displayName
+ }
+ description, _ := command.Flags().GetString("description")
+ if description != "" {
+ updatedHook.Description = description
+ }
+ iconUrl, _ := command.Flags().GetString("icon")
+ if iconUrl != "" {
+ updatedHook.IconURL = iconUrl
+ }
+ channelLocked, _ := command.Flags().GetBool("lock-to-channel")
+ updatedHook.ChannelLocked = channelLocked
+
+ if _, err := app.UpdateIncomingWebhook(oldHook, updatedHook); err != nil {
+ return err
+ }
+
+ return nil
+}
+
func init() {
WebhookCreateIncomingCmd.Flags().String("channel", "", "Channel ID")
WebhookCreateIncomingCmd.Flags().String("user", "", "User ID")
@@ -127,9 +185,16 @@ func init() {
WebhookCreateIncomingCmd.Flags().String("icon", "", "Icon URL")
WebhookCreateIncomingCmd.Flags().Bool("lock-to-channel", false, "Lock to channel")
+ WebhookModifyIncomingCmd.Flags().String("channel", "", "Channel ID")
+ WebhookModifyIncomingCmd.Flags().String("display-name", "", "Incoming webhook display name")
+ WebhookModifyIncomingCmd.Flags().String("description", "", "Incoming webhook description")
+ WebhookModifyIncomingCmd.Flags().String("icon", "", "Icon URL")
+ WebhookModifyIncomingCmd.Flags().Bool("lock-to-channel", false, "Lock to channel")
+
WebhookCmd.AddCommand(
WebhookListCmd,
WebhookCreateIncomingCmd,
+ WebhookModifyIncomingCmd,
)
RootCmd.AddCommand(WebhookCmd)