diff options
| author | Horus3 | 2015-03-30 20:14:12 +0200 |
|---|---|---|
| committer | Horus3 | 2015-03-30 20:14:12 +0200 |
| commit | f4f5c33f9c4bc6d6f01bed5146d8ea934bafe1cf (patch) | |
| tree | 28103a042ad469c2cb6645786678c723755478da | |
| parent | 952a5ad83feb53b2a3d344ed831dce8ece066137 (diff) | |
| download | web2irc-f4f5c33f9c4bc6d6f01bed5146d8ea934bafe1cf.tar.gz | |
Add cli tool to be used with gitolite hook.
| -rw-r--r-- | gitolite-webhook/config.go | 41 | ||||
| -rw-r--r-- | gitolite-webhook/main.go | 43 | ||||
| -rw-r--r-- | gitolite-webhook/struct.go | 7 |
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 +} |
