Skip to content
This repository has been archived by the owner on Mar 18, 2024. It is now read-only.

Commit

Permalink
Added 5 second delay to posting patch set created
Browse files Browse the repository at this point in the history
  • Loading branch information
jameshartig committed Apr 19, 2019
1 parent f7e0a4e commit 1cb875a
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 30 deletions.
7 changes: 6 additions & 1 deletion events/patchsetCreated.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package events
import (
"fmt"
"strings"
"time"

gerrit "github.com/andygrunwald/go-gerrit"
"github.com/levenlabs/gerrit-slack/gerritssh"
Expand Down Expand Up @@ -58,7 +59,7 @@ func (PatchSetCreated) Ignore(e gerritssh.Event, pcfg project.Config) (bool, err
}

// Message implements the EventHandler interface
func (PatchSetCreated) Message(e gerritssh.Event, _ project.Config, c *gerrit.Client) (Message, error) {
func (PatchSetCreated) Message(e gerritssh.Event, pcfg project.Config, c *gerrit.Client) (Message, error) {
// we let the owner know their change was merged
var m Message
action := "Proposed"
Expand All @@ -74,6 +75,10 @@ func (PatchSetCreated) Message(e gerritssh.Event, _ project.Config, c *gerrit.Cl
action = fmt.Sprintf("%s %s", e.Uploader.Name, action)
m.Pretext = DefaultPretext(action, e)

if !pcfg.PublishPatchSetCreatedImmediately {
time.Sleep(5 * time.Second)
}

// get the list of reviewers for the reviewers field
rs, _, err := c.Changes.ListReviewers(gerritssh.ChangeIDWithProjectNumber(e.Change.Project, e.Change.Number))
if err != nil {
Expand Down
60 changes: 31 additions & 29 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,37 +97,39 @@ func main() {

func listenForEvents(client *gerrit.Client, ech <-chan gerritssh.Event, sch chan webhookSubmit) {
for e := range ech {
var pcfg project.Config
if e.Change.Project != "" {
var err error
pcfg, err = project.LoadConfig(client, e.Change.Project)
go func() {
var pcfg project.Config
if e.Change.Project != "" {
var err error
pcfg, err = project.LoadConfig(client, e.Change.Project)
if err != nil {
llog.Error("error loading config", llog.ErrKV(err), e.KV())
return
}
}
h, ok := events.Handler(e, pcfg)
if !ok {
llog.Info("no handlers for event", e.KV())
return
}
ignore, err := h.Ignore(e, pcfg)
if err != nil {
llog.Error("error loading config", llog.ErrKV(err), e.KV())
continue
llog.Error("error handling event", llog.ErrKV(err), e.KV(), llog.KV{"handler": h.Type()})
return
}
}
h, ok := events.Handler(e, pcfg)
if !ok {
llog.Info("no handlers for event", e.KV())
continue
}
ignore, err := h.Ignore(e, pcfg)
if err != nil {
llog.Error("error handling event", llog.ErrKV(err), e.KV(), llog.KV{"handler": h.Type()})
continue
}
if ignore {
continue
}
msg, err := h.Message(e, pcfg, client)
if err != nil {
llog.Error("error generating message for event", llog.ErrKV(err), e.KV(), llog.KV{"handler": h.Type()})
continue
}
sch <- webhookSubmit{
Message: msg,
WebhookURL: pcfg.WebhookURL,
}
if ignore {
return
}
msg, err := h.Message(e, pcfg, client)
if err != nil {
llog.Error("error generating message for event", llog.ErrKV(err), e.KV(), llog.KV{"handler": h.Type()})
return
}
sch <- webhookSubmit{
Message: msg,
WebhookURL: pcfg.WebhookURL,
}
}()
}
}

Expand Down
6 changes: 6 additions & 0 deletions project/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,12 @@ type Config struct {
// because https://bugs.chromium.org/p/gerrit/issues/detail?id=10042
PublishPatchSetReviewersAdded bool `ini:"publish-patch-set-reviewers-added"`

// PublishPatchSetCreatedImmediately changes the patch-set-created event to fire
// immediately against slack instead of waiting 5 seconds before publishing to
// collect any automatically added reviewers. This is necessary because of the same
// bug as above.
PublishPatchSetCreatedImmediately bool `ini:"publish-patch-set-created-immediately"`

// PublishOnWipReady and PublishOnPrivateToPublic default to the value of
// PublishOnPatchSetCreated but since we can't determine if they were false
// or not set, we use a pointer and then fill in the regular values later
Expand Down

0 comments on commit 1cb875a

Please sign in to comment.