diff --git a/hook/hook.go b/hook/hook.go --- a/hook/hook.go +++ b/hook/hook.go @@ -36,6 +36,10 @@ Name: "internal-api", Usage: "endpoint for the internal API", Value: "http://localhost:5444", }, + &cli.StringSliceFlag{ + Name: "push-option", + Usage: "any push option from git", + }, }, Commands: []*cli.Command{ { @@ -52,6 +56,7 @@ gitDir := cmd.String("git-dir") userDid := cmd.String("user-did") userHandle := cmd.String("user-handle") endpoint := cmd.String("internal-api") + pushOptions := cmd.StringSlice("push-option") payloadReader := bufio.NewReader(os.Stdin) payload, _ := payloadReader.ReadString('\n') @@ -67,6 +72,11 @@ req.Header.Set("Content-Type", "text/plain; charset=utf-8") req.Header.Set("X-Git-Dir", gitDir) req.Header.Set("X-Git-User-Did", userDid) req.Header.Set("X-Git-User-Handle", userHandle) + if pushOptions != nil { + for _, option := range pushOptions { + req.Header.Add("X-Git-Push-Option", option) + } + } resp, err := client.Do(req) if err != nil { diff --git a/hook/setup.go b/hook/setup.go --- a/hook/setup.go +++ b/hook/setup.go @@ -133,7 +133,12 @@ } hookContent := fmt.Sprintf(`#!/usr/bin/env bash # AUTO GENERATED BY KNOT, DO NOT MODIFY -%s hook -git-dir "$GIT_DIR" -user-did "$GIT_USER_DID" -user-handle "$GIT_USER_HANDLE" -internal-api "%s" post-recieve +push_options=() +for ((i=0; i