summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHorus32015-03-30 20:14:12 +0200
committerHorus32015-03-30 20:14:12 +0200
commitf4f5c33f9c4bc6d6f01bed5146d8ea934bafe1cf (patch)
tree28103a042ad469c2cb6645786678c723755478da
parent952a5ad83feb53b2a3d344ed831dce8ece066137 (diff)
downloadweb2irc-f4f5c33f9c4bc6d6f01bed5146d8ea934bafe1cf.tar.gz
Add cli tool to be used with gitolite hook.
-rw-r--r--gitolite-webhook/config.go41
-rw-r--r--gitolite-webhook/main.go43
-rw-r--r--gitolite-webhook/struct.go7
3 files changed, 91 insertions, 0 deletions
diff --git a/gitolite-webhook/config.go b/gitolite-webhook/config.go
new file mode 100644
index 0000000..a094ea0
--- /dev/null
+++ b/gitolite-webhook/config.go
@@ -0,0 +1,41 @@
+package main
+
+import (
+ "log"
+ "os"
+)
+
+func checkConfig() {
+ check := os.Getenv("WEBHOOK_URL")
+ if check == "" {
+ log.Fatal("Env WEBHOOK_URL not found.")
+ }
+ check = os.Getenv("REPO_URL")
+ if check == "" {
+ log.Fatal("Env REPO_URL not found.")
+ }
+ check = os.Getenv("COMMIT_MSG")
+ if check == "" {
+ log.Fatal("Env COMMIT_MSG not found.")
+ }
+ check = os.Getenv("GL_REPO")
+ if check == "" {
+ log.Fatal("Env GL_REPO not found.")
+ }
+ check = os.Getenv("REFNAME")
+ if check == "" {
+ log.Fatal("Env REFNAME not found.")
+ }
+ check = os.Getenv("GL_USER")
+ if check == "" {
+ log.Fatal("Env GL_USER not found.")
+ }
+ check = os.Getenv("JOIN")
+ if check == "" {
+ log.Fatal("Env JOIN not found.")
+ }
+ check = os.Getenv("DATE")
+ if check == "" {
+ log.Fatal("Env DATE not found.")
+ }
+}
diff --git a/gitolite-webhook/main.go b/gitolite-webhook/main.go
new file mode 100644
index 0000000..7d0fe5e
--- /dev/null
+++ b/gitolite-webhook/main.go
@@ -0,0 +1,43 @@
+package main
+
+import (
+ "bytes"
+ "encoding/json"
+ "fmt"
+ "io/ioutil"
+ "log"
+ "net/http"
+ "os"
+)
+
+func main() {
+ checkConfig()
+
+ hook := Webhook{}
+ hook.Target = ""
+ hook.Join = os.Getenv("JOIN")
+ hook.Message = fmt.Sprintf("Update git repo '%s' to '%s' by %s. | Commit message: '%s' | Url: %s | Date: %s", os.Getenv("GL_REPO"), os.Getenv("REFNAME"), os.Getenv("GL_USER"), os.Getenv("COMMIT_MSG"), os.Getenv("REPO_URL"), os.Getenv("DATE"))
+
+ json, err := json.Marshal(hook)
+ if err != nil {
+ log.Fatal("Error encoding JSON.", err)
+ }
+ request, err := http.NewRequest("POST", os.Getenv("WEBHOOK_URL"), bytes.NewBuffer(json))
+ if err != nil {
+ log.Fatal("Error creating new http request.", os.Getenv("WEBHOOK_URL"), err)
+ }
+ request.Header.Add("Content-Type", "application/x-www-form-urlencoded")
+ request.Header.Add("User-Agent", "Gitolite webhook")
+
+ client := &http.Client{}
+ resp, err := client.Do(request)
+ if err != nil {
+ panic(err)
+ }
+ defer resp.Body.Close()
+
+ fmt.Println("Response Status:", resp.Status)
+ body, _ := ioutil.ReadAll(resp.Body)
+ fmt.Println("Response Body:", string(body))
+
+}
diff --git a/gitolite-webhook/struct.go b/gitolite-webhook/struct.go
new file mode 100644
index 0000000..6cf92f4
--- /dev/null
+++ b/gitolite-webhook/struct.go
@@ -0,0 +1,7 @@
+package main
+
+type Webhook struct {
+ Target string
+ Join string
+ Message string
+}