Skip to content

Commit 0f419a7

Browse files
committed
Add logging for user operations
Signed-off-by: Alex Ellis (OpenFaaS Ltd) <alexellis2@gmail.com>
1 parent 52084a5 commit 0f419a7

File tree

2 files changed

+57
-39
lines changed

2 files changed

+57
-39
lines changed

handler/comment_handler.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,12 @@ func HandleComment(req types.IssueCommentOuter, config config.Config, derekConfi
121121
break
122122

123123
default:
124-
feedback = "Unable to work with comment: " + req.Comment.Body
124+
feedback = "No command found in comment"
125+
126+
if strings.HasPrefix(req.Comment.Body, "Derek ") || strings.HasPrefix(req.Comment.Body, "/") {
127+
feedback = fmt.Sprintf("Unable to work with command: %q", req.Comment.Body)
128+
}
129+
125130
err = nil
126131
break
127132
}

main.go

Lines changed: 51 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"encoding/json"
88
"fmt"
99
"io/ioutil"
10+
"log"
1011
"net/http"
1112
"os"
1213

@@ -68,44 +69,6 @@ func main() {
6869
func handleEvent(eventType string, bytesIn []byte, config config.Config) error {
6970

7071
switch eventType {
71-
case "release":
72-
req := github.ReleaseEvent{}
73-
74-
if err := json.Unmarshal(bytesIn, &req); err != nil {
75-
return fmt.Errorf("Cannot parse input %s", err.Error())
76-
}
77-
78-
if req.GetAction() == "created" {
79-
customer, err := auth.IsCustomer(req.Repo.Owner.GetLogin(), &http.Client{})
80-
if err != nil {
81-
return fmt.Errorf("unable to verify customer: %s/%s", req.Repo.Owner.GetLogin(), req.Repo.GetName())
82-
} else if customer == false {
83-
return fmt.Errorf("no customer found for: %s/%s", req.Repo.Owner.GetLogin(), req.Repo.GetName())
84-
}
85-
86-
var derekConfig *types.DerekRepoConfig
87-
if req.Repo.GetPrivate() {
88-
derekConfig, err = handler.GetPrivateRepoConfig(req.Repo.Owner.GetLogin(), req.Repo.GetName(), int(req.Installation.GetID()), config)
89-
if err != nil {
90-
return fmt.Errorf("unable to get private repo config: %s", err)
91-
}
92-
} else {
93-
derekConfig, err = handler.GetRepoConfig(req.Repo.Owner.GetLogin(), req.Repo.GetName())
94-
if err != nil {
95-
return fmt.Errorf("unable to get repo config: %s", err)
96-
}
97-
}
98-
99-
err = fmt.Errorf(`"release_notes" feature not enabled`)
100-
if handler.EnabledFeature(releaseNotes, derekConfig) {
101-
102-
handler := handler.NewReleaseHandler(config, int(req.Installation.GetID()))
103-
err = handler.Handle(req)
104-
}
105-
return err
106-
}
107-
break
108-
10972
case "pull_request":
11073
req := types.PullRequestOuter{}
11174
if err := json.Unmarshal(bytesIn, &req); err != nil {
@@ -119,12 +82,15 @@ func handleEvent(eventType string, bytesIn []byte, config config.Config) error {
11982
return fmt.Errorf("No customer found for: %s/%s", req.Repository.Owner.Login, req.Repository.Name)
12083
}
12184

85+
log.Printf("Owner: %s, repo: %s, action: %s", req.Repository.Owner.Login, req.Repository.Name, "pull_request")
86+
12287
var derekConfig *types.DerekRepoConfig
12388
if req.Repository.Private {
12489
derekConfig, err = handler.GetPrivateRepoConfig(req.Repository.Owner.Login, req.Repository.Name, req.Installation.ID, config)
12590
} else {
12691
derekConfig, err = handler.GetRepoConfig(req.Repository.Owner.Login, req.Repository.Name)
12792
}
93+
12894
if err != nil {
12995
return fmt.Errorf("Unable to access maintainers file at: %s/%s\nError: %s",
13096
req.Repository.Owner.Login,
@@ -136,6 +102,8 @@ func handleEvent(eventType string, bytesIn []byte, config config.Config) error {
136102
contributingURL := getContributingURL(derekConfig.ContributingURL, req.Repository.Owner.Login, req.Repository.Name)
137103

138104
if handler.EnabledFeature(dcoCheck, derekConfig) {
105+
log.Printf("Owner: %s, repo: %s, action: %s", req.Repository.Owner.Login, req.Repository.Name, "derek:dco_check")
106+
139107
handler.HandlePullRequest(req, contributingURL, config)
140108
}
141109

@@ -165,6 +133,8 @@ func handleEvent(eventType string, bytesIn []byte, config config.Config) error {
165133
return fmt.Errorf("Cannot parse input %s", err.Error())
166134
}
167135

136+
log.Printf("Owner: %s, repo: %s, action: %s", req.Repository.Owner.Login, req.Repository.Name, "issue_comment")
137+
168138
customer, err := auth.IsCustomer(req.Repository.Owner.Login, &http.Client{})
169139
if err != nil {
170140
return fmt.Errorf("Unable to verify customer: %s/%s", req.Repository.Owner.Login, req.Repository.Name)
@@ -188,10 +158,53 @@ func handleEvent(eventType string, bytesIn []byte, config config.Config) error {
188158

189159
if req.Action != deleted {
190160
if handler.PermittedUserFeature(comments, derekConfig, req.Comment.User.Login) {
161+
log.Printf("Owner: %s, repo: %s, action: %s", req.Repository.Owner.Login, req.Repository.Name, "derek:handle_comment")
162+
191163
handler.HandleComment(req, config, derekConfig)
192164
}
193165
}
194166
break
167+
168+
case "release":
169+
req := github.ReleaseEvent{}
170+
171+
if err := json.Unmarshal(bytesIn, &req); err != nil {
172+
return fmt.Errorf("Cannot parse input %s", err.Error())
173+
}
174+
175+
log.Printf("Owner: %s, repo: %s, action: %s", req.Repo.Owner.GetLogin(), req.Repo.GetName(), "release")
176+
177+
if req.GetAction() == "created" {
178+
customer, err := auth.IsCustomer(req.Repo.Owner.GetLogin(), &http.Client{})
179+
if err != nil {
180+
return fmt.Errorf("unable to verify customer: %s/%s", req.Repo.Owner.GetLogin(), req.Repo.GetName())
181+
} else if customer == false {
182+
return fmt.Errorf("no customer found for: %s/%s", req.Repo.Owner.GetLogin(), req.Repo.GetName())
183+
}
184+
185+
var derekConfig *types.DerekRepoConfig
186+
if req.Repo.GetPrivate() {
187+
derekConfig, err = handler.GetPrivateRepoConfig(req.Repo.Owner.GetLogin(), req.Repo.GetName(), int(req.Installation.GetID()), config)
188+
if err != nil {
189+
return fmt.Errorf("unable to get private repo config: %s", err)
190+
}
191+
} else {
192+
derekConfig, err = handler.GetRepoConfig(req.Repo.Owner.GetLogin(), req.Repo.GetName())
193+
if err != nil {
194+
return fmt.Errorf("unable to get repo config: %s", err)
195+
}
196+
}
197+
198+
err = fmt.Errorf(`"release_notes" feature not enabled`)
199+
if handler.EnabledFeature(releaseNotes, derekConfig) {
200+
log.Printf("Owner: %s, repo: %s, action: %s", req.Repo.Owner.GetLogin(), req.Repo.GetName(), "derek:handle_release")
201+
202+
handler := handler.NewReleaseHandler(config, int(req.Installation.GetID()))
203+
err = handler.Handle(req)
204+
}
205+
return err
206+
}
207+
break
195208
default:
196209
return fmt.Errorf("X_Github_Event want: ['pull_request', 'issue_comment'], got: " + eventType)
197210
}

0 commit comments

Comments
 (0)