Skip to content

Commit 4a12b86

Browse files
Merge pull request #90 from bakito/stash-version
retry with event subset for legacy stash versions
2 parents e5a5af2 + 05d6222 commit 4a12b86

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

scm/driver/stash/repo.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"fmt"
1010
"net/url"
1111
"strconv"
12+
"strings"
1213

1314
"github.com/drone/go-scm/scm"
1415
)
@@ -209,6 +210,10 @@ func (s *repositoryService) CreateHook(ctx context.Context, repo string, input *
209210
)
210211
out := new(hook)
211212
res, err := s.client.do(ctx, "POST", path, in, out)
213+
if err != nil && isUnknownHookEvent(err) {
214+
downgradeHookInput(in)
215+
res, err = s.client.do(ctx, "POST", path, in, out)
216+
}
212217
return convertHook(out), res, err
213218
}
214219

@@ -246,6 +251,10 @@ func (s *repositoryService) UpdateHook(ctx context.Context, repo, id string, inp
246251
)
247252
out := new(hook)
248253
res, err := s.client.do(ctx, "PUT", path, in, out)
254+
if err != nil && isUnknownHookEvent(err) {
255+
downgradeHookInput(in)
256+
res, err = s.client.do(ctx, "PUT", path, in, out)
257+
}
249258
return convertHook(out), res, err
250259
}
251260

@@ -345,6 +354,20 @@ func convertFromHookEvents(from scm.HookEvents) []string {
345354
return events
346355
}
347356

357+
func isUnknownHookEvent(err error) bool {
358+
return strings.Contains(err.Error(), "pr:from_ref_updated is unknown")
359+
}
360+
361+
func downgradeHookInput(in *hookInput) {
362+
var events []string
363+
for _, event := range in.Events {
364+
if event != "pr:from_ref_updated" {
365+
events = append(events, event)
366+
}
367+
}
368+
in.Events = events
369+
}
370+
348371
func convertFromState(from scm.State) string {
349372
switch from {
350373
case scm.StatePending, scm.StateRunning:

0 commit comments

Comments
 (0)