Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 13 additions & 6 deletions bot.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package main

import (
"log/slog"
"mergebot/handlers"
"mergebot/webhook"
"os"
"path"
Expand Down Expand Up @@ -37,7 +38,7 @@ func start() {
}

var (
handlerFuncs = map[string]func(string, *webhook.Webhook) error{}
handlerFuncs = map[string]func(*handlers.Request, *webhook.Webhook) error{}
handlerMu sync.RWMutex
)

Expand All @@ -64,20 +65,26 @@ func Handler(c echo.Context) error {

if f, ok := handlerFuncs[hook.Event]; ok {
go func() {
if err := f(providerName, hook); err != nil {
slog.Error("handlerFunc", "err", err)
command, err := handlers.New(providerName)
if err != nil {
slog.Error("can't initialize provider", "provider", providerName, "command", command, "err", err)
return
}

if err := f(command, hook); err != nil {
slog.Error("handlerFunc returns err", "provider", providerName, "command", command, "err", err)
}
}()
}

return nil
}

func handle(onEvent string, funcHandler func(string, *webhook.Webhook) error) {
func handle(onEvent string, funcHandler func(*handlers.Request, *webhook.Webhook) error) {
handlerMu.Lock()
defer handlerMu.Unlock()

handlerFuncs[onEvent] = func(provider string, hook *webhook.Webhook) error {
return funcHandler(provider, hook)
handlerFuncs[onEvent] = func(command *handlers.Request, hook *webhook.Webhook) error {
return funcHandler(command, hook)
}
}
41 changes: 11 additions & 30 deletions commands.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package main

import (
"fmt"
"log/slog"
"mergebot/handlers"
"mergebot/webhook"
Expand All @@ -13,29 +14,19 @@ func init() {
handle(webhook.OnNewMR, NewMR)
}

func UpdateBranchCmd(providerName string, hook *webhook.Webhook) error {
command, err := handlers.New(providerName)
if err != nil {
return err
}

func UpdateBranchCmd(command *handlers.Request, hook *webhook.Webhook) error {
if err := command.UpdateFromMaster(hook.GetProjectID(), hook.GetID()); err != nil {
slog.Error("updateBranchCmd", "error", err)
slog.Error("command.UpdateFromMaster failed", "error", err)
return command.LeaveComment(hook.GetProjectID(), hook.GetID(), "❌ i couldn't update branch from master")
}

return err
return nil
}

func MergeCmd(providerName string, hook *webhook.Webhook) error {
command, err := handlers.New(providerName)
if err != nil {
return err
}

func MergeCmd(command *handlers.Request, hook *webhook.Webhook) error {
ok, text, err := command.Merge(hook.GetProjectID(), hook.GetID())
if err != nil {
return err
return fmt.Errorf("command.Merge returns err: %w", err)
}

if !ok && len(text) > 0 {
Expand All @@ -44,15 +35,10 @@ func MergeCmd(providerName string, hook *webhook.Webhook) error {
return err
}

func CheckCmd(providerName string, hook *webhook.Webhook) error {
command, err := handlers.New(providerName)
if err != nil {
return err
}

func CheckCmd(command *handlers.Request, hook *webhook.Webhook) error {
ok, text, err := command.IsValid(hook.GetProjectID(), hook.GetID())
if err != nil {
return err
return fmt.Errorf("command.IsValid returns err: %w", err)
}

if !ok && len(text) > 0 {
Expand All @@ -62,14 +48,9 @@ func CheckCmd(providerName string, hook *webhook.Webhook) error {
}
}

func NewMR(providerName string, hook *webhook.Webhook) error {
command, err := handlers.New(providerName)
if err != nil {
return err
}

if err = command.Greetings(hook.GetProjectID(), hook.GetID()); err != nil {
return err
func NewMR(command *handlers.Request, hook *webhook.Webhook) error {
if err := command.Greetings(hook.GetProjectID(), hook.GetID()); err != nil {
return fmt.Errorf("command.Greetings returns err: %w", err)
}

return nil
Expand Down
Loading