aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--receivepack/commands.go19
-rw-r--r--receivepack/hook.go39
-rw-r--r--receivepack/internal/service/quarantine_objects.go4
-rw-r--r--receivepack/options.go8
-rw-r--r--receivepack/permissions.go27
-rw-r--r--receivepack/receivepack.go51
-rw-r--r--receivepack/results.go (renamed from receivepack/translate.go)13
7 files changed, 87 insertions, 74 deletions
diff --git a/receivepack/commands.go b/receivepack/commands.go
new file mode 100644
index 00000000..399a0bf6
--- /dev/null
+++ b/receivepack/commands.go
@@ -0,0 +1,19 @@
+package receivepack
+
+import (
+ protoreceive "codeberg.org/lindenii/furgit/protocol/v0v1/server/receivepack"
+ "codeberg.org/lindenii/furgit/receivepack/internal/service"
+)
+
+func translateCommands(commands []protoreceive.Command) []service.Command {
+ out := make([]service.Command, 0, len(commands))
+ for _, command := range commands {
+ out = append(out, service.Command{
+ OldID: command.OldID,
+ NewID: command.NewID,
+ Name: command.Name,
+ })
+ }
+
+ return out
+}
diff --git a/receivepack/hook.go b/receivepack/hook.go
index 4c4a44ef..c96911ac 100644
--- a/receivepack/hook.go
+++ b/receivepack/hook.go
@@ -5,6 +5,7 @@ import (
"codeberg.org/lindenii/furgit/objectid"
"codeberg.org/lindenii/furgit/objectstore"
+ "codeberg.org/lindenii/furgit/receivepack/internal/service"
"codeberg.org/lindenii/furgit/refstore"
)
@@ -37,3 +38,41 @@ type HookRequest struct {
// promotion or ref updates. The returned decisions must have the same length as
// HookRequest.Updates.
type Hook func(context.Context, HookRequest) ([]UpdateDecision, error)
+
+func translateHook(hook Hook) service.Hook {
+ if hook == nil {
+ return nil
+ }
+
+ return func(ctx context.Context, req service.HookRequest) ([]service.UpdateDecision, error) {
+ translatedUpdates := make([]RefUpdate, 0, len(req.Updates))
+ for _, update := range req.Updates {
+ translatedUpdates = append(translatedUpdates, RefUpdate{
+ Name: update.Name,
+ OldID: update.OldID,
+ NewID: update.NewID,
+ })
+ }
+
+ decisions, err := hook(ctx, HookRequest{
+ Refs: req.Refs,
+ ExistingObjects: req.ExistingObjects,
+ QuarantinedObjects: req.QuarantinedObjects,
+ Updates: translatedUpdates,
+ PushOptions: append([]string(nil), req.PushOptions...),
+ })
+ if err != nil {
+ return nil, err
+ }
+
+ out := make([]service.UpdateDecision, 0, len(decisions))
+ for _, decision := range decisions {
+ out = append(out, service.UpdateDecision{
+ Accept: decision.Accept,
+ Message: decision.Message,
+ })
+ }
+
+ return out, nil
+ }
+}
diff --git a/receivepack/internal/service/quarantine_objects.go b/receivepack/internal/service/quarantine_objects.go
index 0c03be51..69e07a1d 100644
--- a/receivepack/internal/service/quarantine_objects.go
+++ b/receivepack/internal/service/quarantine_objects.go
@@ -4,9 +4,9 @@ import (
"os"
"codeberg.org/lindenii/furgit/objectstore"
- objectmix "codeberg.org/lindenii/furgit/objectstore/mix"
- "codeberg.org/lindenii/furgit/objectstore/memory"
"codeberg.org/lindenii/furgit/objectstore/loose"
+ "codeberg.org/lindenii/furgit/objectstore/memory"
+ objectmix "codeberg.org/lindenii/furgit/objectstore/mix"
"codeberg.org/lindenii/furgit/objectstore/packed"
)
diff --git a/receivepack/options.go b/receivepack/options.go
index e39f83ba..f55fbad1 100644
--- a/receivepack/options.go
+++ b/receivepack/options.go
@@ -1,7 +1,6 @@
package receivepack
import (
- "io/fs"
"os"
"codeberg.org/lindenii/furgit/objectid"
@@ -9,13 +8,6 @@ import (
"codeberg.org/lindenii/furgit/refstore"
)
-// PromotedObjectPermissions configures the destination permissions applied to
-// objects and directories promoted out of quarantine.
-type PromotedObjectPermissions struct {
- DirMode fs.FileMode
- FileMode fs.FileMode
-}
-
// Options configures one receive-pack invocation.
type Options struct {
// GitProtocol is the raw Git protocol version string from the transport,
diff --git a/receivepack/permissions.go b/receivepack/permissions.go
new file mode 100644
index 00000000..ed30c0ce
--- /dev/null
+++ b/receivepack/permissions.go
@@ -0,0 +1,27 @@
+package receivepack
+
+import (
+ "io/fs"
+
+ "codeberg.org/lindenii/furgit/receivepack/internal/service"
+)
+
+// PromotedObjectPermissions configures the destination permissions applied to
+// objects and directories promoted out of quarantine.
+type PromotedObjectPermissions struct {
+ DirMode fs.FileMode
+ FileMode fs.FileMode
+}
+
+func translatePromotedObjectPermissions(
+ perms *PromotedObjectPermissions,
+) *service.PromotedObjectPermissions {
+ if perms == nil {
+ return nil
+ }
+
+ return &service.PromotedObjectPermissions{
+ DirMode: perms.DirMode,
+ FileMode: perms.FileMode,
+ }
+}
diff --git a/receivepack/receivepack.go b/receivepack/receivepack.go
index eb518935..d1e54e58 100644
--- a/receivepack/receivepack.go
+++ b/receivepack/receivepack.go
@@ -94,54 +94,3 @@ func ReceivePack(
return nil
}
-
-func translatePromotedObjectPermissions(
- perms *PromotedObjectPermissions,
-) *service.PromotedObjectPermissions {
- if perms == nil {
- return nil
- }
-
- return &service.PromotedObjectPermissions{
- DirMode: perms.DirMode,
- FileMode: perms.FileMode,
- }
-}
-
-func translateHook(hook Hook) service.Hook {
- if hook == nil {
- return nil
- }
-
- return func(ctx context.Context, req service.HookRequest) ([]service.UpdateDecision, error) {
- translatedUpdates := make([]RefUpdate, 0, len(req.Updates))
- for _, update := range req.Updates {
- translatedUpdates = append(translatedUpdates, RefUpdate{
- Name: update.Name,
- OldID: update.OldID,
- NewID: update.NewID,
- })
- }
-
- decisions, err := hook(ctx, HookRequest{
- Refs: req.Refs,
- ExistingObjects: req.ExistingObjects,
- QuarantinedObjects: req.QuarantinedObjects,
- Updates: translatedUpdates,
- PushOptions: append([]string(nil), req.PushOptions...),
- })
- if err != nil {
- return nil, err
- }
-
- out := make([]service.UpdateDecision, 0, len(decisions))
- for _, decision := range decisions {
- out = append(out, service.UpdateDecision{
- Accept: decision.Accept,
- Message: decision.Message,
- })
- }
-
- return out, nil
- }
-}
diff --git a/receivepack/translate.go b/receivepack/results.go
index d572abd3..f56fbf2f 100644
--- a/receivepack/translate.go
+++ b/receivepack/results.go
@@ -5,19 +5,6 @@ import (
"codeberg.org/lindenii/furgit/receivepack/internal/service"
)
-func translateCommands(commands []protoreceive.Command) []service.Command {
- out := make([]service.Command, 0, len(commands))
- for _, command := range commands {
- out = append(out, service.Command{
- OldID: command.OldID,
- NewID: command.NewID,
- Name: command.Name,
- })
- }
-
- return out
-}
-
func translateResult(result *service.Result) protoreceive.ReportStatusResult {
out := protoreceive.ReportStatusResult{
UnpackError: result.UnpackError,