hook: get push options and pass them #352

merged
opened by ptr.pet targeting master from ptr.pet/core: push-options
Changed files
+16 -1
hook
+10
hook/hook.go
···
Usage: "endpoint for the internal API",
Value: "http://localhost:5444",
},
+
&cli.StringSliceFlag{
+
Name: "push-option",
+
Usage: "any push option from git",
+
},
},
Commands: []*cli.Command{
{
···
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')
···
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 {
+6 -1
hook/setup.go
···
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<GIT_PUSH_OPTION_COUNT; i++)); do
+
option_var="GIT_PUSH_OPTION_$i"
+
push_options+=(-push-option "${!option_var}")
+
done
+
%s hook -git-dir "$GIT_DIR" -user-did "$GIT_USER_DID" -user-handle "$GIT_USER_HANDLE" -internal-api "%s" "${push_options[@]}" post-recieve
`, executablePath, config.internalApi)
return os.WriteFile(hookPath, []byte(hookContent), 0755)