aboutsummaryrefslogtreecommitdiff
path: root/receivepack/internal
diff options
context:
space:
mode:
Diffstat (limited to 'receivepack/internal')
-rw-r--r--receivepack/internal/service/hook.go7
-rw-r--r--receivepack/internal/service/options.go1
-rw-r--r--receivepack/internal/service/run_hook.go1
3 files changed, 9 insertions, 0 deletions
diff --git a/receivepack/internal/service/hook.go b/receivepack/internal/service/hook.go
index 85295e15..748a00b9 100644
--- a/receivepack/internal/service/hook.go
+++ b/receivepack/internal/service/hook.go
@@ -2,12 +2,18 @@ package service
import (
"context"
+ "io"
"codeberg.org/lindenii/furgit/objectid"
"codeberg.org/lindenii/furgit/objectstore"
"codeberg.org/lindenii/furgit/refstore"
)
+type HookIO struct {
+ Progress io.Writer
+ Error io.Writer
+}
+
type RefUpdate struct {
Name string
OldID objectid.ObjectID
@@ -25,6 +31,7 @@ type HookRequest struct {
QuarantinedObjects objectstore.Store
Updates []RefUpdate
PushOptions []string
+ IO HookIO
}
type Hook func(context.Context, HookRequest) ([]UpdateDecision, error)
diff --git a/receivepack/internal/service/options.go b/receivepack/internal/service/options.go
index d9f8a265..b8dda2f7 100644
--- a/receivepack/internal/service/options.go
+++ b/receivepack/internal/service/options.go
@@ -22,4 +22,5 @@ type Options struct {
ObjectsRoot *os.Root
PromotedObjectPermissions *PromotedObjectPermissions
Hook Hook
+ HookIO HookIO
}
diff --git a/receivepack/internal/service/run_hook.go b/receivepack/internal/service/run_hook.go
index cf934664..3c76906e 100644
--- a/receivepack/internal/service/run_hook.go
+++ b/receivepack/internal/service/run_hook.go
@@ -41,6 +41,7 @@ func (service *Service) runHook(
QuarantinedObjects: quarantinedObjects,
Updates: buildHookUpdates(commands),
PushOptions: append([]string(nil), req.PushOptions...),
+ IO: service.opts.HookIO,
})
if err != nil {
return nil, nil, nil, false, err.Error()